From fed457ede50d21f4498e2a8418949b31ed7d70b8 Mon Sep 17 00:00:00 2001 From: rubo Date: Fri, 11 Oct 2024 22:09:50 +0000 Subject: [PATCH] deploy: 8ef3cf48be2d11562ad926dc4576d2ac2975bde0 --- 1.25.4/developers/building-from-source/index.html | 6 +++--- 1.25.4/developers/custom-analytic-tools/index.html | 6 +++--- 1.25.4/developers/plugins/index.html | 6 +++--- 1.25.4/faq/index.html | 6 +++--- 1.25.4/fundamentals/configuration/index.html | 6 +++--- 1.25.4/fundamentals/database/index.html | 6 +++--- 1.25.4/fundamentals/logs/index.html | 6 +++--- 1.25.4/fundamentals/performance-tuning/index.html | 6 +++--- 1.25.4/fundamentals/private-networks/index.html | 6 +++--- 1.25.4/fundamentals/pruning/index.html | 6 +++--- 1.25.4/fundamentals/security/index.html | 6 +++--- 1.25.4/fundamentals/sync/index.html | 6 +++--- 1.25.4/get-started/consensus-clients/index.html | 6 +++--- .../get-started/installing-nethermind/index.html | 6 +++--- 1.25.4/get-started/migrating-from-geth/index.html | 6 +++--- 1.25.4/get-started/system-requirements/index.html | 6 +++--- 1.25.4/index.html | 6 +++--- 1.25.4/interacting/json-rpc-ns/admin/index.html | 6 +++--- 1.25.4/interacting/json-rpc-ns/clique/index.html | 6 +++--- 1.25.4/interacting/json-rpc-ns/debug/index.html | 6 +++--- 1.25.4/interacting/json-rpc-ns/eth/index.html | 6 +++--- 1.25.4/interacting/json-rpc-ns/net/index.html | 6 +++--- 1.25.4/interacting/json-rpc-ns/parity/index.html | 6 +++--- 1.25.4/interacting/json-rpc-ns/personal/index.html | 6 +++--- 1.25.4/interacting/json-rpc-ns/proof/index.html | 6 +++--- 1.25.4/interacting/json-rpc-ns/trace/index.html | 6 +++--- 1.25.4/interacting/json-rpc-ns/txpool/index.html | 6 +++--- 1.25.4/interacting/json-rpc-ns/web3/index.html | 6 +++--- 1.25.4/interacting/json-rpc-server/index.html | 6 +++--- 1.25.4/monitoring/health-check/index.html | 6 +++--- .../monitoring/metrics/dotnet-counters/index.html | 6 +++--- .../metrics/grafana-and-prometheus/index.html | 6 +++--- 1.25.4/monitoring/metrics/index.html | 6 +++--- 1.25.4/troubleshooting/index.html | 6 +++--- 1.25.4/validators/aura/index.html | 6 +++--- 1.25.4/validators/index.html | 6 +++--- 1.26.0/developers/building-from-source/index.html | 6 +++--- 1.26.0/developers/custom-analytic-tools/index.html | 6 +++--- 1.26.0/developers/plugins/index.html | 6 +++--- 1.26.0/faq/index.html | 6 +++--- 1.26.0/fundamentals/configuration/index.html | 6 +++--- 1.26.0/fundamentals/database/index.html | 6 +++--- 1.26.0/fundamentals/logs/index.html | 6 +++--- 1.26.0/fundamentals/performance-tuning/index.html | 6 +++--- 1.26.0/fundamentals/private-networks/index.html | 6 +++--- 1.26.0/fundamentals/pruning/index.html | 6 +++--- 1.26.0/fundamentals/security/index.html | 6 +++--- 1.26.0/fundamentals/sync/index.html | 6 +++--- 1.26.0/get-started/consensus-clients/index.html | 6 +++--- .../get-started/installing-nethermind/index.html | 6 +++--- 1.26.0/get-started/migrating-from-geth/index.html | 6 +++--- 1.26.0/get-started/system-requirements/index.html | 6 +++--- 1.26.0/index.html | 6 +++--- 1.26.0/interacting/json-rpc-ns/admin/index.html | 6 +++--- 1.26.0/interacting/json-rpc-ns/clique/index.html | 6 +++--- 1.26.0/interacting/json-rpc-ns/debug/index.html | 6 +++--- 1.26.0/interacting/json-rpc-ns/eth/index.html | 6 +++--- 1.26.0/interacting/json-rpc-ns/net/index.html | 6 +++--- 1.26.0/interacting/json-rpc-ns/parity/index.html | 6 +++--- 1.26.0/interacting/json-rpc-ns/personal/index.html | 6 +++--- 1.26.0/interacting/json-rpc-ns/proof/index.html | 6 +++--- 1.26.0/interacting/json-rpc-ns/trace/index.html | 6 +++--- 1.26.0/interacting/json-rpc-ns/txpool/index.html | 6 +++--- 1.26.0/interacting/json-rpc-ns/web3/index.html | 6 +++--- 1.26.0/interacting/json-rpc-server/index.html | 6 +++--- 1.26.0/monitoring/health-check/index.html | 6 +++--- .../monitoring/metrics/dotnet-counters/index.html | 6 +++--- .../metrics/grafana-and-prometheus/index.html | 6 +++--- 1.26.0/monitoring/metrics/index.html | 6 +++--- 1.26.0/troubleshooting/index.html | 6 +++--- 1.26.0/validators/aura/index.html | 6 +++--- 1.26.0/validators/index.html | 6 +++--- 1.27.0/developers/building-from-source/index.html | 6 +++--- 1.27.0/developers/custom-analytic-tools/index.html | 6 +++--- 1.27.0/developers/plugins/index.html | 6 +++--- 1.27.0/faq/index.html | 6 +++--- 1.27.0/fundamentals/configuration/index.html | 6 +++--- 1.27.0/fundamentals/database/index.html | 6 +++--- 1.27.0/fundamentals/logs/index.html | 6 +++--- 1.27.0/fundamentals/performance-tuning/index.html | 6 +++--- 1.27.0/fundamentals/private-networks/index.html | 6 +++--- 1.27.0/fundamentals/pruning/index.html | 6 +++--- 1.27.0/fundamentals/security/index.html | 6 +++--- 1.27.0/fundamentals/sync/index.html | 6 +++--- 1.27.0/get-started/consensus-clients/index.html | 6 +++--- .../get-started/installing-nethermind/index.html | 6 +++--- 1.27.0/get-started/migrating-from-geth/index.html | 6 +++--- 1.27.0/get-started/system-requirements/index.html | 6 +++--- 1.27.0/index.html | 6 +++--- 1.27.0/interacting/json-rpc-ns/admin/index.html | 6 +++--- 1.27.0/interacting/json-rpc-ns/clique/index.html | 6 +++--- 1.27.0/interacting/json-rpc-ns/debug/index.html | 6 +++--- 1.27.0/interacting/json-rpc-ns/eth/index.html | 6 +++--- 1.27.0/interacting/json-rpc-ns/net/index.html | 6 +++--- 1.27.0/interacting/json-rpc-ns/parity/index.html | 6 +++--- 1.27.0/interacting/json-rpc-ns/personal/index.html | 6 +++--- 1.27.0/interacting/json-rpc-ns/proof/index.html | 6 +++--- 1.27.0/interacting/json-rpc-ns/trace/index.html | 6 +++--- 1.27.0/interacting/json-rpc-ns/txpool/index.html | 6 +++--- 1.27.0/interacting/json-rpc-ns/web3/index.html | 6 +++--- 1.27.0/interacting/json-rpc-server/index.html | 6 +++--- 1.27.0/monitoring/health-check/index.html | 6 +++--- .../monitoring/metrics/dotnet-counters/index.html | 6 +++--- .../metrics/grafana-and-prometheus/index.html | 6 +++--- 1.27.0/monitoring/metrics/index.html | 6 +++--- 1.27.0/troubleshooting/index.html | 6 +++--- 1.27.0/validators/aura/index.html | 6 +++--- 1.27.0/validators/index.html | 6 +++--- 1.28.0/developers/building-from-source/index.html | 6 +++--- 1.28.0/developers/custom-analytic-tools/index.html | 6 +++--- 1.28.0/developers/plugins/index.html | 6 +++--- 1.28.0/fundamentals/configuration/index.html | 6 +++--- 1.28.0/fundamentals/database/index.html | 6 +++--- 1.28.0/fundamentals/logs/index.html | 6 +++--- 1.28.0/fundamentals/performance-tuning/index.html | 6 +++--- 1.28.0/fundamentals/private-networks/index.html | 6 +++--- 1.28.0/fundamentals/pruning/index.html | 6 +++--- 1.28.0/fundamentals/security/index.html | 6 +++--- 1.28.0/fundamentals/sync/index.html | 6 +++--- 1.28.0/get-started/consensus-clients/index.html | 6 +++--- .../get-started/installing-nethermind/index.html | 6 +++--- 1.28.0/get-started/migrating-from-geth/index.html | 6 +++--- 1.28.0/get-started/system-requirements/index.html | 6 +++--- 1.28.0/index.html | 6 +++--- 1.28.0/interacting/json-rpc-ns/admin/index.html | 6 +++--- 1.28.0/interacting/json-rpc-ns/clique/index.html | 6 +++--- 1.28.0/interacting/json-rpc-ns/debug/index.html | 6 +++--- 1.28.0/interacting/json-rpc-ns/eth/index.html | 6 +++--- 1.28.0/interacting/json-rpc-ns/net/index.html | 6 +++--- 1.28.0/interacting/json-rpc-ns/parity/index.html | 6 +++--- 1.28.0/interacting/json-rpc-ns/personal/index.html | 6 +++--- 1.28.0/interacting/json-rpc-ns/proof/index.html | 6 +++--- 1.28.0/interacting/json-rpc-ns/trace/index.html | 6 +++--- 1.28.0/interacting/json-rpc-ns/txpool/index.html | 6 +++--- 1.28.0/interacting/json-rpc-ns/web3/index.html | 6 +++--- 1.28.0/interacting/json-rpc-server/index.html | 6 +++--- 1.28.0/monitoring/health-check/index.html | 6 +++--- .../monitoring/metrics/dotnet-counters/index.html | 6 +++--- .../metrics/grafana-and-prometheus/index.html | 6 +++--- 1.28.0/monitoring/metrics/index.html | 6 +++--- 1.28.0/troubleshooting/index.html | 6 +++--- 1.28.0/validators/aura/index.html | 6 +++--- 1.28.0/validators/index.html | 6 +++--- 404.html | 4 ++-- .../{0089a00e.a54903ff.js => 0089a00e.af62ab86.js} | 2 +- assets/js/012570d0.2c3065e9.js | 1 + assets/js/012570d0.4e6b3e0b.js | 1 - .../{01611581.79c627a9.js => 01611581.46463d98.js} | 2 +- .../{01fdf914.772620b6.js => 01fdf914.c7631a25.js} | 2 +- .../{03067d53.85ac9637.js => 03067d53.57a746a0.js} | 2 +- .../{043e7a23.89105b2a.js => 043e7a23.75ae3488.js} | 2 +- .../{0537931c.ac2d5ee2.js => 0537931c.48323a50.js} | 2 +- .../{06488e66.c77d0267.js => 06488e66.f5ffe17a.js} | 2 +- .../{096c865c.94f420dd.js => 096c865c.3b998d51.js} | 2 +- .../{09768f65.2a282a57.js => 09768f65.8f819633.js} | 2 +- .../{0be7507e.3908ebcf.js => 0be7507e.6d42691f.js} | 2 +- .../{1011204e.1a6d4507.js => 1011204e.7ad37bee.js} | 2 +- .../{10a5c55c.4d46528c.js => 10a5c55c.1706aa6c.js} | 2 +- .../{10b06255.75880b8a.js => 10b06255.2e03eaef.js} | 2 +- .../{129813bf.d5dddde2.js => 129813bf.a8569c9f.js} | 2 +- .../{140ee29f.34536d61.js => 140ee29f.8ec7e32d.js} | 2 +- .../{1539e79d.2e238d93.js => 1539e79d.6bde55ad.js} | 2 +- .../{16649b4c.3a22c921.js => 16649b4c.bebbbc6a.js} | 2 +- .../{181ca382.b5869571.js => 181ca382.10379fd4.js} | 2 +- .../{18c15ca9.3c054a0b.js => 18c15ca9.f116eaf2.js} | 2 +- .../{19d0da70.e3847deb.js => 19d0da70.6a0db82f.js} | 2 +- .../{1d144641.8adc4840.js => 1d144641.711002af.js} | 2 +- .../{1db1931a.1533a9c8.js => 1db1931a.d2f4c55e.js} | 2 +- .../{1f310fdc.bb56817e.js => 1f310fdc.4f16e938.js} | 2 +- .../{21146002.add686aa.js => 21146002.d1ca4729.js} | 2 +- .../{229f7cd8.0081fec1.js => 229f7cd8.a39c9c1d.js} | 2 +- .../{25875451.a4a2cb50.js => 25875451.d946e5f8.js} | 2 +- .../{26b16101.7bab1179.js => 26b16101.a45c60f1.js} | 2 +- .../{277f8a9b.16b129fb.js => 277f8a9b.a5e3e44b.js} | 2 +- .../{27cc9e29.59789ac4.js => 27cc9e29.1ee2a7c3.js} | 2 +- .../{294a21b2.48ddef2a.js => 294a21b2.529e96e5.js} | 2 +- .../{2a2ecad8.19c87ff1.js => 2a2ecad8.6edc89bd.js} | 2 +- .../{2a65532c.c1187f2f.js => 2a65532c.01178840.js} | 2 +- .../{2a7b7b7c.b590ef4a.js => 2a7b7b7c.30f6391b.js} | 2 +- .../{2aaa9637.d1504129.js => 2aaa9637.8b720a2b.js} | 2 +- .../{2ac0a2ec.4e711a7b.js => 2ac0a2ec.772ade28.js} | 2 +- .../{2b90ee7f.b9aec72a.js => 2b90ee7f.d3bd9a99.js} | 2 +- .../{2cc9fa48.e6dd19c4.js => 2cc9fa48.16906c27.js} | 2 +- .../{2d1db957.00f713d1.js => 2d1db957.1c23a34c.js} | 2 +- .../{2eaf300b.23475d07.js => 2eaf300b.bbc912d4.js} | 2 +- .../{2f0928d9.eab39528.js => 2f0928d9.712c0bf5.js} | 2 +- .../{2ffe730f.f0b33092.js => 2ffe730f.de043466.js} | 2 +- .../{303dbec2.34f6ed26.js => 303dbec2.e287bfdd.js} | 2 +- .../{314c229e.9f7bade2.js => 314c229e.3c0fc253.js} | 2 +- .../{324289f9.a4807bfb.js => 324289f9.037cdece.js} | 2 +- .../{335cd626.82fcf75b.js => 335cd626.638094f5.js} | 2 +- .../{342e0bfc.7015f152.js => 342e0bfc.b89a5c5b.js} | 2 +- .../{3683941a.7535dbc3.js => 3683941a.14415fdd.js} | 2 +- .../{376e38f7.0ce3e683.js => 376e38f7.50e43e21.js} | 2 +- .../{38294505.dd8a9f3c.js => 38294505.15f56969.js} | 2 +- .../{38506f63.1a6bd8cc.js => 38506f63.3f253462.js} | 2 +- .../{39edaf1d.fbe49815.js => 39edaf1d.136a5a6d.js} | 2 +- .../{3b7c3d25.e517aeef.js => 3b7c3d25.b750c2b7.js} | 2 +- .../{3b97ff35.a1924159.js => 3b97ff35.7a943cd4.js} | 2 +- .../{3c359b7d.f5683d6a.js => 3c359b7d.47c7d0a4.js} | 2 +- .../{3ce8a8ac.a9d7bdaf.js => 3ce8a8ac.ac81e235.js} | 2 +- .../{3e84b625.7c47bee7.js => 3e84b625.98172fca.js} | 2 +- .../{3f02cd01.03d23fc5.js => 3f02cd01.83d520b1.js} | 2 +- .../{404f0c63.259be03d.js => 404f0c63.4e4c6a74.js} | 2 +- .../{408679b9.c5afc17f.js => 408679b9.6a203cb2.js} | 2 +- .../{4444ff13.fe08f4d1.js => 4444ff13.2e01e795.js} | 2 +- .../{44d10434.d0622a3b.js => 44d10434.92a330fc.js} | 2 +- .../{45119392.8eb25709.js => 45119392.c1f3b1a4.js} | 2 +- .../{451a5ee5.b7361821.js => 451a5ee5.19ef0627.js} | 2 +- .../{451c0fba.fa6fec39.js => 451c0fba.d61d3b22.js} | 2 +- .../{46c83eb5.92797417.js => 46c83eb5.22f200b5.js} | 2 +- .../{4860735d.9ce4d410.js => 4860735d.8cf6344a.js} | 2 +- .../{4d3811ec.83c04b29.js => 4d3811ec.a2530a3c.js} | 2 +- .../{4db6a847.977b10ae.js => 4db6a847.bf76f7a6.js} | 2 +- .../{4eaf64ae.83a97063.js => 4eaf64ae.af642949.js} | 2 +- .../{4ed04c2d.9add8a9a.js => 4ed04c2d.3aa92b26.js} | 2 +- .../{5110f0ca.fda6439f.js => 5110f0ca.42428cc2.js} | 2 +- .../{531c2938.330ae8e8.js => 531c2938.c5221a1d.js} | 2 +- .../{55bf82fd.fa795399.js => 55bf82fd.25a44fd2.js} | 2 +- .../{56cfc4bc.4caf810b.js => 56cfc4bc.8d2243ed.js} | 2 +- .../{573f724f.5e8f6468.js => 573f724f.38df7453.js} | 2 +- .../{59d5f8ae.d4839294.js => 59d5f8ae.f434e633.js} | 2 +- .../{5ba94d59.2d126ce2.js => 5ba94d59.29d64b2d.js} | 2 +- .../{5dfc1b45.2edc97e9.js => 5dfc1b45.6ee2d261.js} | 2 +- .../{60778a21.c9f8685d.js => 60778a21.7a7061e1.js} | 2 +- .../{61d4b285.ce0cd1c2.js => 61d4b285.5b4bb0d2.js} | 2 +- .../{64af1a79.3cec1b6e.js => 64af1a79.ab398527.js} | 2 +- .../{64e9d9e1.ffd08445.js => 64e9d9e1.ac327491.js} | 2 +- .../{67a08dad.ec31c8aa.js => 67a08dad.83867d17.js} | 2 +- .../{67ada9d5.c69b3334.js => 67ada9d5.e2017ffb.js} | 2 +- .../{6aab6db7.246c2f09.js => 6aab6db7.5f86631d.js} | 2 +- .../{6ad729b4.c3c2d1de.js => 6ad729b4.f384ecae.js} | 2 +- .../{6dbb1c8b.ad37b333.js => 6dbb1c8b.b30968f2.js} | 2 +- .../{6e937beb.be23c8e8.js => 6e937beb.f8063ce1.js} | 2 +- .../{6edb8094.825ffc3f.js => 6edb8094.14969e3c.js} | 2 +- .../{70fbabeb.a5b7f517.js => 70fbabeb.d8447859.js} | 2 +- .../{720b26b2.52a5fa6a.js => 720b26b2.6220062e.js} | 2 +- .../{77e3cba5.3a0b805a.js => 77e3cba5.560b5f01.js} | 2 +- .../{7821a820.8311cee5.js => 7821a820.4033dafa.js} | 2 +- .../{791ecf85.086db3f4.js => 791ecf85.71c8210a.js} | 2 +- .../{793bd5df.440c94af.js => 793bd5df.c6b5a5d1.js} | 2 +- .../{794cd842.4c913dfd.js => 794cd842.16a292c5.js} | 2 +- .../{7a41f229.d174ccdd.js => 7a41f229.37ed76b3.js} | 2 +- .../{7b964f9b.35dc71f0.js => 7b964f9b.f030a29c.js} | 2 +- .../{7bdbbf02.712f2995.js => 7bdbbf02.fe1586f6.js} | 2 +- .../{7bddab45.3db5fcc0.js => 7bddab45.4fbe36de.js} | 2 +- .../{7da7c9dd.cc499ea0.js => 7da7c9dd.d5813bf0.js} | 2 +- .../{7f6fb541.5b4f5383.js => 7f6fb541.99975910.js} | 2 +- .../{89349935.5e11fb19.js => 89349935.c9b389d3.js} | 2 +- .../{8a1664e8.36fb16dd.js => 8a1664e8.4e09892d.js} | 2 +- .../{8ab4d091.abf7418b.js => 8ab4d091.f94a3fa2.js} | 2 +- .../{8b054004.9bfd906e.js => 8b054004.fbb4926b.js} | 2 +- .../{8c8ddd82.05e960f6.js => 8c8ddd82.bffb3419.js} | 2 +- .../{8cd58c6d.fcb2042d.js => 8cd58c6d.e53c4def.js} | 2 +- .../{8cdfe270.f1c0efe3.js => 8cdfe270.9bba4e1c.js} | 2 +- .../{91ddd300.e57f0a63.js => 91ddd300.180bdb2b.js} | 2 +- .../{9225ae5e.3d922bec.js => 9225ae5e.8e820564.js} | 2 +- .../{94981332.c658339d.js => 94981332.f1367739.js} | 2 +- .../{94a9fdf0.5d8dcb7d.js => 94a9fdf0.1c532876.js} | 2 +- .../{94d697b3.4237d2e7.js => 94d697b3.45c6c83d.js} | 2 +- .../{963f9300.d1a7f71a.js => 963f9300.34cf17f5.js} | 2 +- .../{99617d39.df2f7a5a.js => 99617d39.251308c0.js} | 2 +- .../{9a7ec3ac.361ed34d.js => 9a7ec3ac.fd7df42a.js} | 2 +- .../{9af4741d.19b62b6e.js => 9af4741d.3bf24006.js} | 2 +- .../{9bc320b7.eddeabb9.js => 9bc320b7.33dfd960.js} | 2 +- .../{9d9f8394.1975ef2b.js => 9d9f8394.095144f7.js} | 2 +- .../{9daa0d24.b8c72608.js => 9daa0d24.ab3040f1.js} | 2 +- .../{a0484a41.8f74ef48.js => a0484a41.dbeab880.js} | 2 +- .../{a05b08ae.425c63d3.js => a05b08ae.612e1596.js} | 2 +- .../{a0964226.8020e4f9.js => a0964226.e5542994.js} | 2 +- .../{a1b6351b.0944c807.js => a1b6351b.dc299df2.js} | 2 +- .../{a1f97203.5c391a4b.js => a1f97203.16101513.js} | 2 +- .../{a3b5b014.ee73548c.js => a3b5b014.47708ee9.js} | 2 +- .../{a3cdb4fa.78a6bd4a.js => a3cdb4fa.186e7b9b.js} | 2 +- .../{a65a4280.f07faf91.js => a65a4280.f49ee68f.js} | 2 +- .../{a87fa4c0.19ff5a2b.js => a87fa4c0.9072c17e.js} | 2 +- .../{a8d7d90d.eaf2027a.js => a8d7d90d.82e69cf6.js} | 2 +- .../{a901fba0.694fef41.js => a901fba0.07adcf69.js} | 2 +- .../{aa9207bc.dcb47796.js => aa9207bc.5c134fdf.js} | 2 +- .../{ab789c01.66375f46.js => ab789c01.7b9bec23.js} | 2 +- .../{acac5159.6c3df192.js => acac5159.fbbc83aa.js} | 2 +- .../{addc6152.95e8012d.js => addc6152.06316df7.js} | 2 +- .../{ae7cdfb0.fd4f5854.js => ae7cdfb0.736ba06e.js} | 2 +- .../{af3959cf.8f2587dc.js => af3959cf.a2f92390.js} | 2 +- .../{afb78532.6bd813ae.js => afb78532.6fa8b047.js} | 2 +- .../{b1ae986a.b6e80982.js => b1ae986a.c3320771.js} | 2 +- .../{b204c0ea.d8c32951.js => b204c0ea.81983682.js} | 2 +- .../{b3ed09d7.d77b7d84.js => b3ed09d7.e6c2519f.js} | 2 +- .../{b3ef4e5a.71d3a170.js => b3ef4e5a.eecb97db.js} | 2 +- .../{b3f256dd.d3e690b7.js => b3f256dd.f50d8992.js} | 2 +- .../{b5ab4687.5e0a593d.js => b5ab4687.e096c397.js} | 2 +- .../{b5dc23c4.be22bf73.js => b5dc23c4.24918f06.js} | 2 +- .../{b5e67d0e.66bdf246.js => b5e67d0e.929e57f3.js} | 2 +- .../{b72424ba.e5ace87a.js => b72424ba.6839802b.js} | 2 +- .../{b87be7cc.4fce1efb.js => b87be7cc.fce4ec2c.js} | 2 +- .../{b9c601eb.15ea9555.js => b9c601eb.36a580e7.js} | 2 +- .../{ba2a4595.8debbfc0.js => ba2a4595.5d880e5d.js} | 2 +- .../{bca8cef8.d28aaae5.js => bca8cef8.21bf8329.js} | 2 +- .../{bccdab75.dec8485e.js => bccdab75.63dfb541.js} | 2 +- .../{bd044685.3ddcaa31.js => bd044685.ec3d4a6b.js} | 2 +- .../{bdacd39a.c1c4620c.js => bdacd39a.90ed0673.js} | 2 +- .../{be51d2a4.e67426c0.js => be51d2a4.c85fba01.js} | 2 +- .../{bec904e0.ed7e77c3.js => bec904e0.2295ea13.js} | 2 +- .../{bf9df08f.792a628c.js => bf9df08f.29cb8f1a.js} | 2 +- .../{c03f214b.162df813.js => c03f214b.cacbed68.js} | 2 +- .../{c11efc49.8b4e372e.js => c11efc49.53d501ec.js} | 2 +- .../{c18d6c91.79fec418.js => c18d6c91.58eba8ef.js} | 2 +- .../{c36170f2.32ea1e87.js => c36170f2.85b62fde.js} | 2 +- .../{c43c9625.b342dcc8.js => c43c9625.a0fd923a.js} | 2 +- .../{c4b1c122.d2c5fccd.js => c4b1c122.813c9207.js} | 2 +- .../{c52b0357.8c8eb446.js => c52b0357.c4b9cb68.js} | 2 +- .../{c6258319.1361d70d.js => c6258319.8733b4b1.js} | 2 +- .../{c65f1e33.bbe63663.js => c65f1e33.8fa94084.js} | 2 +- assets/js/c864e161.2c7c2964.js | 1 + assets/js/c864e161.c715f75d.js | 1 - .../{ca3f5c6e.801016bb.js => ca3f5c6e.7d9535dc.js} | 2 +- .../{ce82dfd7.9dd74e51.js => ce82dfd7.6ef80fdb.js} | 2 +- .../{ceb8fbe8.9ec366ef.js => ceb8fbe8.1d4d1c16.js} | 2 +- .../{cef792a0.55ef89f5.js => cef792a0.f228a6f5.js} | 2 +- .../{d074d9ae.0199ae20.js => d074d9ae.5eedcf88.js} | 2 +- .../{d1d84bce.026c9dc9.js => d1d84bce.fbea0a14.js} | 2 +- .../{d2461378.bc5e5a5d.js => d2461378.6d91991e.js} | 2 +- .../{d2ae4d42.4e3df433.js => d2ae4d42.d2df1df7.js} | 2 +- .../{d2d2ec91.ee5b482f.js => d2d2ec91.346e96eb.js} | 2 +- .../{d33c2fd3.0e90d453.js => d33c2fd3.2978aa1e.js} | 2 +- .../{d35bfd19.04ba51c7.js => d35bfd19.ac943fbc.js} | 2 +- .../{d363997f.22af962a.js => d363997f.0afcfcd3.js} | 2 +- .../{d4222919.8f77430a.js => d4222919.c57c5c86.js} | 2 +- .../{d4b7677e.1da77e1f.js => d4b7677e.7152343a.js} | 2 +- .../{d5f38527.4eb58f4b.js => d5f38527.b3a9ef9f.js} | 2 +- .../{d63712d6.a6b9a722.js => d63712d6.f031be08.js} | 2 +- .../{d6764455.1ae35de6.js => d6764455.bfa90128.js} | 2 +- .../{d788bb18.278b2903.js => d788bb18.84e8eca8.js} | 2 +- .../{d9226b24.36115572.js => d9226b24.e4756008.js} | 2 +- .../{da066521.8f3ccf9f.js => da066521.448afd8d.js} | 2 +- .../{de0b05d1.c89b1320.js => de0b05d1.c69d37af.js} | 2 +- .../{e02b2202.033409f8.js => e02b2202.2bc2cb12.js} | 2 +- .../{e0b15704.454a645c.js => e0b15704.453016cc.js} | 2 +- .../{e3779d30.ddbe07ef.js => e3779d30.f30ee103.js} | 2 +- .../{e396bf53.7471f173.js => e396bf53.c36274ff.js} | 2 +- .../{e445b067.266bda9f.js => e445b067.bbf155be.js} | 2 +- .../{e6fa02bb.a4d967d4.js => e6fa02bb.5457db9b.js} | 2 +- .../{e75a3f40.36db8e7b.js => e75a3f40.0acadd91.js} | 2 +- .../{e8237fc5.6f005620.js => e8237fc5.859c4199.js} | 2 +- .../{e885279c.a91fcc8e.js => e885279c.856e623a.js} | 2 +- .../{ea9babff.c436b5db.js => ea9babff.7b931efa.js} | 2 +- .../{eabdc352.8c6597f7.js => eabdc352.accddaf5.js} | 2 +- .../{ecdbb4c3.4648359d.js => ecdbb4c3.1b8df3a3.js} | 2 +- .../{eceb7292.59615947.js => eceb7292.f074cde6.js} | 2 +- .../{f08d67b7.59ff3441.js => f08d67b7.3d5be142.js} | 2 +- .../{f1e820d1.26a7d548.js => f1e820d1.5cce5e2b.js} | 2 +- .../{f29622aa.47db57b1.js => f29622aa.2b189513.js} | 2 +- .../{f796df1d.4e30400b.js => f796df1d.6167f2df.js} | 2 +- .../{f7be9ca1.c4338c47.js => f7be9ca1.521c7b84.js} | 2 +- .../{f81b3c98.5657827f.js => f81b3c98.fbb8af8b.js} | 2 +- .../{fa412637.4e612e2c.js => fa412637.26b2fa69.js} | 2 +- .../{fb0274c6.0b6e73ed.js => fb0274c6.537c9dac.js} | 2 +- .../{fc855aa1.e36c44e2.js => fc855aa1.365d20e0.js} | 2 +- .../{fccad8df.39d2aab2.js => fccad8df.deb3aaea.js} | 2 +- .../{fdbfc520.5fb3c047.js => fdbfc520.84ead8b8.js} | 2 +- .../{fe0ec189.97aeff0f.js => fe0ec189.898e7337.js} | 2 +- .../{ff14b4b6.2ec9925e.js => ff14b4b6.2590fac9.js} | 2 +- .../{ff5d55e1.9090ce63.js => ff5d55e1.021e216d.js} | 2 +- assets/js/{main.cae8e54e.js => main.feef543d.js} | 4 ++-- ...js.LICENSE.txt => main.feef543d.js.LICENSE.txt} | 0 ...e~main.a0b36f38.js => runtime~main.65428a87.js} | 2 +- developers/building-from-source/index.html | 6 +++--- developers/custom-analytic-tools/index.html | 6 +++--- developers/plugins/index.html | 6 +++--- fundamentals/configuration/index.html | 6 +++--- fundamentals/database/index.html | 6 +++--- fundamentals/logs/index.html | 6 +++--- fundamentals/performance-tuning/index.html | 6 +++--- fundamentals/private-networks/index.html | 6 +++--- fundamentals/pruning/index.html | 6 +++--- fundamentals/security/index.html | 6 +++--- fundamentals/sync/index.html | 6 +++--- get-started/installing-nethermind/index.html | 6 +++--- get-started/migrating-from-geth/index.html | 6 +++--- .../running-node/consensus-clients/index.html | 6 +++--- get-started/running-node/index.html | 6 +++--- get-started/running-node/l2-networks/index.html | 6 +++--- get-started/system-requirements/index.html | 6 +++--- index.html | 6 +++--- interacting/json-rpc-ns/admin/index.html | 6 +++--- interacting/json-rpc-ns/clique/index.html | 6 +++--- interacting/json-rpc-ns/debug/index.html | 6 +++--- interacting/json-rpc-ns/eth/index.html | 6 +++--- interacting/json-rpc-ns/net/index.html | 6 +++--- interacting/json-rpc-ns/parity/index.html | 6 +++--- interacting/json-rpc-ns/personal/index.html | 6 +++--- interacting/json-rpc-ns/proof/index.html | 6 +++--- interacting/json-rpc-ns/trace/index.html | 6 +++--- interacting/json-rpc-ns/txpool/index.html | 6 +++--- interacting/json-rpc-ns/web3/index.html | 6 +++--- interacting/json-rpc-server/index.html | 6 +++--- monitoring/health-check/index.html | 6 +++--- monitoring/metrics/dotnet-counters/index.html | 14 +++++++------- .../metrics/grafana-and-prometheus/index.html | 6 +++--- monitoring/metrics/index.html | 6 +++--- next/developers/building-from-source/index.html | 6 +++--- next/developers/custom-analytic-tools/index.html | 6 +++--- next/developers/plugins/index.html | 6 +++--- next/fundamentals/configuration/index.html | 6 +++--- next/fundamentals/database/index.html | 6 +++--- next/fundamentals/logs/index.html | 6 +++--- next/fundamentals/performance-tuning/index.html | 6 +++--- next/fundamentals/private-networks/index.html | 6 +++--- next/fundamentals/pruning/index.html | 6 +++--- next/fundamentals/security/index.html | 6 +++--- next/fundamentals/sync/index.html | 6 +++--- next/get-started/installing-nethermind/index.html | 6 +++--- next/get-started/migrating-from-geth/index.html | 6 +++--- .../running-node/consensus-clients/index.html | 6 +++--- next/get-started/running-node/index.html | 6 +++--- .../running-node/l2-networks/index.html | 6 +++--- next/get-started/system-requirements/index.html | 6 +++--- next/index.html | 6 +++--- next/interacting/json-rpc-ns/admin/index.html | 6 +++--- next/interacting/json-rpc-ns/clique/index.html | 6 +++--- next/interacting/json-rpc-ns/debug/index.html | 6 +++--- next/interacting/json-rpc-ns/eth/index.html | 6 +++--- next/interacting/json-rpc-ns/net/index.html | 6 +++--- next/interacting/json-rpc-ns/parity/index.html | 6 +++--- next/interacting/json-rpc-ns/personal/index.html | 6 +++--- next/interacting/json-rpc-ns/proof/index.html | 6 +++--- next/interacting/json-rpc-ns/trace/index.html | 6 +++--- next/interacting/json-rpc-ns/txpool/index.html | 6 +++--- next/interacting/json-rpc-ns/web3/index.html | 6 +++--- next/interacting/json-rpc-server/index.html | 6 +++--- next/monitoring/health-check/index.html | 6 +++--- next/monitoring/metrics/dotnet-counters/index.html | 14 +++++++------- .../metrics/grafana-and-prometheus/index.html | 6 +++--- next/monitoring/metrics/index.html | 6 +++--- next/troubleshooting/index.html | 6 +++--- next/validators/aura/index.html | 6 +++--- next/validators/index.html | 6 +++--- search/index.html | 4 ++-- troubleshooting/index.html | 6 +++--- validators/aura/index.html | 6 +++--- validators/index.html | 6 +++--- 441 files changed, 883 insertions(+), 883 deletions(-) rename assets/js/{0089a00e.a54903ff.js => 0089a00e.af62ab86.js} (97%) create mode 100644 assets/js/012570d0.2c3065e9.js delete mode 100644 assets/js/012570d0.4e6b3e0b.js rename assets/js/{01611581.79c627a9.js => 01611581.46463d98.js} (99%) rename assets/js/{01fdf914.772620b6.js => 01fdf914.c7631a25.js} (98%) rename assets/js/{03067d53.85ac9637.js => 03067d53.57a746a0.js} (99%) rename assets/js/{043e7a23.89105b2a.js => 043e7a23.75ae3488.js} (98%) rename assets/js/{0537931c.ac2d5ee2.js => 0537931c.48323a50.js} (99%) rename assets/js/{06488e66.c77d0267.js => 06488e66.f5ffe17a.js} (99%) rename assets/js/{096c865c.94f420dd.js => 096c865c.3b998d51.js} (99%) rename assets/js/{09768f65.2a282a57.js => 09768f65.8f819633.js} (99%) rename assets/js/{0be7507e.3908ebcf.js => 0be7507e.6d42691f.js} (99%) rename assets/js/{1011204e.1a6d4507.js => 1011204e.7ad37bee.js} (99%) rename assets/js/{10a5c55c.4d46528c.js => 10a5c55c.1706aa6c.js} (99%) rename assets/js/{10b06255.75880b8a.js => 10b06255.2e03eaef.js} (99%) rename assets/js/{129813bf.d5dddde2.js => 129813bf.a8569c9f.js} (99%) rename assets/js/{140ee29f.34536d61.js => 140ee29f.8ec7e32d.js} (99%) rename assets/js/{1539e79d.2e238d93.js => 1539e79d.6bde55ad.js} (99%) rename assets/js/{16649b4c.3a22c921.js => 16649b4c.bebbbc6a.js} (99%) rename assets/js/{181ca382.b5869571.js => 181ca382.10379fd4.js} (99%) rename assets/js/{18c15ca9.3c054a0b.js => 18c15ca9.f116eaf2.js} (99%) rename assets/js/{19d0da70.e3847deb.js => 19d0da70.6a0db82f.js} (99%) rename assets/js/{1d144641.8adc4840.js => 1d144641.711002af.js} (99%) rename assets/js/{1db1931a.1533a9c8.js => 1db1931a.d2f4c55e.js} (99%) rename assets/js/{1f310fdc.bb56817e.js => 1f310fdc.4f16e938.js} (99%) rename assets/js/{21146002.add686aa.js => 21146002.d1ca4729.js} (99%) rename assets/js/{229f7cd8.0081fec1.js => 229f7cd8.a39c9c1d.js} (99%) rename assets/js/{25875451.a4a2cb50.js => 25875451.d946e5f8.js} (99%) rename assets/js/{26b16101.7bab1179.js => 26b16101.a45c60f1.js} (99%) rename assets/js/{277f8a9b.16b129fb.js => 277f8a9b.a5e3e44b.js} (99%) rename assets/js/{27cc9e29.59789ac4.js => 27cc9e29.1ee2a7c3.js} (99%) rename assets/js/{294a21b2.48ddef2a.js => 294a21b2.529e96e5.js} (99%) rename assets/js/{2a2ecad8.19c87ff1.js => 2a2ecad8.6edc89bd.js} (99%) rename assets/js/{2a65532c.c1187f2f.js => 2a65532c.01178840.js} (99%) rename assets/js/{2a7b7b7c.b590ef4a.js => 2a7b7b7c.30f6391b.js} (99%) rename assets/js/{2aaa9637.d1504129.js => 2aaa9637.8b720a2b.js} (99%) rename assets/js/{2ac0a2ec.4e711a7b.js => 2ac0a2ec.772ade28.js} (99%) rename assets/js/{2b90ee7f.b9aec72a.js => 2b90ee7f.d3bd9a99.js} (99%) rename assets/js/{2cc9fa48.e6dd19c4.js => 2cc9fa48.16906c27.js} (98%) rename assets/js/{2d1db957.00f713d1.js => 2d1db957.1c23a34c.js} (99%) rename assets/js/{2eaf300b.23475d07.js => 2eaf300b.bbc912d4.js} (99%) rename assets/js/{2f0928d9.eab39528.js => 2f0928d9.712c0bf5.js} (99%) rename assets/js/{2ffe730f.f0b33092.js => 2ffe730f.de043466.js} (98%) rename assets/js/{303dbec2.34f6ed26.js => 303dbec2.e287bfdd.js} (99%) rename assets/js/{314c229e.9f7bade2.js => 314c229e.3c0fc253.js} (99%) rename assets/js/{324289f9.a4807bfb.js => 324289f9.037cdece.js} (99%) rename assets/js/{335cd626.82fcf75b.js => 335cd626.638094f5.js} (99%) rename assets/js/{342e0bfc.7015f152.js => 342e0bfc.b89a5c5b.js} (99%) rename assets/js/{3683941a.7535dbc3.js => 3683941a.14415fdd.js} (99%) rename assets/js/{376e38f7.0ce3e683.js => 376e38f7.50e43e21.js} (99%) rename assets/js/{38294505.dd8a9f3c.js => 38294505.15f56969.js} (99%) rename assets/js/{38506f63.1a6bd8cc.js => 38506f63.3f253462.js} (98%) rename assets/js/{39edaf1d.fbe49815.js => 39edaf1d.136a5a6d.js} (99%) rename assets/js/{3b7c3d25.e517aeef.js => 3b7c3d25.b750c2b7.js} (98%) rename assets/js/{3b97ff35.a1924159.js => 3b97ff35.7a943cd4.js} (98%) rename assets/js/{3c359b7d.f5683d6a.js => 3c359b7d.47c7d0a4.js} (99%) rename assets/js/{3ce8a8ac.a9d7bdaf.js => 3ce8a8ac.ac81e235.js} (99%) rename assets/js/{3e84b625.7c47bee7.js => 3e84b625.98172fca.js} (99%) rename assets/js/{3f02cd01.03d23fc5.js => 3f02cd01.83d520b1.js} (99%) rename assets/js/{404f0c63.259be03d.js => 404f0c63.4e4c6a74.js} (99%) rename assets/js/{408679b9.c5afc17f.js => 408679b9.6a203cb2.js} (99%) rename assets/js/{4444ff13.fe08f4d1.js => 4444ff13.2e01e795.js} (99%) rename assets/js/{44d10434.d0622a3b.js => 44d10434.92a330fc.js} (99%) rename assets/js/{45119392.8eb25709.js => 45119392.c1f3b1a4.js} (99%) rename assets/js/{451a5ee5.b7361821.js => 451a5ee5.19ef0627.js} (99%) rename assets/js/{451c0fba.fa6fec39.js => 451c0fba.d61d3b22.js} (99%) rename assets/js/{46c83eb5.92797417.js => 46c83eb5.22f200b5.js} (99%) rename assets/js/{4860735d.9ce4d410.js => 4860735d.8cf6344a.js} (99%) rename assets/js/{4d3811ec.83c04b29.js => 4d3811ec.a2530a3c.js} (99%) rename assets/js/{4db6a847.977b10ae.js => 4db6a847.bf76f7a6.js} (98%) rename assets/js/{4eaf64ae.83a97063.js => 4eaf64ae.af642949.js} (99%) rename assets/js/{4ed04c2d.9add8a9a.js => 4ed04c2d.3aa92b26.js} (99%) rename assets/js/{5110f0ca.fda6439f.js => 5110f0ca.42428cc2.js} (97%) rename assets/js/{531c2938.330ae8e8.js => 531c2938.c5221a1d.js} (99%) rename assets/js/{55bf82fd.fa795399.js => 55bf82fd.25a44fd2.js} (99%) rename assets/js/{56cfc4bc.4caf810b.js => 56cfc4bc.8d2243ed.js} (99%) rename assets/js/{573f724f.5e8f6468.js => 573f724f.38df7453.js} (99%) rename assets/js/{59d5f8ae.d4839294.js => 59d5f8ae.f434e633.js} (99%) rename assets/js/{5ba94d59.2d126ce2.js => 5ba94d59.29d64b2d.js} (98%) rename assets/js/{5dfc1b45.2edc97e9.js => 5dfc1b45.6ee2d261.js} (99%) rename assets/js/{60778a21.c9f8685d.js => 60778a21.7a7061e1.js} (99%) rename assets/js/{61d4b285.ce0cd1c2.js => 61d4b285.5b4bb0d2.js} (99%) rename assets/js/{64af1a79.3cec1b6e.js => 64af1a79.ab398527.js} (99%) rename assets/js/{64e9d9e1.ffd08445.js => 64e9d9e1.ac327491.js} (99%) rename assets/js/{67a08dad.ec31c8aa.js => 67a08dad.83867d17.js} (99%) rename assets/js/{67ada9d5.c69b3334.js => 67ada9d5.e2017ffb.js} (99%) rename assets/js/{6aab6db7.246c2f09.js => 6aab6db7.5f86631d.js} (99%) rename assets/js/{6ad729b4.c3c2d1de.js => 6ad729b4.f384ecae.js} (99%) rename assets/js/{6dbb1c8b.ad37b333.js => 6dbb1c8b.b30968f2.js} (99%) rename assets/js/{6e937beb.be23c8e8.js => 6e937beb.f8063ce1.js} (99%) rename assets/js/{6edb8094.825ffc3f.js => 6edb8094.14969e3c.js} (99%) rename assets/js/{70fbabeb.a5b7f517.js => 70fbabeb.d8447859.js} (99%) rename assets/js/{720b26b2.52a5fa6a.js => 720b26b2.6220062e.js} (99%) rename assets/js/{77e3cba5.3a0b805a.js => 77e3cba5.560b5f01.js} (99%) rename assets/js/{7821a820.8311cee5.js => 7821a820.4033dafa.js} (99%) rename assets/js/{791ecf85.086db3f4.js => 791ecf85.71c8210a.js} (99%) rename assets/js/{793bd5df.440c94af.js => 793bd5df.c6b5a5d1.js} (98%) rename assets/js/{794cd842.4c913dfd.js => 794cd842.16a292c5.js} (99%) rename assets/js/{7a41f229.d174ccdd.js => 7a41f229.37ed76b3.js} (99%) rename assets/js/{7b964f9b.35dc71f0.js => 7b964f9b.f030a29c.js} (99%) rename assets/js/{7bdbbf02.712f2995.js => 7bdbbf02.fe1586f6.js} (99%) rename assets/js/{7bddab45.3db5fcc0.js => 7bddab45.4fbe36de.js} (99%) rename assets/js/{7da7c9dd.cc499ea0.js => 7da7c9dd.d5813bf0.js} (99%) rename assets/js/{7f6fb541.5b4f5383.js => 7f6fb541.99975910.js} (99%) rename assets/js/{89349935.5e11fb19.js => 89349935.c9b389d3.js} (99%) rename assets/js/{8a1664e8.36fb16dd.js => 8a1664e8.4e09892d.js} (99%) rename assets/js/{8ab4d091.abf7418b.js => 8ab4d091.f94a3fa2.js} (99%) rename assets/js/{8b054004.9bfd906e.js => 8b054004.fbb4926b.js} (99%) rename assets/js/{8c8ddd82.05e960f6.js => 8c8ddd82.bffb3419.js} (99%) rename assets/js/{8cd58c6d.fcb2042d.js => 8cd58c6d.e53c4def.js} (99%) rename assets/js/{8cdfe270.f1c0efe3.js => 8cdfe270.9bba4e1c.js} (99%) rename assets/js/{91ddd300.e57f0a63.js => 91ddd300.180bdb2b.js} (99%) rename assets/js/{9225ae5e.3d922bec.js => 9225ae5e.8e820564.js} (99%) rename assets/js/{94981332.c658339d.js => 94981332.f1367739.js} (99%) rename assets/js/{94a9fdf0.5d8dcb7d.js => 94a9fdf0.1c532876.js} (99%) rename assets/js/{94d697b3.4237d2e7.js => 94d697b3.45c6c83d.js} (99%) rename assets/js/{963f9300.d1a7f71a.js => 963f9300.34cf17f5.js} (99%) rename assets/js/{99617d39.df2f7a5a.js => 99617d39.251308c0.js} (99%) rename assets/js/{9a7ec3ac.361ed34d.js => 9a7ec3ac.fd7df42a.js} (99%) rename assets/js/{9af4741d.19b62b6e.js => 9af4741d.3bf24006.js} (99%) rename assets/js/{9bc320b7.eddeabb9.js => 9bc320b7.33dfd960.js} (99%) rename assets/js/{9d9f8394.1975ef2b.js => 9d9f8394.095144f7.js} (99%) rename assets/js/{9daa0d24.b8c72608.js => 9daa0d24.ab3040f1.js} (99%) rename assets/js/{a0484a41.8f74ef48.js => a0484a41.dbeab880.js} (99%) rename assets/js/{a05b08ae.425c63d3.js => a05b08ae.612e1596.js} (99%) rename assets/js/{a0964226.8020e4f9.js => a0964226.e5542994.js} (99%) rename assets/js/{a1b6351b.0944c807.js => a1b6351b.dc299df2.js} (99%) rename assets/js/{a1f97203.5c391a4b.js => a1f97203.16101513.js} (99%) rename assets/js/{a3b5b014.ee73548c.js => a3b5b014.47708ee9.js} (99%) rename assets/js/{a3cdb4fa.78a6bd4a.js => a3cdb4fa.186e7b9b.js} (99%) rename assets/js/{a65a4280.f07faf91.js => a65a4280.f49ee68f.js} (99%) rename assets/js/{a87fa4c0.19ff5a2b.js => a87fa4c0.9072c17e.js} (99%) rename assets/js/{a8d7d90d.eaf2027a.js => a8d7d90d.82e69cf6.js} (99%) rename assets/js/{a901fba0.694fef41.js => a901fba0.07adcf69.js} (98%) rename assets/js/{aa9207bc.dcb47796.js => aa9207bc.5c134fdf.js} (98%) rename assets/js/{ab789c01.66375f46.js => ab789c01.7b9bec23.js} (99%) rename assets/js/{acac5159.6c3df192.js => acac5159.fbbc83aa.js} (99%) rename assets/js/{addc6152.95e8012d.js => addc6152.06316df7.js} (99%) rename assets/js/{ae7cdfb0.fd4f5854.js => ae7cdfb0.736ba06e.js} (99%) rename assets/js/{af3959cf.8f2587dc.js => af3959cf.a2f92390.js} (99%) rename assets/js/{afb78532.6bd813ae.js => afb78532.6fa8b047.js} (99%) rename assets/js/{b1ae986a.b6e80982.js => b1ae986a.c3320771.js} (99%) rename assets/js/{b204c0ea.d8c32951.js => b204c0ea.81983682.js} (98%) rename assets/js/{b3ed09d7.d77b7d84.js => b3ed09d7.e6c2519f.js} (98%) rename assets/js/{b3ef4e5a.71d3a170.js => b3ef4e5a.eecb97db.js} (99%) rename assets/js/{b3f256dd.d3e690b7.js => b3f256dd.f50d8992.js} (99%) rename assets/js/{b5ab4687.5e0a593d.js => b5ab4687.e096c397.js} (99%) rename assets/js/{b5dc23c4.be22bf73.js => b5dc23c4.24918f06.js} (99%) rename assets/js/{b5e67d0e.66bdf246.js => b5e67d0e.929e57f3.js} (99%) rename assets/js/{b72424ba.e5ace87a.js => b72424ba.6839802b.js} (99%) rename assets/js/{b87be7cc.4fce1efb.js => b87be7cc.fce4ec2c.js} (99%) rename assets/js/{b9c601eb.15ea9555.js => b9c601eb.36a580e7.js} (99%) rename assets/js/{ba2a4595.8debbfc0.js => ba2a4595.5d880e5d.js} (99%) rename assets/js/{bca8cef8.d28aaae5.js => bca8cef8.21bf8329.js} (98%) rename assets/js/{bccdab75.dec8485e.js => bccdab75.63dfb541.js} (97%) rename assets/js/{bd044685.3ddcaa31.js => bd044685.ec3d4a6b.js} (99%) rename assets/js/{bdacd39a.c1c4620c.js => bdacd39a.90ed0673.js} (98%) rename assets/js/{be51d2a4.e67426c0.js => be51d2a4.c85fba01.js} (98%) rename assets/js/{bec904e0.ed7e77c3.js => bec904e0.2295ea13.js} (99%) rename assets/js/{bf9df08f.792a628c.js => bf9df08f.29cb8f1a.js} (99%) rename assets/js/{c03f214b.162df813.js => c03f214b.cacbed68.js} (99%) rename assets/js/{c11efc49.8b4e372e.js => c11efc49.53d501ec.js} (98%) rename assets/js/{c18d6c91.79fec418.js => c18d6c91.58eba8ef.js} (99%) rename assets/js/{c36170f2.32ea1e87.js => c36170f2.85b62fde.js} (99%) rename assets/js/{c43c9625.b342dcc8.js => c43c9625.a0fd923a.js} (99%) rename assets/js/{c4b1c122.d2c5fccd.js => c4b1c122.813c9207.js} (99%) rename assets/js/{c52b0357.8c8eb446.js => c52b0357.c4b9cb68.js} (99%) rename assets/js/{c6258319.1361d70d.js => c6258319.8733b4b1.js} (99%) rename assets/js/{c65f1e33.bbe63663.js => c65f1e33.8fa94084.js} (99%) create mode 100644 assets/js/c864e161.2c7c2964.js delete mode 100644 assets/js/c864e161.c715f75d.js rename assets/js/{ca3f5c6e.801016bb.js => ca3f5c6e.7d9535dc.js} (99%) rename assets/js/{ce82dfd7.9dd74e51.js => ce82dfd7.6ef80fdb.js} (99%) rename assets/js/{ceb8fbe8.9ec366ef.js => ceb8fbe8.1d4d1c16.js} (99%) rename assets/js/{cef792a0.55ef89f5.js => cef792a0.f228a6f5.js} (99%) rename assets/js/{d074d9ae.0199ae20.js => d074d9ae.5eedcf88.js} (98%) rename assets/js/{d1d84bce.026c9dc9.js => d1d84bce.fbea0a14.js} (98%) rename assets/js/{d2461378.bc5e5a5d.js => d2461378.6d91991e.js} (99%) rename assets/js/{d2ae4d42.4e3df433.js => d2ae4d42.d2df1df7.js} (99%) rename assets/js/{d2d2ec91.ee5b482f.js => d2d2ec91.346e96eb.js} (99%) rename assets/js/{d33c2fd3.0e90d453.js => d33c2fd3.2978aa1e.js} (99%) rename assets/js/{d35bfd19.04ba51c7.js => d35bfd19.ac943fbc.js} (99%) rename assets/js/{d363997f.22af962a.js => d363997f.0afcfcd3.js} (98%) rename assets/js/{d4222919.8f77430a.js => d4222919.c57c5c86.js} (99%) rename assets/js/{d4b7677e.1da77e1f.js => d4b7677e.7152343a.js} (99%) rename assets/js/{d5f38527.4eb58f4b.js => d5f38527.b3a9ef9f.js} (97%) rename assets/js/{d63712d6.a6b9a722.js => d63712d6.f031be08.js} (99%) rename assets/js/{d6764455.1ae35de6.js => d6764455.bfa90128.js} (99%) rename assets/js/{d788bb18.278b2903.js => d788bb18.84e8eca8.js} (99%) rename assets/js/{d9226b24.36115572.js => d9226b24.e4756008.js} (99%) rename assets/js/{da066521.8f3ccf9f.js => da066521.448afd8d.js} (99%) rename assets/js/{de0b05d1.c89b1320.js => de0b05d1.c69d37af.js} (98%) rename assets/js/{e02b2202.033409f8.js => e02b2202.2bc2cb12.js} (99%) rename assets/js/{e0b15704.454a645c.js => e0b15704.453016cc.js} (99%) rename assets/js/{e3779d30.ddbe07ef.js => e3779d30.f30ee103.js} (99%) rename assets/js/{e396bf53.7471f173.js => e396bf53.c36274ff.js} (99%) rename assets/js/{e445b067.266bda9f.js => e445b067.bbf155be.js} (99%) rename assets/js/{e6fa02bb.a4d967d4.js => e6fa02bb.5457db9b.js} (99%) rename assets/js/{e75a3f40.36db8e7b.js => e75a3f40.0acadd91.js} (97%) rename assets/js/{e8237fc5.6f005620.js => e8237fc5.859c4199.js} (98%) rename assets/js/{e885279c.a91fcc8e.js => e885279c.856e623a.js} (99%) rename assets/js/{ea9babff.c436b5db.js => ea9babff.7b931efa.js} (99%) rename assets/js/{eabdc352.8c6597f7.js => eabdc352.accddaf5.js} (99%) rename assets/js/{ecdbb4c3.4648359d.js => ecdbb4c3.1b8df3a3.js} (99%) rename assets/js/{eceb7292.59615947.js => eceb7292.f074cde6.js} (99%) rename assets/js/{f08d67b7.59ff3441.js => f08d67b7.3d5be142.js} (99%) rename assets/js/{f1e820d1.26a7d548.js => f1e820d1.5cce5e2b.js} (99%) rename assets/js/{f29622aa.47db57b1.js => f29622aa.2b189513.js} (98%) rename assets/js/{f796df1d.4e30400b.js => f796df1d.6167f2df.js} (99%) rename assets/js/{f7be9ca1.c4338c47.js => f7be9ca1.521c7b84.js} (99%) rename assets/js/{f81b3c98.5657827f.js => f81b3c98.fbb8af8b.js} (99%) rename assets/js/{fa412637.4e612e2c.js => fa412637.26b2fa69.js} (99%) rename assets/js/{fb0274c6.0b6e73ed.js => fb0274c6.537c9dac.js} (99%) rename assets/js/{fc855aa1.e36c44e2.js => fc855aa1.365d20e0.js} (99%) rename assets/js/{fccad8df.39d2aab2.js => fccad8df.deb3aaea.js} (97%) rename assets/js/{fdbfc520.5fb3c047.js => fdbfc520.84ead8b8.js} (99%) rename assets/js/{fe0ec189.97aeff0f.js => fe0ec189.898e7337.js} (99%) rename assets/js/{ff14b4b6.2ec9925e.js => ff14b4b6.2590fac9.js} (99%) rename assets/js/{ff5d55e1.9090ce63.js => ff5d55e1.021e216d.js} (99%) rename assets/js/{main.cae8e54e.js => main.feef543d.js} (95%) rename assets/js/{main.cae8e54e.js.LICENSE.txt => main.feef543d.js.LICENSE.txt} (100%) rename assets/js/{runtime~main.a0b36f38.js => runtime~main.65428a87.js} (74%) diff --git a/1.25.4/developers/building-from-source/index.html b/1.25.4/developers/building-from-source/index.html index f29f6805f..7664a0e56 100644 --- a/1.25.4/developers/building-from-source/index.html +++ b/1.25.4/developers/building-from-source/index.html @@ -8,8 +8,8 @@ - - + +
Skip to main content
Version: 1.25.4

Building from source

The Nethermind's source code can be obtained from our repository on @@ -44,6 +44,6 @@

Bulding

To build Nethermind Docker image, run the following command from the project's root directory:

docker build -t nethermind .

For more info about running Docker containers, -see Installing Nethermind.

+see Installing Nethermind.

\ No newline at end of file diff --git a/1.25.4/developers/custom-analytic-tools/index.html b/1.25.4/developers/custom-analytic-tools/index.html index 33a440eca..a12fd9186 100644 --- a/1.25.4/developers/custom-analytic-tools/index.html +++ b/1.25.4/developers/custom-analytic-tools/index.html @@ -8,8 +8,8 @@ - - + +
Skip to main content
Version: 1.25.4

Custom analytic tools

warning

This article is outdated and requires a revision.

@@ -25,6 +25,6 @@ branches if you wish so:

    public class RewardsVerifier : IBlockTreeVisitor
{
private ILogger _logger;
public bool PreventsAcceptingNewBlocks => true;
public long StartLevelInclusive => 0;
public long EndLevelExclusive => 10618000;

private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");
private UInt256 _uncles;
private UInt256 _blockRewards;

public RewardsVerifier(ILogManager logManager)
{
_logger = logManager.GetClassLogger();
}

private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);

public Task<BlockVisitOutcome> VisitBlock(Block block, CancellationToken cancellationToken)
{
BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);
for (int i = 0; i < rewards.Length; i++)
{
if (rewards[i].RewardType == BlockRewardType.Uncle)
{
_uncles += rewards[i].Value;
}
else
{
_blockRewards += rewards[i].Value;
}
}

_logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");
return Task.FromResult(BlockVisitOutcome.None);
}

public Task<LevelVisitOutcome> VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)
=> Task.FromResult(LevelVisitOutcome.None);

public Task<bool> VisitMissing(Keccak hash, CancellationToken cancellationToken)
=> Task.FromResult(true);

public Task<bool> VisitHeader(BlockHeader header, CancellationToken cancellationToken)
=> Task.FromResult(true);

public Task<LevelVisitOutcome> VisitLevelEnd(CancellationToken cancellationToken)
=> Task.FromResult(LevelVisitOutcome.None);
}

And here you will find an example of a tree visitor that sums up all the account balances:

-
    public class SupplyVerifier : ITreeVisitor
{
private readonly ILogger _logger;
private UInt256 _balance = UInt256.Zero;
private int _accountsVisited;

public SupplyVerifier(ILogger logger)
{
_logger = logger;
}

public bool ShouldVisit(Keccak nextNode) { return true; }

public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }

public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }

public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }

public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }

public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
{
if (trieVisitContext.IsStorage)
{
return;
}

AccountDecoder accountDecoder = new AccountDecoder();
Account account = accountDecoder.Decode(node.Value.AsRlpStream());
_balance += account.Balance;
_accountsVisited++;

_logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");
}

public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }
}
+
    public class SupplyVerifier : ITreeVisitor
{
private readonly ILogger _logger;
private UInt256 _balance = UInt256.Zero;
private int _accountsVisited;

public SupplyVerifier(ILogger logger)
{
_logger = logger;
}

public bool ShouldVisit(Keccak nextNode) { return true; }

public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }

public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }

public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }

public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }

public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
{
if (trieVisitContext.IsStorage)
{
return;
}

AccountDecoder accountDecoder = new AccountDecoder();
Account account = accountDecoder.Decode(node.Value.AsRlpStream());
_balance += account.Balance;
_accountsVisited++;

_logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");
}

public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }
}
\ No newline at end of file diff --git a/1.25.4/developers/plugins/index.html b/1.25.4/developers/plugins/index.html index dcf608d83..086aebeb3 100644 --- a/1.25.4/developers/plugins/index.html +++ b/1.25.4/developers/plugins/index.html @@ -8,8 +8,8 @@ - - + +
Skip to main content
Version: 1.25.4

Plugins

warning

This article is outdated and requires a revision.

@@ -32,6 +32,6 @@

Config plugin example:

public class AnalyticsConfig : IAnalyticsConfig
{
public bool PluginsEnabled { get; set; }
public bool StreamTransactions { get; set; }
public bool StreamBlocks { get; set; }
public bool LogPublishedData { get; set; }
}

State Tree Visitor example:

-
public class SupplyVerifier : ITreeVisitor
{
private readonly ILogger _logger;
private HashSet<Keccak> _ignoreThisOne = new HashSet<Keccak>();
private int _accountsVisited;
private int _nodesVisited;

public SupplyVerifier(ILogger logger)
{
_logger = logger;
}

public UInt256 Balance { get; set; } = UInt256.Zero;

public bool ShouldVisit(Keccak nextNode)
{
if (_ignoreThisOne.Count > 16)
{
_logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");
}

if (_ignoreThisOne.Contains(nextNode))
{
_ignoreThisOne.Remove(nextNode);
return false;
}

return true;
}

public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)
{
}

public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)
{
_logger.Warn($"Missing node {nodeHash}");
}

public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)
{
_logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
_nodesVisited++;

if (trieVisitContext.IsStorage)
{
for (int i = 0; i < 16; i++)
{
Keccak childHash = node.GetChildHash(i);
if (childHash != null)
{
_ignoreThisOne.Add(childHash);
}
}
}
}

public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)
{
_nodesVisited++;
if (trieVisitContext.IsStorage)
{
_ignoreThisOne.Add(node.GetChildHash(0));
}
}

public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
{
_nodesVisited++;

if (trieVisitContext.IsStorage)
{
return;
}

AccountDecoder accountDecoder = new AccountDecoder();
Account account = accountDecoder.Decode(node.Value.AsRlpStream());
Balance += account.Balance;
_accountsVisited++;

_logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
}

public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)
{
_nodesVisited++;
}
}
+
public class SupplyVerifier : ITreeVisitor
{
private readonly ILogger _logger;
private HashSet<Keccak> _ignoreThisOne = new HashSet<Keccak>();
private int _accountsVisited;
private int _nodesVisited;

public SupplyVerifier(ILogger logger)
{
_logger = logger;
}

public UInt256 Balance { get; set; } = UInt256.Zero;

public bool ShouldVisit(Keccak nextNode)
{
if (_ignoreThisOne.Count > 16)
{
_logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");
}

if (_ignoreThisOne.Contains(nextNode))
{
_ignoreThisOne.Remove(nextNode);
return false;
}

return true;
}

public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)
{
}

public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)
{
_logger.Warn($"Missing node {nodeHash}");
}

public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)
{
_logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
_nodesVisited++;

if (trieVisitContext.IsStorage)
{
for (int i = 0; i < 16; i++)
{
Keccak childHash = node.GetChildHash(i);
if (childHash != null)
{
_ignoreThisOne.Add(childHash);
}
}
}
}

public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)
{
_nodesVisited++;
if (trieVisitContext.IsStorage)
{
_ignoreThisOne.Add(node.GetChildHash(0));
}
}

public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
{
_nodesVisited++;

if (trieVisitContext.IsStorage)
{
return;
}

AccountDecoder accountDecoder = new AccountDecoder();
Account account = accountDecoder.Decode(node.Value.AsRlpStream());
Balance += account.Balance;
_accountsVisited++;

_logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
}

public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)
{
_nodesVisited++;
}
}
\ No newline at end of file diff --git a/1.25.4/faq/index.html b/1.25.4/faq/index.html index 5d7f8b1d9..ccd51add4 100644 --- a/1.25.4/faq/index.html +++ b/1.25.4/faq/index.html @@ -8,8 +8,8 @@ - - + +
Skip to main content
+--JsonRpc.EnginePort 8552 --JsonRpc.Port 8546 --Network.P2PPort 30304 --Network.DiscoveryPort 30304

\ No newline at end of file diff --git a/1.25.4/fundamentals/configuration/index.html b/1.25.4/fundamentals/configuration/index.html index 88dfcff3e..70c69f33e 100644 --- a/1.25.4/fundamentals/configuration/index.html +++ b/1.25.4/fundamentals/configuration/index.html @@ -8,8 +8,8 @@ - - + +
Skip to main content
Version: 1.25.4

Configuration

Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:

@@ -1152,6 +1152,6 @@

Enviro
NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}

For instance, the environment variable equivalent of the command line --JsonRpc.JwtSecretFile option is NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE. For the list of configuration namespaces and their options, see Options by namespaces.

Configuration file

-

The configuration file is a JSON file with .cfg extension. The bundled configuration files are located in the configs directory and named after the network they are used for. For instance, see the Mainnet configuration file mainnet.cfg.

+

The configuration file is a JSON file with .cfg extension. The bundled configuration files are located in the configs directory and named after the network they are used for. For instance, see the Mainnet configuration file mainnet.cfg.

\ No newline at end of file diff --git a/1.25.4/fundamentals/database/index.html b/1.25.4/fundamentals/database/index.html index 3e50e733d..63d3be023 100644 --- a/1.25.4/fundamentals/database/index.html +++ b/1.25.4/fundamentals/database/index.html @@ -8,8 +8,8 @@ - - + +
Skip to main content
Version: 1.25.4

Database

Nethermind uses the RocksDB database to store the state. By default, the database is located in the @@ -47,6 +47,6 @@

Reduc
MetricResyncPruningPruning and memory budget (4 GB)
Execution time~4h~24h~12h
Minimum free disk spaceN/A. You can execute resync even if there is 0 free space (avoid such a case).250 GB250 GB
Attestation rate drop100%. No attestation rewards during that time or highly reduced.5–10% during that timeN/A
Average block processing time of new blocks during the processN/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s.0.7s1.0s
Is the node online during the process?No, unless the state is synced.Yes. The node follows the chain, and all modules are still enabled.Yes. The node follows chain and all modules are still enabled.

The command used for testing disk IOPS was as follows:

-
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw

+
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw
\ No newline at end of file diff --git a/1.25.4/fundamentals/logs/index.html b/1.25.4/fundamentals/logs/index.html index e6d8214fc..f34484724 100644 --- a/1.25.4/fundamentals/logs/index.html +++ b/1.25.4/fundamentals/logs/index.html @@ -8,8 +8,8 @@ - - + +
Skip to main content
Version: 1.25.4

Logs

warning

This article is outdated and requires a revision.

@@ -109,6 +109,6 @@

E
  • Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version.
  • -

    +
    \ No newline at end of file diff --git a/1.25.4/fundamentals/performance-tuning/index.html b/1.25.4/fundamentals/performance-tuning/index.html index acc66bf1a..212ba0bb8 100644 --- a/1.25.4/fundamentals/performance-tuning/index.html +++ b/1.25.4/fundamentals/performance-tuning/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    Performance tuning

    By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.

    @@ -53,6 +53,6 @@

    Old

    Block processing time and attestation

    Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time. To help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option --Init.MemoryHint 2000000000. If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time.

    -

    It is also possible to disable compression of the state DB with --Db.StateDbDisableCompression true that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with --Network.MaxActivePeers 20.

    +

    It is also possible to disable compression of the state DB with --Db.StateDbDisableCompression true that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with --Network.MaxActivePeers 20.

    \ No newline at end of file diff --git a/1.25.4/fundamentals/private-networks/index.html b/1.25.4/fundamentals/private-networks/index.html index 92ce697a4..2a330fc49 100644 --- a/1.25.4/fundamentals/private-networks/index.html +++ b/1.25.4/fundamentals/private-networks/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    Private networks

    This guide will walk you through using Kurtosis ethereum-package to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's mev-boost infrastructure to simulate MEV workflows.

    @@ -47,6 +47,6 @@

    Observab

    Deploying on Kubernetes

    As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ethereum-package on Kubernetes, see Running Kurtosis in Kubernetes.

    Questions and feedback

    -

    If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on GitHub or Discord.

    +

    If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on GitHub or Discord.

    \ No newline at end of file diff --git a/1.25.4/fundamentals/pruning/index.html b/1.25.4/fundamentals/pruning/index.html index 74a0db34a..80c8db5d2 100644 --- a/1.25.4/fundamentals/pruning/index.html +++ b/1.25.4/fundamentals/pruning/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +
    \ No newline at end of file diff --git a/1.25.4/fundamentals/security/index.html b/1.25.4/fundamentals/security/index.html index e6f91b3af..9dc0d252b 100644 --- a/1.25.4/fundamentals/security/index.html +++ b/1.25.4/fundamentals/security/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    Security

    General security considerations

    @@ -22,6 +22,6 @@

    Networki
  • Block all traffic to the port 8545, or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources.
  • Allow traffic to the TCP port 30303 or whatever port is defined for P2P communication. This allows the node to connect to peers.
  • Allow traffic to the UDP port 30303 or whatever port ia defined for P2P communication. This allows node discovery.
  • -

    +
    \ No newline at end of file diff --git a/1.25.4/fundamentals/sync/index.html b/1.25.4/fundamentals/sync/index.html index fbffaf5b3..65ab0ebe2 100644 --- a/1.25.4/fundamentals/sync/index.html +++ b/1.25.4/fundamentals/sync/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    Sync

    warning

    This article is outdated and requires a revision.

    @@ -359,6 +359,6 @@

    +internet connection, and the size of the blockchain.

    \ No newline at end of file diff --git a/1.25.4/get-started/consensus-clients/index.html b/1.25.4/get-started/consensus-clients/index.html index f6bb8ba70..d3246c43e 100644 --- a/1.25.4/get-started/consensus-clients/index.html +++ b/1.25.4/get-started/consensus-clients/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    Consensus clients

    Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network. @@ -51,6 +51,6 @@

    TekuRunning Nethermind

    Important

    The consensus client must be running before you start Nethermind.

    nethermind \
    -c mainnet \
    --JsonRpc.JwtSecretFile path/to/jwt.hex
    -

    The command above runs Nethermind on Mainnet. For other networks, set the -c option accordingly. For more info, see Running Nethermind.

    +

    The command above runs Nethermind on Mainnet. For other networks, set the -c option accordingly. For more info, see Running Nethermind.

    \ No newline at end of file diff --git a/1.25.4/get-started/installing-nethermind/index.html b/1.25.4/get-started/installing-nethermind/index.html index 73a8ca709..d06f35fb6 100644 --- a/1.25.4/get-started/installing-nethermind/index.html +++ b/1.25.4/get-started/installing-nethermind/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    Installing Nethermind

    Nethermind can be installed in several ways:

    @@ -130,6 +130,6 @@

    Supported
  • OP Sepolia (testnet)
  • -

    +
    \ No newline at end of file diff --git a/1.25.4/get-started/migrating-from-geth/index.html b/1.25.4/get-started/migrating-from-geth/index.html index ed8f70507..4a065da40 100644 --- a/1.25.4/get-started/migrating-from-geth/index.html +++ b/1.25.4/get-started/migrating-from-geth/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    Migrating from Geth

    This guide will walk you through all the steps required for a seamless and quick transition.

    @@ -51,6 +51,6 @@

    Option 3: Remove Ge
  • Install Nethermind
  • Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings.
  • -

    Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the eth_syncing JSON-RPC method or the health check.

    +

    Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the eth_syncing JSON-RPC method or the health check.

    \ No newline at end of file diff --git a/1.25.4/get-started/system-requirements/index.html b/1.25.4/get-started/system-requirements/index.html index db20e5cae..f8301d629 100644 --- a/1.25.4/get-started/system-requirements/index.html +++ b/1.25.4/get-started/system-requirements/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    System requirements

    Supported operating systems

    @@ -57,6 +57,6 @@

    Sy
  • Ancient barriers. Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier.
  • Non-validator mode. This mode drops all historical receipts and bodies, but it cannot be used for validation.
  • -

    For more details, see sync modes.

    +

    For more details, see sync modes.

    \ No newline at end of file diff --git a/1.25.4/index.html b/1.25.4/index.html index 8a65406a3..009d60a08 100644 --- a/1.25.4/index.html +++ b/1.25.4/index.html @@ -8,13 +8,13 @@ - - + +
    Skip to main content
    Version: 1.25.4

    Introduction and overview

    Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.

    Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators.

    Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding.

    -

    We hope you find this documentation helpful and welcome your feedback and suggestions!

    +

    We hope you find this documentation helpful and welcome your feedback and suggestions!

    \ No newline at end of file diff --git a/1.25.4/interacting/json-rpc-ns/admin/index.html b/1.25.4/interacting/json-rpc-ns/admin/index.html index 8c75de7d6..becf50588 100644 --- a/1.25.4/interacting/json-rpc-ns/admin/index.html +++ b/1.25.4/interacting/json-rpc-ns/admin/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    admin namespace

    admin_addPeer

    @@ -74,6 +74,6 @@

    admin_remov
  • removeFromStaticNodes: boolean

  • -

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "admin_removePeer",
    "params": [enode, removeFromStaticNodes]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "admin_removePeer",
    "params": [enode, removeFromStaticNodes]
    }'
    \ No newline at end of file diff --git a/1.25.4/interacting/json-rpc-ns/clique/index.html b/1.25.4/interacting/json-rpc-ns/clique/index.html index a2a651be4..9ee47b8ab 100644 --- a/1.25.4/interacting/json-rpc-ns/clique/index.html +++ b/1.25.4/interacting/json-rpc-ns/clique/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    clique namespace

    clique_discard

    @@ -75,6 +75,6 @@

    clique_propos
  • vote: boolean

  • -

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "clique_propose",
    "params": [signer, vote]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "clique_propose",
    "params": [signer, vote]
    }'
    \ No newline at end of file diff --git a/1.25.4/interacting/json-rpc-ns/debug/index.html b/1.25.4/interacting/json-rpc-ns/debug/index.html index 9df231d75..85bd03d2d 100644 --- a/1.25.4/interacting/json-rpc-ns/debug/index.html +++ b/1.25.4/interacting/json-rpc-ns/debug/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +
    \ No newline at end of file diff --git a/1.25.4/interacting/json-rpc-ns/eth/index.html b/1.25.4/interacting/json-rpc-ns/eth/index.html index 20d2fdfb8..5e3c68afe 100644 --- a/1.25.4/interacting/json-rpc-ns/eth/index.html +++ b/1.25.4/interacting/json-rpc-ns/eth/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    eth namespace

    eth_blockNumber

    @@ -910,6 +910,6 @@

    eth_unsubscr
    info

    This method is enabled by adding subscribe to --JsonRpc.EnabledModules.

    wscat -c ws://localhost:8545
    {
    "jsonrpc": "2.0",
    "id": 0,
    "method": "eth_unsubscribe",
    "params": [subscriptionId]
    }

    +
    wscat -c ws://localhost:8545
    {
    "jsonrpc": "2.0",
    "id": 0,
    "method": "eth_unsubscribe",
    "params": [subscriptionId]
    }
    \ No newline at end of file diff --git a/1.25.4/interacting/json-rpc-ns/net/index.html b/1.25.4/interacting/json-rpc-ns/net/index.html index b6526355d..ec5a7904f 100644 --- a/1.25.4/interacting/json-rpc-ns/net/index.html +++ b/1.25.4/interacting/json-rpc-ns/net/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    net namespace

    net_listening

    @@ -21,6 +21,6 @@

    net_localEnod

    net_peerCount

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "net_peerCount",
    "params": []
    }'

    net_version

    -
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "net_version",
    "params": []
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "net_version",
    "params": []
    }'
    \ No newline at end of file diff --git a/1.25.4/interacting/json-rpc-ns/parity/index.html b/1.25.4/interacting/json-rpc-ns/parity/index.html index 1146c6be6..3e2b40c08 100644 --- a/1.25.4/interacting/json-rpc-ns/parity/index.html +++ b/1.25.4/interacting/json-rpc-ns/parity/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    parity namespace

    parity_clearEngineSigner

    @@ -124,6 +124,6 @@

    parit

    parity_setEngineSignerSecret

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "parity_setEngineSignerSecret",
    "params": [privateKey]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "parity_setEngineSignerSecret",
    "params": [privateKey]
    }'
    \ No newline at end of file diff --git a/1.25.4/interacting/json-rpc-ns/personal/index.html b/1.25.4/interacting/json-rpc-ns/personal/index.html index 42eff51c7..900cc6386 100644 --- a/1.25.4/interacting/json-rpc-ns/personal/index.html +++ b/1.25.4/interacting/json-rpc-ns/personal/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    personal namespace

    personal_importRawKey

    @@ -39,6 +39,6 @@

    perso
  • passphrase: string

  • -

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "personal_unlockAccount",
    "params": [address, passphrase]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "personal_unlockAccount",
    "params": [address, passphrase]
    }'
    \ No newline at end of file diff --git a/1.25.4/interacting/json-rpc-ns/proof/index.html b/1.25.4/interacting/json-rpc-ns/proof/index.html index bc5ffc980..5870c7b97 100644 --- a/1.25.4/interacting/json-rpc-ns/proof/index.html +++ b/1.25.4/interacting/json-rpc-ns/proof/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    proof namespace

    proof_getTransactionByHash

    @@ -107,6 +107,6 @@

  • receiptProof: array of string (hex data)
  • txProof: array of string (hex data)
  • -

    +
    \ No newline at end of file diff --git a/1.25.4/interacting/json-rpc-ns/trace/index.html b/1.25.4/interacting/json-rpc-ns/trace/index.html index a378f11d2..4d9ebfffe 100644 --- a/1.25.4/interacting/json-rpc-ns/trace/index.html +++ b/1.25.4/interacting/json-rpc-ns/trace/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    trace namespace

    trace_block

    @@ -573,6 +573,6 @@

    trace_tran
  • transactionHash: string (hash)
  • transactionPosition: string (hex integer)
  • type: string
  • -

    +
    \ No newline at end of file diff --git a/1.25.4/interacting/json-rpc-ns/txpool/index.html b/1.25.4/interacting/json-rpc-ns/txpool/index.html index 73642ff42..706da9a74 100644 --- a/1.25.4/interacting/json-rpc-ns/txpool/index.html +++ b/1.25.4/interacting/json-rpc-ns/txpool/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    txpool namespace

    txpool_content

    @@ -93,6 +93,6 @@

    txpool_status<
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "txpool_status",
    "params": []
    }'

    +
    \ No newline at end of file diff --git a/1.25.4/interacting/json-rpc-ns/web3/index.html b/1.25.4/interacting/json-rpc-ns/web3/index.html index b0c0ce5c0..18331eed6 100644 --- a/1.25.4/interacting/json-rpc-ns/web3/index.html +++ b/1.25.4/interacting/json-rpc-ns/web3/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "web3_sha3",
    "params": [data]
    }'
    \ No newline at end of file diff --git a/1.25.4/interacting/json-rpc-server/index.html b/1.25.4/interacting/json-rpc-server/index.html index 3a11bd3f8..29e111f9b 100644 --- a/1.25.4/interacting/json-rpc-server/index.html +++ b/1.25.4/interacting/json-rpc-server/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +

    The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at keystore/jwt-secret path in its root directory. To use a different path, specify the --JsonRpc.JwtSecretFile path/to/jwt.hex command line option.

    \ No newline at end of file diff --git a/1.25.4/monitoring/health-check/index.html b/1.25.4/monitoring/health-check/index.html index f15f9fcbe..6b218b303 100644 --- a/1.25.4/monitoring/health-check/index.html +++ b/1.25.4/monitoring/health-check/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    Health check

    warning

    This article is outdated and requires a revision.

    @@ -83,6 +83,6 @@

    HealthChecks config section example

    "HealthChecks": {
    "Enabled": true,
    "WebhooksEnabled": true,
    "UIEnabled": true,
    "Slug": "/api/health",
    "MaxIntervalWithoutProcessedBlock ": 15,
    "MaxIntervalWithoutProducedBlock": 45
    }

    If those fields are not set in a config, application will try to use them based on seal engine specification. If there -is infinite time, unhealthy status can still be reported if processing or producing threads stopped.

    +is infinite time, unhealthy status can still be reported if processing or producing threads stopped.

    \ No newline at end of file diff --git a/1.25.4/monitoring/metrics/dotnet-counters/index.html b/1.25.4/monitoring/metrics/dotnet-counters/index.html index f15438c96..f4718592a 100644 --- a/1.25.4/monitoring/metrics/dotnet-counters/index.html +++ b/1.25.4/monitoring/metrics/dotnet-counters/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    dotnet-counters

    This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.

    @@ -41,6 +41,6 @@

    Step
    dotnet-counters collect -n nethermind

    By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:

    dotnet-counters collect -n nethermind -f json -o /tmp/counters.json
    -

    For more info about dotnet-counters, see its official docs.

    +

    For more info about dotnet-counters, see its official docs.

    \ No newline at end of file diff --git a/1.25.4/monitoring/metrics/grafana-and-prometheus/index.html b/1.25.4/monitoring/metrics/grafana-and-prometheus/index.html index 59f04bd16..3e1e5b208 100644 --- a/1.25.4/monitoring/metrics/grafana-and-prometheus/index.html +++ b/1.25.4/monitoring/metrics/grafana-and-prometheus/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    Grafana and Prometheus

    This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.

    @@ -34,6 +34,6 @@

    Step 3
    nethermind -c mainnet --Metrics.Enabled true

    Alternatively, you may add the nethermind service to the docker-compose.yml file in the repository root to run everything altogether:

    docker-compose.yml
    nethermind:
    image: nethermind/nethermind:latest
    container_name: nethermind
    restart: unless-stopped
    ports:
    - 8545:8545
    - 8551:8551
    - 30303:30303
    ulimits:
    nofile:
    soft: 1000000
    hard: 1000000
    command: -c mainnet --Metrics.Enabled true
    volumes:
    - ./keystore:/nethermind/keystore
    - ./logs:/nethermind/logs
    - ./nethermind_db:/nethermind/nethermind_db
    -

    In this case, you may want to configure your consensus client similarly.

    +

    In this case, you may want to configure your consensus client similarly.

    \ No newline at end of file diff --git a/1.25.4/monitoring/metrics/index.html b/1.25.4/monitoring/metrics/index.html index 414bd4b35..3a2e68295 100644 --- a/1.25.4/monitoring/metrics/index.html +++ b/1.25.4/monitoring/metrics/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    Metrics

    Currently, Nethermind provides the following options to monitor and collect metrics about itself:

    @@ -979,6 +979,6 @@

    Para

    nethermind_transaction_count

    Number of transactions in pool.

    -

    +

    \ No newline at end of file diff --git a/1.25.4/troubleshooting/index.html b/1.25.4/troubleshooting/index.html index 6535ee778..703d0c096 100644 --- a/1.25.4/troubleshooting/index.html +++ b/1.25.4/troubleshooting/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    Troubleshooting

    File descriptor limits

    @@ -38,6 +38,6 @@

    Bloc

    Sometimes Nethermind may fail with an error similar the following:

    Corruption: block checksum mismatch: expected 2087346143, got 2983326672 in... 

    This tends to happen on XFS file systems under very high memory pressure. The issue can be mitigated by using the --Db.UseDirectIoForFlushAndCompactions true option although at the cost of performance.

    -

    However, quite often, this is because of memory module issues.

    +

    However, quite often, this is because of memory module issues.

    \ No newline at end of file diff --git a/1.25.4/validators/aura/index.html b/1.25.4/validators/aura/index.html index b162db655..941b17e48 100644 --- a/1.25.4/validators/aura/index.html +++ b/1.25.4/validators/aura/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    Aura-based validators

    This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.

    @@ -40,6 +40,6 @@

    Runnin

    The above Docker Compose file can be run from the directory the docker-compose.yml is located in as follows:

    docker-compose up -d

    To check the logs and verify the sealing of blocks, run:

    -
    docker-compose logs -f nethermind-validator

    +
    docker-compose logs -f nethermind-validator
    \ No newline at end of file diff --git a/1.25.4/validators/index.html b/1.25.4/validators/index.html index 338cc8d49..14948f8c5 100644 --- a/1.25.4/validators/index.html +++ b/1.25.4/validators/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.25.4

    Validators

    General considerations

    @@ -44,6 +44,6 @@

    GCPMultiple validators on the c2d-highmem-4 instance: 4 vCPU, 32 GB memory

    These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on e2-small instances.

    Gnosis validators

    -

    To set up a Gnosis Chain validator, you can either do that manually or use one of the available one-click tools.

    +

    To set up a Gnosis Chain validator, you can either do that manually or use one of the available one-click tools.

    \ No newline at end of file diff --git a/1.26.0/developers/building-from-source/index.html b/1.26.0/developers/building-from-source/index.html index 9d3e93677..20f517b78 100644 --- a/1.26.0/developers/building-from-source/index.html +++ b/1.26.0/developers/building-from-source/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Building from source

    The Nethermind's source code can be obtained from our repository on @@ -44,6 +44,6 @@

    Bulding

    To build Nethermind Docker image, run the following command from the project's root directory:

    docker build -t nethermind .

    For more info about running Docker containers, -see Installing Nethermind.

    +see Installing Nethermind.

    \ No newline at end of file diff --git a/1.26.0/developers/custom-analytic-tools/index.html b/1.26.0/developers/custom-analytic-tools/index.html index 430f67107..3b2ec3949 100644 --- a/1.26.0/developers/custom-analytic-tools/index.html +++ b/1.26.0/developers/custom-analytic-tools/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Custom analytic tools

    warning

    This article is outdated and requires a revision.

    @@ -25,6 +25,6 @@ branches if you wish so:

        public class RewardsVerifier : IBlockTreeVisitor
    {
    private ILogger _logger;
    public bool PreventsAcceptingNewBlocks => true;
    public long StartLevelInclusive => 0;
    public long EndLevelExclusive => 10618000;

    private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");
    private UInt256 _uncles;
    private UInt256 _blockRewards;

    public RewardsVerifier(ILogManager logManager)
    {
    _logger = logManager.GetClassLogger();
    }

    private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);

    public Task<BlockVisitOutcome> VisitBlock(Block block, CancellationToken cancellationToken)
    {
    BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);
    for (int i = 0; i < rewards.Length; i++)
    {
    if (rewards[i].RewardType == BlockRewardType.Uncle)
    {
    _uncles += rewards[i].Value;
    }
    else
    {
    _blockRewards += rewards[i].Value;
    }
    }

    _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");
    return Task.FromResult(BlockVisitOutcome.None);
    }

    public Task<LevelVisitOutcome> VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)
    => Task.FromResult(LevelVisitOutcome.None);

    public Task<bool> VisitMissing(Keccak hash, CancellationToken cancellationToken)
    => Task.FromResult(true);

    public Task<bool> VisitHeader(BlockHeader header, CancellationToken cancellationToken)
    => Task.FromResult(true);

    public Task<LevelVisitOutcome> VisitLevelEnd(CancellationToken cancellationToken)
    => Task.FromResult(LevelVisitOutcome.None);
    }

    And here you will find an example of a tree visitor that sums up all the account balances:

    -
        public class SupplyVerifier : ITreeVisitor
    {
    private readonly ILogger _logger;
    private UInt256 _balance = UInt256.Zero;
    private int _accountsVisited;

    public SupplyVerifier(ILogger logger)
    {
    _logger = logger;
    }

    public bool ShouldVisit(Keccak nextNode) { return true; }

    public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }

    public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }

    public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }

    public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }

    public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
    {
    if (trieVisitContext.IsStorage)
    {
    return;
    }

    AccountDecoder accountDecoder = new AccountDecoder();
    Account account = accountDecoder.Decode(node.Value.AsRlpStream());
    _balance += account.Balance;
    _accountsVisited++;

    _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");
    }

    public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }
    }
    +
        public class SupplyVerifier : ITreeVisitor
    {
    private readonly ILogger _logger;
    private UInt256 _balance = UInt256.Zero;
    private int _accountsVisited;

    public SupplyVerifier(ILogger logger)
    {
    _logger = logger;
    }

    public bool ShouldVisit(Keccak nextNode) { return true; }

    public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }

    public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }

    public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }

    public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }

    public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
    {
    if (trieVisitContext.IsStorage)
    {
    return;
    }

    AccountDecoder accountDecoder = new AccountDecoder();
    Account account = accountDecoder.Decode(node.Value.AsRlpStream());
    _balance += account.Balance;
    _accountsVisited++;

    _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");
    }

    public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }
    }
    \ No newline at end of file diff --git a/1.26.0/developers/plugins/index.html b/1.26.0/developers/plugins/index.html index 42446d4b9..5d8d15e61 100644 --- a/1.26.0/developers/plugins/index.html +++ b/1.26.0/developers/plugins/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Plugins

    warning

    This article is outdated and requires a revision.

    @@ -32,6 +32,6 @@

    Config plugin example:

    public class AnalyticsConfig : IAnalyticsConfig
    {
    public bool PluginsEnabled { get; set; }
    public bool StreamTransactions { get; set; }
    public bool StreamBlocks { get; set; }
    public bool LogPublishedData { get; set; }
    }

    State Tree Visitor example:

    -
    public class SupplyVerifier : ITreeVisitor
    {
    private readonly ILogger _logger;
    private HashSet<Keccak> _ignoreThisOne = new HashSet<Keccak>();
    private int _accountsVisited;
    private int _nodesVisited;

    public SupplyVerifier(ILogger logger)
    {
    _logger = logger;
    }

    public UInt256 Balance { get; set; } = UInt256.Zero;

    public bool ShouldVisit(Keccak nextNode)
    {
    if (_ignoreThisOne.Count > 16)
    {
    _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");
    }

    if (_ignoreThisOne.Contains(nextNode))
    {
    _ignoreThisOne.Remove(nextNode);
    return false;
    }

    return true;
    }

    public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)
    {
    }

    public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)
    {
    _logger.Warn($"Missing node {nodeHash}");
    }

    public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)
    {
    _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
    _nodesVisited++;

    if (trieVisitContext.IsStorage)
    {
    for (int i = 0; i < 16; i++)
    {
    Keccak childHash = node.GetChildHash(i);
    if (childHash != null)
    {
    _ignoreThisOne.Add(childHash);
    }
    }
    }
    }

    public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)
    {
    _nodesVisited++;
    if (trieVisitContext.IsStorage)
    {
    _ignoreThisOne.Add(node.GetChildHash(0));
    }
    }

    public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
    {
    _nodesVisited++;

    if (trieVisitContext.IsStorage)
    {
    return;
    }

    AccountDecoder accountDecoder = new AccountDecoder();
    Account account = accountDecoder.Decode(node.Value.AsRlpStream());
    Balance += account.Balance;
    _accountsVisited++;

    _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
    }

    public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)
    {
    _nodesVisited++;
    }
    }
    +
    public class SupplyVerifier : ITreeVisitor
    {
    private readonly ILogger _logger;
    private HashSet<Keccak> _ignoreThisOne = new HashSet<Keccak>();
    private int _accountsVisited;
    private int _nodesVisited;

    public SupplyVerifier(ILogger logger)
    {
    _logger = logger;
    }

    public UInt256 Balance { get; set; } = UInt256.Zero;

    public bool ShouldVisit(Keccak nextNode)
    {
    if (_ignoreThisOne.Count > 16)
    {
    _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");
    }

    if (_ignoreThisOne.Contains(nextNode))
    {
    _ignoreThisOne.Remove(nextNode);
    return false;
    }

    return true;
    }

    public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)
    {
    }

    public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)
    {
    _logger.Warn($"Missing node {nodeHash}");
    }

    public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)
    {
    _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
    _nodesVisited++;

    if (trieVisitContext.IsStorage)
    {
    for (int i = 0; i < 16; i++)
    {
    Keccak childHash = node.GetChildHash(i);
    if (childHash != null)
    {
    _ignoreThisOne.Add(childHash);
    }
    }
    }
    }

    public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)
    {
    _nodesVisited++;
    if (trieVisitContext.IsStorage)
    {
    _ignoreThisOne.Add(node.GetChildHash(0));
    }
    }

    public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
    {
    _nodesVisited++;

    if (trieVisitContext.IsStorage)
    {
    return;
    }

    AccountDecoder accountDecoder = new AccountDecoder();
    Account account = accountDecoder.Decode(node.Value.AsRlpStream());
    Balance += account.Balance;
    _accountsVisited++;

    _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
    }

    public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)
    {
    _nodesVisited++;
    }
    }
    \ No newline at end of file diff --git a/1.26.0/faq/index.html b/1.26.0/faq/index.html index 0efc94c49..56020b558 100644 --- a/1.26.0/faq/index.html +++ b/1.26.0/faq/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +--JsonRpc.EnginePort 8552 --JsonRpc.Port 8546 --Network.P2PPort 30304 --Network.DiscoveryPort 30304

    \ No newline at end of file diff --git a/1.26.0/fundamentals/configuration/index.html b/1.26.0/fundamentals/configuration/index.html index cbabeb3a5..6e1f7ad8c 100644 --- a/1.26.0/fundamentals/configuration/index.html +++ b/1.26.0/fundamentals/configuration/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Configuration

    Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:

    @@ -1155,6 +1155,6 @@

    Enviro
    NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}

    For instance, the environment variable equivalent of the command line --JsonRpc.JwtSecretFile option is NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE. For the list of configuration namespaces and their options, see Options by namespaces.

    Configuration file

    -

    The configuration file is a JSON file with .cfg extension. The bundled configuration files are located in the configs directory and named after the network they are used for. For instance, see the Mainnet configuration file mainnet.cfg.

    +

    The configuration file is a JSON file with .cfg extension. The bundled configuration files are located in the configs directory and named after the network they are used for. For instance, see the Mainnet configuration file mainnet.cfg.

    \ No newline at end of file diff --git a/1.26.0/fundamentals/database/index.html b/1.26.0/fundamentals/database/index.html index b4ab39159..c8eb405c3 100644 --- a/1.26.0/fundamentals/database/index.html +++ b/1.26.0/fundamentals/database/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Database

    Nethermind uses the RocksDB database to store the state. By default, the database is located in the @@ -113,6 +113,6 @@

    Reduc
    MetricResyncPruningPruning and memory budget (4 GB)
    Execution time~4h~24h~12h
    Minimum free disk spaceN/A. You can execute resync even if there is 0 free space (avoid such a case).250 GB250 GB
    Attestation rate drop100%. No attestation rewards during that time or highly reduced.5–10% during that timeN/A
    Average block processing time of new blocks during the processN/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s.0.7s1.0s
    Is the node online during the process?No, unless the state is synced.Yes. The node follows the chain, and all modules are still enabled.Yes. The node follows chain and all modules are still enabled.

    The command used for testing disk IOPS was as follows:

    -
    fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw

    +
    fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw
    \ No newline at end of file diff --git a/1.26.0/fundamentals/logs/index.html b/1.26.0/fundamentals/logs/index.html index b1f8396d5..63728db2b 100644 --- a/1.26.0/fundamentals/logs/index.html +++ b/1.26.0/fundamentals/logs/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Logs

    warning

    This article is outdated and requires a revision.

    @@ -109,6 +109,6 @@

    E
  • Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version.
  • -

    +
    \ No newline at end of file diff --git a/1.26.0/fundamentals/performance-tuning/index.html b/1.26.0/fundamentals/performance-tuning/index.html index 604aafe8f..6e02ad24b 100644 --- a/1.26.0/fundamentals/performance-tuning/index.html +++ b/1.26.0/fundamentals/performance-tuning/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Performance tuning

    By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.

    @@ -53,6 +53,6 @@

    Old

    Block processing time and attestation

    Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time. To help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option --Init.MemoryHint 2000000000. If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time.

    -

    It is also possible to disable compression of the state DB with --Db.StateDbDisableCompression true that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with --Network.MaxActivePeers 20.

    +

    It is also possible to disable compression of the state DB with --Db.StateDbDisableCompression true that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with --Network.MaxActivePeers 20.

    \ No newline at end of file diff --git a/1.26.0/fundamentals/private-networks/index.html b/1.26.0/fundamentals/private-networks/index.html index ba765ea64..bc9bf398a 100644 --- a/1.26.0/fundamentals/private-networks/index.html +++ b/1.26.0/fundamentals/private-networks/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Private networks

    This guide will walk you through using Kurtosis ethereum-package to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's mev-boost infrastructure to simulate MEV workflows.

    @@ -47,6 +47,6 @@

    Observab

    Deploying on Kubernetes

    As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ethereum-package on Kubernetes, see Running Kurtosis in Kubernetes.

    Questions and feedback

    -

    If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on GitHub or Discord.

    +

    If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on GitHub or Discord.

    \ No newline at end of file diff --git a/1.26.0/fundamentals/pruning/index.html b/1.26.0/fundamentals/pruning/index.html index f8b6b223a..42bc5394b 100644 --- a/1.26.0/fundamentals/pruning/index.html +++ b/1.26.0/fundamentals/pruning/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +
    \ No newline at end of file diff --git a/1.26.0/fundamentals/security/index.html b/1.26.0/fundamentals/security/index.html index 6c58e7583..2426334c8 100644 --- a/1.26.0/fundamentals/security/index.html +++ b/1.26.0/fundamentals/security/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Security

    General security considerations

    @@ -22,6 +22,6 @@

    Networki
  • Block all traffic to the port 8545, or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources.
  • Allow traffic to the TCP port 30303 or whatever port is defined for P2P communication. This allows the node to connect to peers.
  • Allow traffic to the UDP port 30303 or whatever port ia defined for P2P communication. This allows node discovery.
  • -

    +
    \ No newline at end of file diff --git a/1.26.0/fundamentals/sync/index.html b/1.26.0/fundamentals/sync/index.html index ef774d9d3..ea45263df 100644 --- a/1.26.0/fundamentals/sync/index.html +++ b/1.26.0/fundamentals/sync/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Sync

    warning

    This article is outdated and requires a revision.

    @@ -359,6 +359,6 @@

    +internet connection, and the size of the blockchain.

    \ No newline at end of file diff --git a/1.26.0/get-started/consensus-clients/index.html b/1.26.0/get-started/consensus-clients/index.html index 614df64cb..b2ab833b7 100644 --- a/1.26.0/get-started/consensus-clients/index.html +++ b/1.26.0/get-started/consensus-clients/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Consensus clients

    Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network. @@ -55,6 +55,6 @@

    TekuRunning Nethermind

    Important

    The consensus client must be running before you start Nethermind.

    nethermind \
    -c mainnet \
    --JsonRpc.JwtSecretFile path/to/jwt.hex
    -

    The command above runs Nethermind on Mainnet. For other networks, set the -c option accordingly. For more info, see Running Nethermind.

    +

    The command above runs Nethermind on Mainnet. For other networks, set the -c option accordingly. For more info, see Running Nethermind.

    \ No newline at end of file diff --git a/1.26.0/get-started/installing-nethermind/index.html b/1.26.0/get-started/installing-nethermind/index.html index 884fc7155..55270e512 100644 --- a/1.26.0/get-started/installing-nethermind/index.html +++ b/1.26.0/get-started/installing-nethermind/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Installing Nethermind

    Nethermind can be installed in several ways:

    @@ -129,6 +129,6 @@

    Supported
  • OP Sepolia (testnet)
  • -

    +
    \ No newline at end of file diff --git a/1.26.0/get-started/migrating-from-geth/index.html b/1.26.0/get-started/migrating-from-geth/index.html index 58eeb6ff1..d708aed2c 100644 --- a/1.26.0/get-started/migrating-from-geth/index.html +++ b/1.26.0/get-started/migrating-from-geth/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Migrating from Geth

    This guide will walk you through all the steps required for a seamless and quick transition.

    @@ -51,6 +51,6 @@

    Option 3: Remove Ge
  • Install Nethermind
  • Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings.
  • -

    Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the eth_syncing JSON-RPC method or the health check.

    +

    Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the eth_syncing JSON-RPC method or the health check.

    \ No newline at end of file diff --git a/1.26.0/get-started/system-requirements/index.html b/1.26.0/get-started/system-requirements/index.html index cd53a9c16..0682a6828 100644 --- a/1.26.0/get-started/system-requirements/index.html +++ b/1.26.0/get-started/system-requirements/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    System requirements

    Supported operating systems

    @@ -57,6 +57,6 @@

    Sy
  • Ancient barriers. Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier.
  • Non-validator mode. This mode drops all historical receipts and bodies, but it cannot be used for validation.
  • -

    For more details, see sync modes.

    +

    For more details, see sync modes.

    \ No newline at end of file diff --git a/1.26.0/index.html b/1.26.0/index.html index f950417c7..404d76954 100644 --- a/1.26.0/index.html +++ b/1.26.0/index.html @@ -8,13 +8,13 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Introduction and overview

    Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.

    Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators.

    Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding.

    -

    We hope you find this documentation helpful and welcome your feedback and suggestions!

    +

    We hope you find this documentation helpful and welcome your feedback and suggestions!

    \ No newline at end of file diff --git a/1.26.0/interacting/json-rpc-ns/admin/index.html b/1.26.0/interacting/json-rpc-ns/admin/index.html index 31e286705..e7313de89 100644 --- a/1.26.0/interacting/json-rpc-ns/admin/index.html +++ b/1.26.0/interacting/json-rpc-ns/admin/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    admin namespace

    admin_addPeer

    @@ -74,6 +74,6 @@

    admin_remov
  • removeFromStaticNodes: boolean

  • -

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "admin_removePeer",
    "params": [enode, removeFromStaticNodes]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "admin_removePeer",
    "params": [enode, removeFromStaticNodes]
    }'
    \ No newline at end of file diff --git a/1.26.0/interacting/json-rpc-ns/clique/index.html b/1.26.0/interacting/json-rpc-ns/clique/index.html index 7799e1169..412dd70bc 100644 --- a/1.26.0/interacting/json-rpc-ns/clique/index.html +++ b/1.26.0/interacting/json-rpc-ns/clique/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    clique namespace

    clique_discard

    @@ -75,6 +75,6 @@

    clique_propos
  • vote: boolean

  • -

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "clique_propose",
    "params": [signer, vote]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "clique_propose",
    "params": [signer, vote]
    }'
    \ No newline at end of file diff --git a/1.26.0/interacting/json-rpc-ns/debug/index.html b/1.26.0/interacting/json-rpc-ns/debug/index.html index 10e27bf03..f8be644d6 100644 --- a/1.26.0/interacting/json-rpc-ns/debug/index.html +++ b/1.26.0/interacting/json-rpc-ns/debug/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +
    \ No newline at end of file diff --git a/1.26.0/interacting/json-rpc-ns/eth/index.html b/1.26.0/interacting/json-rpc-ns/eth/index.html index 55fe2afbc..5624474c1 100644 --- a/1.26.0/interacting/json-rpc-ns/eth/index.html +++ b/1.26.0/interacting/json-rpc-ns/eth/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    eth namespace

    eth_blobBaseFee

    @@ -969,6 +969,6 @@

    eth_unsubscr
    info

    This method is enabled by adding subscribe to --JsonRpc.EnabledModules.

    wscat -c ws://localhost:8545
    {
    "jsonrpc": "2.0",
    "id": 0,
    "method": "eth_unsubscribe",
    "params": [subscriptionId]
    }

    +
    wscat -c ws://localhost:8545
    {
    "jsonrpc": "2.0",
    "id": 0,
    "method": "eth_unsubscribe",
    "params": [subscriptionId]
    }
    \ No newline at end of file diff --git a/1.26.0/interacting/json-rpc-ns/net/index.html b/1.26.0/interacting/json-rpc-ns/net/index.html index fd2cbfa86..99995b667 100644 --- a/1.26.0/interacting/json-rpc-ns/net/index.html +++ b/1.26.0/interacting/json-rpc-ns/net/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    net namespace

    net_listening

    @@ -21,6 +21,6 @@

    net_localEnod

    net_peerCount

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "net_peerCount",
    "params": []
    }'

    net_version

    -
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "net_version",
    "params": []
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "net_version",
    "params": []
    }'
    \ No newline at end of file diff --git a/1.26.0/interacting/json-rpc-ns/parity/index.html b/1.26.0/interacting/json-rpc-ns/parity/index.html index fb2352721..d14e84bf5 100644 --- a/1.26.0/interacting/json-rpc-ns/parity/index.html +++ b/1.26.0/interacting/json-rpc-ns/parity/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    parity namespace

    parity_clearEngineSigner

    @@ -124,6 +124,6 @@

    parit

    parity_setEngineSignerSecret

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "parity_setEngineSignerSecret",
    "params": [privateKey]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "parity_setEngineSignerSecret",
    "params": [privateKey]
    }'
    \ No newline at end of file diff --git a/1.26.0/interacting/json-rpc-ns/personal/index.html b/1.26.0/interacting/json-rpc-ns/personal/index.html index 3cdda84ed..212a2627b 100644 --- a/1.26.0/interacting/json-rpc-ns/personal/index.html +++ b/1.26.0/interacting/json-rpc-ns/personal/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    personal namespace

    personal_importRawKey

    @@ -39,6 +39,6 @@

    perso
  • passphrase: string

  • -

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "personal_unlockAccount",
    "params": [address, passphrase]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "personal_unlockAccount",
    "params": [address, passphrase]
    }'
    \ No newline at end of file diff --git a/1.26.0/interacting/json-rpc-ns/proof/index.html b/1.26.0/interacting/json-rpc-ns/proof/index.html index ce7be9664..469ae932e 100644 --- a/1.26.0/interacting/json-rpc-ns/proof/index.html +++ b/1.26.0/interacting/json-rpc-ns/proof/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    proof namespace

    proof_getTransactionByHash

    @@ -107,6 +107,6 @@

  • receiptProof: array of string (hex data)
  • txProof: array of string (hex data)
  • -

    +
    \ No newline at end of file diff --git a/1.26.0/interacting/json-rpc-ns/trace/index.html b/1.26.0/interacting/json-rpc-ns/trace/index.html index 5b1c2086c..3e666dc52 100644 --- a/1.26.0/interacting/json-rpc-ns/trace/index.html +++ b/1.26.0/interacting/json-rpc-ns/trace/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    trace namespace

    trace_block

    @@ -573,6 +573,6 @@

    trace_tran
  • transactionHash: string (hash)
  • transactionPosition: string (hex integer)
  • type: string
  • -

    +
    \ No newline at end of file diff --git a/1.26.0/interacting/json-rpc-ns/txpool/index.html b/1.26.0/interacting/json-rpc-ns/txpool/index.html index 4955a9218..961af3b43 100644 --- a/1.26.0/interacting/json-rpc-ns/txpool/index.html +++ b/1.26.0/interacting/json-rpc-ns/txpool/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    txpool namespace

    txpool_content

    @@ -93,6 +93,6 @@

    txpool_status<
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "txpool_status",
    "params": []
    }'

    +
    \ No newline at end of file diff --git a/1.26.0/interacting/json-rpc-ns/web3/index.html b/1.26.0/interacting/json-rpc-ns/web3/index.html index def31a863..c5e202975 100644 --- a/1.26.0/interacting/json-rpc-ns/web3/index.html +++ b/1.26.0/interacting/json-rpc-ns/web3/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "web3_sha3",
    "params": [data]
    }'
    \ No newline at end of file diff --git a/1.26.0/interacting/json-rpc-server/index.html b/1.26.0/interacting/json-rpc-server/index.html index 66485a7f0..d3a50d621 100644 --- a/1.26.0/interacting/json-rpc-server/index.html +++ b/1.26.0/interacting/json-rpc-server/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +

    The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at keystore/jwt-secret path in its root directory. To use a different path, specify the --JsonRpc.JwtSecretFile path/to/jwt.hex command line option.

    \ No newline at end of file diff --git a/1.26.0/monitoring/health-check/index.html b/1.26.0/monitoring/health-check/index.html index ef7fe091c..45694a662 100644 --- a/1.26.0/monitoring/health-check/index.html +++ b/1.26.0/monitoring/health-check/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Health check

    warning

    This article is outdated and requires a revision.

    @@ -83,6 +83,6 @@

    HealthChecks config section example

    "HealthChecks": {
    "Enabled": true,
    "WebhooksEnabled": true,
    "UIEnabled": true,
    "Slug": "/api/health",
    "MaxIntervalWithoutProcessedBlock ": 15,
    "MaxIntervalWithoutProducedBlock": 45
    }

    If those fields are not set in a config, application will try to use them based on seal engine specification. If there -is infinite time, unhealthy status can still be reported if processing or producing threads stopped.

    +is infinite time, unhealthy status can still be reported if processing or producing threads stopped.

    \ No newline at end of file diff --git a/1.26.0/monitoring/metrics/dotnet-counters/index.html b/1.26.0/monitoring/metrics/dotnet-counters/index.html index 0c1db63d4..ea541dbe3 100644 --- a/1.26.0/monitoring/metrics/dotnet-counters/index.html +++ b/1.26.0/monitoring/metrics/dotnet-counters/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    dotnet-counters

    This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.

    @@ -41,6 +41,6 @@

    Step
    dotnet-counters collect -n nethermind

    By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:

    dotnet-counters collect -n nethermind -f json -o /tmp/counters.json
    -

    For more info about dotnet-counters, see its official docs.

    +

    For more info about dotnet-counters, see its official docs.

    \ No newline at end of file diff --git a/1.26.0/monitoring/metrics/grafana-and-prometheus/index.html b/1.26.0/monitoring/metrics/grafana-and-prometheus/index.html index 016e5cdbe..0f8a8a1f7 100644 --- a/1.26.0/monitoring/metrics/grafana-and-prometheus/index.html +++ b/1.26.0/monitoring/metrics/grafana-and-prometheus/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Grafana and Prometheus

    This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.

    @@ -34,6 +34,6 @@

    Step 3
    nethermind -c mainnet --Metrics.Enabled true

    Alternatively, you may add the nethermind service to the docker-compose.yml file in the repository root to run everything altogether:

    docker-compose.yml
    nethermind:
    image: nethermind/nethermind:latest
    container_name: nethermind
    restart: unless-stopped
    ports:
    - 8545:8545
    - 8551:8551
    - 30303:30303
    ulimits:
    nofile:
    soft: 1000000
    hard: 1000000
    command: -c mainnet --Metrics.Enabled true
    volumes:
    - ./keystore:/nethermind/keystore
    - ./logs:/nethermind/logs
    - ./nethermind_db:/nethermind/nethermind_db
    -

    In this case, you may want to configure your consensus client similarly.

    +

    In this case, you may want to configure your consensus client similarly.

    \ No newline at end of file diff --git a/1.26.0/monitoring/metrics/index.html b/1.26.0/monitoring/metrics/index.html index 0767e4d6c..4fad93917 100644 --- a/1.26.0/monitoring/metrics/index.html +++ b/1.26.0/monitoring/metrics/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Metrics

    Currently, Nethermind provides the following options to monitor and collect metrics about itself:

    @@ -1037,6 +1037,6 @@

    Para

    nethermind_transaction_count

    Number of transactions in pool.

    -

    +

    \ No newline at end of file diff --git a/1.26.0/troubleshooting/index.html b/1.26.0/troubleshooting/index.html index cfd4b3162..2df877f1a 100644 --- a/1.26.0/troubleshooting/index.html +++ b/1.26.0/troubleshooting/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Troubleshooting

    File descriptor limits

    @@ -38,6 +38,6 @@

    Bloc

    Sometimes Nethermind may fail with an error similar the following:

    Corruption: block checksum mismatch: expected 2087346143, got 2983326672 in... 

    This tends to happen on XFS file systems under very high memory pressure. The issue can be mitigated by using the --Db.UseDirectIoForFlushAndCompactions true option although at the cost of performance.

    -

    However, quite often, this is because of memory module issues.

    +

    However, quite often, this is because of memory module issues.

    \ No newline at end of file diff --git a/1.26.0/validators/aura/index.html b/1.26.0/validators/aura/index.html index 6ca6b0754..0afe166f9 100644 --- a/1.26.0/validators/aura/index.html +++ b/1.26.0/validators/aura/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Aura-based validators

    This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.

    @@ -40,6 +40,6 @@

    Runnin

    The above Docker Compose file can be run from the directory the docker-compose.yml is located in as follows:

    docker-compose up -d

    To check the logs and verify the sealing of blocks, run:

    -
    docker-compose logs -f nethermind-validator

    +
    docker-compose logs -f nethermind-validator
    \ No newline at end of file diff --git a/1.26.0/validators/index.html b/1.26.0/validators/index.html index 32a5fc6f6..316aa8b22 100644 --- a/1.26.0/validators/index.html +++ b/1.26.0/validators/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.26.0

    Validators

    General considerations

    @@ -44,6 +44,6 @@

    GCPMultiple validators on the c2d-highmem-4 instance: 4 vCPU, 32 GB memory

    These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on e2-small instances.

    Gnosis validators

    -

    To set up a Gnosis Chain validator, you can either do that manually or use one of the available one-click tools.

    +

    To set up a Gnosis Chain validator, you can either do that manually or use one of the available one-click tools.

    \ No newline at end of file diff --git a/1.27.0/developers/building-from-source/index.html b/1.27.0/developers/building-from-source/index.html index 5f8f08f42..13df416b3 100644 --- a/1.27.0/developers/building-from-source/index.html +++ b/1.27.0/developers/building-from-source/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Building from source

    The Nethermind's source code can be obtained from our repository on @@ -44,6 +44,6 @@

    Bulding

    To build Nethermind Docker image, run the following command from the project's root directory:

    docker build -t nethermind .

    For more info about running Docker containers, -see Installing Nethermind.

    +see Installing Nethermind.

    \ No newline at end of file diff --git a/1.27.0/developers/custom-analytic-tools/index.html b/1.27.0/developers/custom-analytic-tools/index.html index 30896f226..be3068656 100644 --- a/1.27.0/developers/custom-analytic-tools/index.html +++ b/1.27.0/developers/custom-analytic-tools/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Custom analytic tools

    warning

    This article is outdated and requires a revision.

    @@ -25,6 +25,6 @@ branches if you wish so:

        public class RewardsVerifier : IBlockTreeVisitor
    {
    private ILogger _logger;
    public bool PreventsAcceptingNewBlocks => true;
    public long StartLevelInclusive => 0;
    public long EndLevelExclusive => 10618000;

    private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");
    private UInt256 _uncles;
    private UInt256 _blockRewards;

    public RewardsVerifier(ILogManager logManager)
    {
    _logger = logManager.GetClassLogger();
    }

    private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);

    public Task<BlockVisitOutcome> VisitBlock(Block block, CancellationToken cancellationToken)
    {
    BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);
    for (int i = 0; i < rewards.Length; i++)
    {
    if (rewards[i].RewardType == BlockRewardType.Uncle)
    {
    _uncles += rewards[i].Value;
    }
    else
    {
    _blockRewards += rewards[i].Value;
    }
    }

    _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");
    return Task.FromResult(BlockVisitOutcome.None);
    }

    public Task<LevelVisitOutcome> VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)
    => Task.FromResult(LevelVisitOutcome.None);

    public Task<bool> VisitMissing(Keccak hash, CancellationToken cancellationToken)
    => Task.FromResult(true);

    public Task<bool> VisitHeader(BlockHeader header, CancellationToken cancellationToken)
    => Task.FromResult(true);

    public Task<LevelVisitOutcome> VisitLevelEnd(CancellationToken cancellationToken)
    => Task.FromResult(LevelVisitOutcome.None);
    }

    And here you will find an example of a tree visitor that sums up all the account balances:

    -
        public class SupplyVerifier : ITreeVisitor
    {
    private readonly ILogger _logger;
    private UInt256 _balance = UInt256.Zero;
    private int _accountsVisited;

    public SupplyVerifier(ILogger logger)
    {
    _logger = logger;
    }

    public bool ShouldVisit(Keccak nextNode) { return true; }

    public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }

    public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }

    public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }

    public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }

    public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
    {
    if (trieVisitContext.IsStorage)
    {
    return;
    }

    AccountDecoder accountDecoder = new AccountDecoder();
    Account account = accountDecoder.Decode(node.Value.AsRlpStream());
    _balance += account.Balance;
    _accountsVisited++;

    _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");
    }

    public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }
    }
    +
        public class SupplyVerifier : ITreeVisitor
    {
    private readonly ILogger _logger;
    private UInt256 _balance = UInt256.Zero;
    private int _accountsVisited;

    public SupplyVerifier(ILogger logger)
    {
    _logger = logger;
    }

    public bool ShouldVisit(Keccak nextNode) { return true; }

    public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }

    public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }

    public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }

    public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }

    public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
    {
    if (trieVisitContext.IsStorage)
    {
    return;
    }

    AccountDecoder accountDecoder = new AccountDecoder();
    Account account = accountDecoder.Decode(node.Value.AsRlpStream());
    _balance += account.Balance;
    _accountsVisited++;

    _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");
    }

    public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }
    }
    \ No newline at end of file diff --git a/1.27.0/developers/plugins/index.html b/1.27.0/developers/plugins/index.html index e27f34600..1e457b926 100644 --- a/1.27.0/developers/plugins/index.html +++ b/1.27.0/developers/plugins/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Plugins

    warning

    This article is outdated and requires a revision.

    @@ -32,6 +32,6 @@

    Config plugin example:

    public class AnalyticsConfig : IAnalyticsConfig
    {
    public bool PluginsEnabled { get; set; }
    public bool StreamTransactions { get; set; }
    public bool StreamBlocks { get; set; }
    public bool LogPublishedData { get; set; }
    }

    State Tree Visitor example:

    -
    public class SupplyVerifier : ITreeVisitor
    {
    private readonly ILogger _logger;
    private HashSet<Keccak> _ignoreThisOne = new HashSet<Keccak>();
    private int _accountsVisited;
    private int _nodesVisited;

    public SupplyVerifier(ILogger logger)
    {
    _logger = logger;
    }

    public UInt256 Balance { get; set; } = UInt256.Zero;

    public bool ShouldVisit(Keccak nextNode)
    {
    if (_ignoreThisOne.Count > 16)
    {
    _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");
    }

    if (_ignoreThisOne.Contains(nextNode))
    {
    _ignoreThisOne.Remove(nextNode);
    return false;
    }

    return true;
    }

    public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)
    {
    }

    public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)
    {
    _logger.Warn($"Missing node {nodeHash}");
    }

    public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)
    {
    _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
    _nodesVisited++;

    if (trieVisitContext.IsStorage)
    {
    for (int i = 0; i < 16; i++)
    {
    Keccak childHash = node.GetChildHash(i);
    if (childHash != null)
    {
    _ignoreThisOne.Add(childHash);
    }
    }
    }
    }

    public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)
    {
    _nodesVisited++;
    if (trieVisitContext.IsStorage)
    {
    _ignoreThisOne.Add(node.GetChildHash(0));
    }
    }

    public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
    {
    _nodesVisited++;

    if (trieVisitContext.IsStorage)
    {
    return;
    }

    AccountDecoder accountDecoder = new AccountDecoder();
    Account account = accountDecoder.Decode(node.Value.AsRlpStream());
    Balance += account.Balance;
    _accountsVisited++;

    _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
    }

    public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)
    {
    _nodesVisited++;
    }
    }
    +
    public class SupplyVerifier : ITreeVisitor
    {
    private readonly ILogger _logger;
    private HashSet<Keccak> _ignoreThisOne = new HashSet<Keccak>();
    private int _accountsVisited;
    private int _nodesVisited;

    public SupplyVerifier(ILogger logger)
    {
    _logger = logger;
    }

    public UInt256 Balance { get; set; } = UInt256.Zero;

    public bool ShouldVisit(Keccak nextNode)
    {
    if (_ignoreThisOne.Count > 16)
    {
    _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");
    }

    if (_ignoreThisOne.Contains(nextNode))
    {
    _ignoreThisOne.Remove(nextNode);
    return false;
    }

    return true;
    }

    public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)
    {
    }

    public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)
    {
    _logger.Warn($"Missing node {nodeHash}");
    }

    public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)
    {
    _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
    _nodesVisited++;

    if (trieVisitContext.IsStorage)
    {
    for (int i = 0; i < 16; i++)
    {
    Keccak childHash = node.GetChildHash(i);
    if (childHash != null)
    {
    _ignoreThisOne.Add(childHash);
    }
    }
    }
    }

    public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)
    {
    _nodesVisited++;
    if (trieVisitContext.IsStorage)
    {
    _ignoreThisOne.Add(node.GetChildHash(0));
    }
    }

    public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
    {
    _nodesVisited++;

    if (trieVisitContext.IsStorage)
    {
    return;
    }

    AccountDecoder accountDecoder = new AccountDecoder();
    Account account = accountDecoder.Decode(node.Value.AsRlpStream());
    Balance += account.Balance;
    _accountsVisited++;

    _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
    }

    public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)
    {
    _nodesVisited++;
    }
    }
    \ No newline at end of file diff --git a/1.27.0/faq/index.html b/1.27.0/faq/index.html index 1d2e6b255..1753eac23 100644 --- a/1.27.0/faq/index.html +++ b/1.27.0/faq/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +--JsonRpc.EnginePort 8552 --JsonRpc.Port 8546 --Network.P2PPort 30304 --Network.DiscoveryPort 30304

    \ No newline at end of file diff --git a/1.27.0/fundamentals/configuration/index.html b/1.27.0/fundamentals/configuration/index.html index 922800650..0abe371a3 100644 --- a/1.27.0/fundamentals/configuration/index.html +++ b/1.27.0/fundamentals/configuration/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Configuration

    Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:

    @@ -1173,6 +1173,6 @@

    Enviro
    NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}

    For instance, the environment variable equivalent of the command line --JsonRpc.JwtSecretFile option is NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE. For the list of configuration namespaces and their options, see Options by namespaces.

    Configuration file

    -

    The configuration file is a JSON file with .cfg extension. The bundled configuration files are located in the configs directory and named after the network they are used for. For instance, see the Mainnet configuration file mainnet.cfg.

    +

    The configuration file is a JSON file with .cfg extension. The bundled configuration files are located in the configs directory and named after the network they are used for. For instance, see the Mainnet configuration file mainnet.cfg.

    \ No newline at end of file diff --git a/1.27.0/fundamentals/database/index.html b/1.27.0/fundamentals/database/index.html index 3fb33d5c3..438b99d01 100644 --- a/1.27.0/fundamentals/database/index.html +++ b/1.27.0/fundamentals/database/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Database

    Nethermind uses the RocksDB database to store the state. By default, the database is located in the @@ -113,6 +113,6 @@

    Reduc
    MetricResyncPruningPruning and memory budget (4 GB)
    Execution time~4h~24h~12h
    Minimum free disk spaceN/A. You can execute resync even if there is 0 free space (avoid such a case).250 GB250 GB
    Attestation rate drop100%. No attestation rewards during that time or highly reduced.5–10% during that timeN/A
    Average block processing time of new blocks during the processN/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s.0.7s1.0s
    Is the node online during the process?No, unless the state is synced.Yes. The node follows the chain, and all modules are still enabled.Yes. The node follows chain and all modules are still enabled.

    The command used for testing disk IOPS was as follows:

    -
    fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw

    +
    fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw
    \ No newline at end of file diff --git a/1.27.0/fundamentals/logs/index.html b/1.27.0/fundamentals/logs/index.html index d7ebf3618..5a56ca381 100644 --- a/1.27.0/fundamentals/logs/index.html +++ b/1.27.0/fundamentals/logs/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Logs

    warning

    This article is outdated and requires a revision.

    @@ -109,6 +109,6 @@

    E
  • Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version.
  • -

    +
    \ No newline at end of file diff --git a/1.27.0/fundamentals/performance-tuning/index.html b/1.27.0/fundamentals/performance-tuning/index.html index c2eb7672a..1b8e9288d 100644 --- a/1.27.0/fundamentals/performance-tuning/index.html +++ b/1.27.0/fundamentals/performance-tuning/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Performance tuning

    By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.

    @@ -53,6 +53,6 @@

    Old

    Block processing time and attestation

    Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time. To help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option --Init.MemoryHint 2000000000. If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time.

    -

    It is also possible to disable compression of the state DB with --Db.StateDbDisableCompression true that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with --Network.MaxActivePeers 20.

    +

    It is also possible to disable compression of the state DB with --Db.StateDbDisableCompression true that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with --Network.MaxActivePeers 20.

    \ No newline at end of file diff --git a/1.27.0/fundamentals/private-networks/index.html b/1.27.0/fundamentals/private-networks/index.html index 9a99fb146..eadfba4b5 100644 --- a/1.27.0/fundamentals/private-networks/index.html +++ b/1.27.0/fundamentals/private-networks/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Private networks

    This guide will walk you through using Kurtosis ethereum-package to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's mev-boost infrastructure to simulate MEV workflows.

    @@ -47,6 +47,6 @@

    Observab

    Deploying on Kubernetes

    As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ethereum-package on Kubernetes, see Running Kurtosis in Kubernetes.

    Questions and feedback

    -

    If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on GitHub or Discord.

    +

    If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on GitHub or Discord.

    \ No newline at end of file diff --git a/1.27.0/fundamentals/pruning/index.html b/1.27.0/fundamentals/pruning/index.html index 3f622e535..4ce05fcd9 100644 --- a/1.27.0/fundamentals/pruning/index.html +++ b/1.27.0/fundamentals/pruning/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +
    \ No newline at end of file diff --git a/1.27.0/fundamentals/security/index.html b/1.27.0/fundamentals/security/index.html index 130da5bd4..d9366ea51 100644 --- a/1.27.0/fundamentals/security/index.html +++ b/1.27.0/fundamentals/security/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Security

    General security considerations

    @@ -22,6 +22,6 @@

    Networki
  • Block all traffic to the port 8545, or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources.
  • Allow traffic to the TCP port 30303 or whatever port is defined for P2P communication. This allows the node to connect to peers.
  • Allow traffic to the UDP port 30303 or whatever port ia defined for P2P communication. This allows node discovery.
  • -

    +
    \ No newline at end of file diff --git a/1.27.0/fundamentals/sync/index.html b/1.27.0/fundamentals/sync/index.html index 1e4c6603a..39040c0e0 100644 --- a/1.27.0/fundamentals/sync/index.html +++ b/1.27.0/fundamentals/sync/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Sync

    warning

    This article is outdated and requires a revision.

    @@ -359,6 +359,6 @@

    +internet connection, and the size of the blockchain.

    \ No newline at end of file diff --git a/1.27.0/get-started/consensus-clients/index.html b/1.27.0/get-started/consensus-clients/index.html index 1b61d48fb..aaca04af0 100644 --- a/1.27.0/get-started/consensus-clients/index.html +++ b/1.27.0/get-started/consensus-clients/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Consensus clients

    Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network. @@ -55,6 +55,6 @@

    TekuRunning Nethermind

    Important

    The consensus client must be running before you start Nethermind.

    nethermind \
    -c mainnet \
    --JsonRpc.JwtSecretFile path/to/jwt.hex
    -

    The command above runs Nethermind on Mainnet. For other networks, set the -c option accordingly. For more info, see Running Nethermind.

    +

    The command above runs Nethermind on Mainnet. For other networks, set the -c option accordingly. For more info, see Running Nethermind.

    \ No newline at end of file diff --git a/1.27.0/get-started/installing-nethermind/index.html b/1.27.0/get-started/installing-nethermind/index.html index 72f47330c..bafe36dbc 100644 --- a/1.27.0/get-started/installing-nethermind/index.html +++ b/1.27.0/get-started/installing-nethermind/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Installing Nethermind

    Nethermind can be installed in several ways:

    @@ -133,6 +133,6 @@

    Supported
  • OP Sepolia (testnet)
  • -

    +
    \ No newline at end of file diff --git a/1.27.0/get-started/migrating-from-geth/index.html b/1.27.0/get-started/migrating-from-geth/index.html index d91f83272..74cd36161 100644 --- a/1.27.0/get-started/migrating-from-geth/index.html +++ b/1.27.0/get-started/migrating-from-geth/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Migrating from Geth

    This guide will walk you through all the steps required for a seamless and quick transition.

    @@ -51,6 +51,6 @@

    Option 3: Remove Ge
  • Install Nethermind
  • Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings.
  • -

    Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the eth_syncing JSON-RPC method or the health check.

    +

    Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the eth_syncing JSON-RPC method or the health check.

    \ No newline at end of file diff --git a/1.27.0/get-started/system-requirements/index.html b/1.27.0/get-started/system-requirements/index.html index 91c39eeff..556a2e57f 100644 --- a/1.27.0/get-started/system-requirements/index.html +++ b/1.27.0/get-started/system-requirements/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    System requirements

    Supported operating systems

    @@ -57,6 +57,6 @@

    Sy
  • Ancient barriers. Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier.
  • Non-validator mode. This mode drops all historical receipts and bodies, but it cannot be used for validation.
  • -

    For more details, see sync modes.

    +

    For more details, see sync modes.

    \ No newline at end of file diff --git a/1.27.0/index.html b/1.27.0/index.html index 9ba449728..450ecef39 100644 --- a/1.27.0/index.html +++ b/1.27.0/index.html @@ -8,13 +8,13 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Introduction and overview

    Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.

    Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators.

    Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding.

    -

    We hope you find this documentation helpful and welcome your feedback and suggestions!

    +

    We hope you find this documentation helpful and welcome your feedback and suggestions!

    \ No newline at end of file diff --git a/1.27.0/interacting/json-rpc-ns/admin/index.html b/1.27.0/interacting/json-rpc-ns/admin/index.html index 8abbf0466..2a71ad1b1 100644 --- a/1.27.0/interacting/json-rpc-ns/admin/index.html +++ b/1.27.0/interacting/json-rpc-ns/admin/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    admin namespace

    admin_addPeer

    @@ -74,6 +74,6 @@

    admin_remov
  • removeFromStaticNodes: boolean

  • -

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "admin_removePeer",
    "params": [enode, removeFromStaticNodes]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "admin_removePeer",
    "params": [enode, removeFromStaticNodes]
    }'
    \ No newline at end of file diff --git a/1.27.0/interacting/json-rpc-ns/clique/index.html b/1.27.0/interacting/json-rpc-ns/clique/index.html index 11f43d9dd..e4d493bdb 100644 --- a/1.27.0/interacting/json-rpc-ns/clique/index.html +++ b/1.27.0/interacting/json-rpc-ns/clique/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    clique namespace

    clique_discard

    @@ -75,6 +75,6 @@

    clique_propos
  • vote: boolean

  • -

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "clique_propose",
    "params": [signer, vote]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "clique_propose",
    "params": [signer, vote]
    }'
    \ No newline at end of file diff --git a/1.27.0/interacting/json-rpc-ns/debug/index.html b/1.27.0/interacting/json-rpc-ns/debug/index.html index 4123e1b72..ee5eaf2f3 100644 --- a/1.27.0/interacting/json-rpc-ns/debug/index.html +++ b/1.27.0/interacting/json-rpc-ns/debug/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +
    \ No newline at end of file diff --git a/1.27.0/interacting/json-rpc-ns/eth/index.html b/1.27.0/interacting/json-rpc-ns/eth/index.html index 9ce781d0a..a60572cdd 100644 --- a/1.27.0/interacting/json-rpc-ns/eth/index.html +++ b/1.27.0/interacting/json-rpc-ns/eth/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    eth namespace

    eth_blobBaseFee

    @@ -969,6 +969,6 @@

    eth_unsubscr
    info

    This method is enabled by adding subscribe to --JsonRpc.EnabledModules.

    wscat -c ws://localhost:8545
    {
    "jsonrpc": "2.0",
    "id": 0,
    "method": "eth_unsubscribe",
    "params": [subscriptionId]
    }

    +
    wscat -c ws://localhost:8545
    {
    "jsonrpc": "2.0",
    "id": 0,
    "method": "eth_unsubscribe",
    "params": [subscriptionId]
    }
    \ No newline at end of file diff --git a/1.27.0/interacting/json-rpc-ns/net/index.html b/1.27.0/interacting/json-rpc-ns/net/index.html index 67208f854..b593e1972 100644 --- a/1.27.0/interacting/json-rpc-ns/net/index.html +++ b/1.27.0/interacting/json-rpc-ns/net/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    net namespace

    net_listening

    @@ -21,6 +21,6 @@

    net_localEnod

    net_peerCount

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "net_peerCount",
    "params": []
    }'

    net_version

    -
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "net_version",
    "params": []
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "net_version",
    "params": []
    }'
    \ No newline at end of file diff --git a/1.27.0/interacting/json-rpc-ns/parity/index.html b/1.27.0/interacting/json-rpc-ns/parity/index.html index 1c5510245..73ab66ead 100644 --- a/1.27.0/interacting/json-rpc-ns/parity/index.html +++ b/1.27.0/interacting/json-rpc-ns/parity/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    parity namespace

    parity_clearEngineSigner

    @@ -124,6 +124,6 @@

    parit

    parity_setEngineSignerSecret

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "parity_setEngineSignerSecret",
    "params": [privateKey]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "parity_setEngineSignerSecret",
    "params": [privateKey]
    }'
    \ No newline at end of file diff --git a/1.27.0/interacting/json-rpc-ns/personal/index.html b/1.27.0/interacting/json-rpc-ns/personal/index.html index 2122f12b6..67756ed16 100644 --- a/1.27.0/interacting/json-rpc-ns/personal/index.html +++ b/1.27.0/interacting/json-rpc-ns/personal/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    personal namespace

    personal_importRawKey

    @@ -39,6 +39,6 @@

    perso
  • passphrase: string

  • -

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "personal_unlockAccount",
    "params": [address, passphrase]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "personal_unlockAccount",
    "params": [address, passphrase]
    }'
    \ No newline at end of file diff --git a/1.27.0/interacting/json-rpc-ns/proof/index.html b/1.27.0/interacting/json-rpc-ns/proof/index.html index 8be7a1db5..e7e7fa9e0 100644 --- a/1.27.0/interacting/json-rpc-ns/proof/index.html +++ b/1.27.0/interacting/json-rpc-ns/proof/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    proof namespace

    proof_getTransactionByHash

    @@ -107,6 +107,6 @@

  • receiptProof: array of string (hex data)
  • txProof: array of string (hex data)
  • -

    +
    \ No newline at end of file diff --git a/1.27.0/interacting/json-rpc-ns/trace/index.html b/1.27.0/interacting/json-rpc-ns/trace/index.html index e0e0a076a..2d7fef182 100644 --- a/1.27.0/interacting/json-rpc-ns/trace/index.html +++ b/1.27.0/interacting/json-rpc-ns/trace/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    trace namespace

    trace_block

    @@ -573,6 +573,6 @@

    trace_tran
  • transactionHash: string (hash)
  • transactionPosition: string (hex integer)
  • type: string
  • -

    +
    \ No newline at end of file diff --git a/1.27.0/interacting/json-rpc-ns/txpool/index.html b/1.27.0/interacting/json-rpc-ns/txpool/index.html index cb844a5ae..44715492d 100644 --- a/1.27.0/interacting/json-rpc-ns/txpool/index.html +++ b/1.27.0/interacting/json-rpc-ns/txpool/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    txpool namespace

    txpool_content

    @@ -93,6 +93,6 @@

    txpool_status<
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "txpool_status",
    "params": []
    }'

    +
    \ No newline at end of file diff --git a/1.27.0/interacting/json-rpc-ns/web3/index.html b/1.27.0/interacting/json-rpc-ns/web3/index.html index 923c268a2..33a4df1ac 100644 --- a/1.27.0/interacting/json-rpc-ns/web3/index.html +++ b/1.27.0/interacting/json-rpc-ns/web3/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "web3_sha3",
    "params": [data]
    }'
    \ No newline at end of file diff --git a/1.27.0/interacting/json-rpc-server/index.html b/1.27.0/interacting/json-rpc-server/index.html index 7e79ade30..49478714c 100644 --- a/1.27.0/interacting/json-rpc-server/index.html +++ b/1.27.0/interacting/json-rpc-server/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +

    The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at keystore/jwt-secret path in its root directory. To use a different path, specify the --JsonRpc.JwtSecretFile path/to/jwt.hex command line option.

    \ No newline at end of file diff --git a/1.27.0/monitoring/health-check/index.html b/1.27.0/monitoring/health-check/index.html index 050ee4c3b..3e45eab42 100644 --- a/1.27.0/monitoring/health-check/index.html +++ b/1.27.0/monitoring/health-check/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Health check

    warning

    This article is outdated and requires a revision.

    @@ -83,6 +83,6 @@

    HealthChecks config section example

    "HealthChecks": {
    "Enabled": true,
    "WebhooksEnabled": true,
    "UIEnabled": true,
    "Slug": "/api/health",
    "MaxIntervalWithoutProcessedBlock ": 15,
    "MaxIntervalWithoutProducedBlock": 45
    }

    If those fields are not set in a config, application will try to use them based on seal engine specification. If there -is infinite time, unhealthy status can still be reported if processing or producing threads stopped.

    +is infinite time, unhealthy status can still be reported if processing or producing threads stopped.

    \ No newline at end of file diff --git a/1.27.0/monitoring/metrics/dotnet-counters/index.html b/1.27.0/monitoring/metrics/dotnet-counters/index.html index 0d8528bd4..b7e021013 100644 --- a/1.27.0/monitoring/metrics/dotnet-counters/index.html +++ b/1.27.0/monitoring/metrics/dotnet-counters/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    dotnet-counters

    This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.

    @@ -41,6 +41,6 @@

    Step
    dotnet-counters collect -n nethermind

    By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:

    dotnet-counters collect -n nethermind -f json -o /tmp/counters.json
    -

    For more info about dotnet-counters, see its official docs.

    +

    For more info about dotnet-counters, see its official docs.

    \ No newline at end of file diff --git a/1.27.0/monitoring/metrics/grafana-and-prometheus/index.html b/1.27.0/monitoring/metrics/grafana-and-prometheus/index.html index d98e49a7b..76440d768 100644 --- a/1.27.0/monitoring/metrics/grafana-and-prometheus/index.html +++ b/1.27.0/monitoring/metrics/grafana-and-prometheus/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Grafana and Prometheus

    This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.

    @@ -34,6 +34,6 @@

    Step 3
    nethermind -c mainnet --Metrics.Enabled true

    Alternatively, you may add the nethermind service to the docker-compose.yml file in the repository root to run everything altogether:

    docker-compose.yml
    nethermind:
    image: nethermind/nethermind:latest
    container_name: nethermind
    restart: unless-stopped
    ports:
    - 8545:8545
    - 8551:8551
    - 30303:30303
    ulimits:
    nofile:
    soft: 1000000
    hard: 1000000
    command: -c mainnet --Metrics.Enabled true
    volumes:
    - ./keystore:/nethermind/keystore
    - ./logs:/nethermind/logs
    - ./nethermind_db:/nethermind/nethermind_db
    -

    In this case, you may want to configure your consensus client similarly.

    +

    In this case, you may want to configure your consensus client similarly.

    \ No newline at end of file diff --git a/1.27.0/monitoring/metrics/index.html b/1.27.0/monitoring/metrics/index.html index 07a27c7ba..e113c89a7 100644 --- a/1.27.0/monitoring/metrics/index.html +++ b/1.27.0/monitoring/metrics/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Metrics

    Currently, Nethermind provides the following options to monitor and collect metrics about itself:

    @@ -629,6 +629,6 @@

    Para

    nethermind_transaction_count

    Number of transactions in pool.

    -

    +

    \ No newline at end of file diff --git a/1.27.0/troubleshooting/index.html b/1.27.0/troubleshooting/index.html index b6186600a..909173b29 100644 --- a/1.27.0/troubleshooting/index.html +++ b/1.27.0/troubleshooting/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Troubleshooting

    File descriptor limits

    @@ -38,6 +38,6 @@

    Bloc

    Sometimes Nethermind may fail with an error similar the following:

    Corruption: block checksum mismatch: expected 2087346143, got 2983326672 in... 

    This tends to happen on XFS file systems under very high memory pressure. The issue can be mitigated by using the --Db.UseDirectIoForFlushAndCompactions true option although at the cost of performance.

    -

    However, quite often, this is because of memory module issues.

    +

    However, quite often, this is because of memory module issues.

    \ No newline at end of file diff --git a/1.27.0/validators/aura/index.html b/1.27.0/validators/aura/index.html index 3071c5bb7..f0ee0ee71 100644 --- a/1.27.0/validators/aura/index.html +++ b/1.27.0/validators/aura/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Aura-based validators

    This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.

    @@ -40,6 +40,6 @@

    Runnin

    The above Docker Compose file can be run from the directory the docker-compose.yml is located in as follows:

    docker compose up -d

    To check the logs and verify the sealing of blocks, run:

    -
    docker compose logs -f nethermind-validator

    +
    docker compose logs -f nethermind-validator
    \ No newline at end of file diff --git a/1.27.0/validators/index.html b/1.27.0/validators/index.html index d0ab681a2..ded5b2e1b 100644 --- a/1.27.0/validators/index.html +++ b/1.27.0/validators/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.27.0

    Validators

    General considerations

    @@ -44,6 +44,6 @@

    GCPMultiple validators on the c2d-highmem-4 instance: 4 vCPU, 32 GB memory

    These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on e2-small instances.

    Gnosis validators

    -

    To set up a Gnosis Chain validator, see the Gnosis Chain documentation.

    +

    To set up a Gnosis Chain validator, see the Gnosis Chain documentation.

    \ No newline at end of file diff --git a/1.28.0/developers/building-from-source/index.html b/1.28.0/developers/building-from-source/index.html index ce08ffceb..2a32ea39e 100644 --- a/1.28.0/developers/building-from-source/index.html +++ b/1.28.0/developers/building-from-source/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Building from source

    The Nethermind's source code can be obtained from our repository on @@ -44,6 +44,6 @@

    Bulding

    To build Nethermind Docker image, run the following command from the project's root directory:

    docker build -t nethermind .

    For more info about running Docker containers, -see Installing Nethermind.

    +see Installing Nethermind.

    \ No newline at end of file diff --git a/1.28.0/developers/custom-analytic-tools/index.html b/1.28.0/developers/custom-analytic-tools/index.html index 5379f8844..5280b08ac 100644 --- a/1.28.0/developers/custom-analytic-tools/index.html +++ b/1.28.0/developers/custom-analytic-tools/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Custom analytic tools

    warning

    This article is outdated and requires a revision.

    @@ -25,6 +25,6 @@ branches if you wish so:

        public class RewardsVerifier : IBlockTreeVisitor
    {
    private ILogger _logger;
    public bool PreventsAcceptingNewBlocks => true;
    public long StartLevelInclusive => 0;
    public long EndLevelExclusive => 10618000;

    private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");
    private UInt256 _uncles;
    private UInt256 _blockRewards;

    public RewardsVerifier(ILogManager logManager)
    {
    _logger = logManager.GetClassLogger();
    }

    private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);

    public Task<BlockVisitOutcome> VisitBlock(Block block, CancellationToken cancellationToken)
    {
    BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);
    for (int i = 0; i < rewards.Length; i++)
    {
    if (rewards[i].RewardType == BlockRewardType.Uncle)
    {
    _uncles += rewards[i].Value;
    }
    else
    {
    _blockRewards += rewards[i].Value;
    }
    }

    _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");
    return Task.FromResult(BlockVisitOutcome.None);
    }

    public Task<LevelVisitOutcome> VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)
    => Task.FromResult(LevelVisitOutcome.None);

    public Task<bool> VisitMissing(Keccak hash, CancellationToken cancellationToken)
    => Task.FromResult(true);

    public Task<bool> VisitHeader(BlockHeader header, CancellationToken cancellationToken)
    => Task.FromResult(true);

    public Task<LevelVisitOutcome> VisitLevelEnd(CancellationToken cancellationToken)
    => Task.FromResult(LevelVisitOutcome.None);
    }

    And here you will find an example of a tree visitor that sums up all the account balances:

    -
        public class SupplyVerifier : ITreeVisitor
    {
    private readonly ILogger _logger;
    private UInt256 _balance = UInt256.Zero;
    private int _accountsVisited;

    public SupplyVerifier(ILogger logger)
    {
    _logger = logger;
    }

    public bool ShouldVisit(Keccak nextNode) { return true; }

    public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }

    public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }

    public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }

    public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }

    public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
    {
    if (trieVisitContext.IsStorage)
    {
    return;
    }

    AccountDecoder accountDecoder = new AccountDecoder();
    Account account = accountDecoder.Decode(node.Value.AsRlpStream());
    _balance += account.Balance;
    _accountsVisited++;

    _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");
    }

    public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }
    }
    +
        public class SupplyVerifier : ITreeVisitor
    {
    private readonly ILogger _logger;
    private UInt256 _balance = UInt256.Zero;
    private int _accountsVisited;

    public SupplyVerifier(ILogger logger)
    {
    _logger = logger;
    }

    public bool ShouldVisit(Keccak nextNode) { return true; }

    public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }

    public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }

    public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }

    public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }

    public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
    {
    if (trieVisitContext.IsStorage)
    {
    return;
    }

    AccountDecoder accountDecoder = new AccountDecoder();
    Account account = accountDecoder.Decode(node.Value.AsRlpStream());
    _balance += account.Balance;
    _accountsVisited++;

    _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");
    }

    public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }
    }
    \ No newline at end of file diff --git a/1.28.0/developers/plugins/index.html b/1.28.0/developers/plugins/index.html index 642f51cd3..558593658 100644 --- a/1.28.0/developers/plugins/index.html +++ b/1.28.0/developers/plugins/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Plugins

    warning

    This article is outdated and requires a revision.

    @@ -32,6 +32,6 @@

    Config plugin example:

    public class AnalyticsConfig : IAnalyticsConfig
    {
    public bool PluginsEnabled { get; set; }
    public bool StreamTransactions { get; set; }
    public bool StreamBlocks { get; set; }
    public bool LogPublishedData { get; set; }
    }

    State Tree Visitor example:

    -
    public class SupplyVerifier : ITreeVisitor
    {
    private readonly ILogger _logger;
    private HashSet<Keccak> _ignoreThisOne = new HashSet<Keccak>();
    private int _accountsVisited;
    private int _nodesVisited;

    public SupplyVerifier(ILogger logger)
    {
    _logger = logger;
    }

    public UInt256 Balance { get; set; } = UInt256.Zero;

    public bool ShouldVisit(Keccak nextNode)
    {
    if (_ignoreThisOne.Count > 16)
    {
    _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");
    }

    if (_ignoreThisOne.Contains(nextNode))
    {
    _ignoreThisOne.Remove(nextNode);
    return false;
    }

    return true;
    }

    public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)
    {
    }

    public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)
    {
    _logger.Warn($"Missing node {nodeHash}");
    }

    public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)
    {
    _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
    _nodesVisited++;

    if (trieVisitContext.IsStorage)
    {
    for (int i = 0; i < 16; i++)
    {
    Keccak childHash = node.GetChildHash(i);
    if (childHash != null)
    {
    _ignoreThisOne.Add(childHash);
    }
    }
    }
    }

    public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)
    {
    _nodesVisited++;
    if (trieVisitContext.IsStorage)
    {
    _ignoreThisOne.Add(node.GetChildHash(0));
    }
    }

    public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
    {
    _nodesVisited++;

    if (trieVisitContext.IsStorage)
    {
    return;
    }

    AccountDecoder accountDecoder = new AccountDecoder();
    Account account = accountDecoder.Decode(node.Value.AsRlpStream());
    Balance += account.Balance;
    _accountsVisited++;

    _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
    }

    public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)
    {
    _nodesVisited++;
    }
    }
    +
    public class SupplyVerifier : ITreeVisitor
    {
    private readonly ILogger _logger;
    private HashSet<Keccak> _ignoreThisOne = new HashSet<Keccak>();
    private int _accountsVisited;
    private int _nodesVisited;

    public SupplyVerifier(ILogger logger)
    {
    _logger = logger;
    }

    public UInt256 Balance { get; set; } = UInt256.Zero;

    public bool ShouldVisit(Keccak nextNode)
    {
    if (_ignoreThisOne.Count > 16)
    {
    _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");
    }

    if (_ignoreThisOne.Contains(nextNode))
    {
    _ignoreThisOne.Remove(nextNode);
    return false;
    }

    return true;
    }

    public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)
    {
    }

    public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)
    {
    _logger.Warn($"Missing node {nodeHash}");
    }

    public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)
    {
    _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
    _nodesVisited++;

    if (trieVisitContext.IsStorage)
    {
    for (int i = 0; i < 16; i++)
    {
    Keccak childHash = node.GetChildHash(i);
    if (childHash != null)
    {
    _ignoreThisOne.Add(childHash);
    }
    }
    }
    }

    public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)
    {
    _nodesVisited++;
    if (trieVisitContext.IsStorage)
    {
    _ignoreThisOne.Add(node.GetChildHash(0));
    }
    }

    public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
    {
    _nodesVisited++;

    if (trieVisitContext.IsStorage)
    {
    return;
    }

    AccountDecoder accountDecoder = new AccountDecoder();
    Account account = accountDecoder.Decode(node.Value.AsRlpStream());
    Balance += account.Balance;
    _accountsVisited++;

    _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
    }

    public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)
    {
    _nodesVisited++;
    }
    }
    \ No newline at end of file diff --git a/1.28.0/fundamentals/configuration/index.html b/1.28.0/fundamentals/configuration/index.html index 3e0e30d87..268ca631d 100644 --- a/1.28.0/fundamentals/configuration/index.html +++ b/1.28.0/fundamentals/configuration/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Configuration

    Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:

    @@ -1177,6 +1177,6 @@

    Enviro
    NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}

    For instance, the environment variable equivalent of the command line --JsonRpc.JwtSecretFile option is NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE. For the list of configuration namespaces and their options, see Options by namespaces.

    Configuration file

    -

    The configuration file is a JSON file with .cfg extension. The bundled configuration files are located in the configs directory and named after the network they are used for. For instance, see the Mainnet configuration file mainnet.cfg.

    +

    The configuration file is a JSON file with .cfg extension. The bundled configuration files are located in the configs directory and named after the network they are used for. For instance, see the Mainnet configuration file mainnet.cfg.

    \ No newline at end of file diff --git a/1.28.0/fundamentals/database/index.html b/1.28.0/fundamentals/database/index.html index 3562465b1..98c2581b9 100644 --- a/1.28.0/fundamentals/database/index.html +++ b/1.28.0/fundamentals/database/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Database

    Nethermind uses the RocksDB database to store the state. By default, the database is located in the @@ -113,6 +113,6 @@

    Reduc
    MetricResyncPruningPruning and memory budget (4 GB)
    Execution time~4h~24h~12h
    Minimum free disk spaceN/A. You can execute resync even if there is 0 free space (avoid such a case).250 GB250 GB
    Attestation rate drop100%. No attestation rewards during that time or highly reduced.5–10% during that timeN/A
    Average block processing time of new blocks during the processN/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s.0.7s1.0s
    Is the node online during the process?No, unless the state is synced.Yes. The node follows the chain, and all modules are still enabled.Yes. The node follows chain and all modules are still enabled.

    The command used for testing disk IOPS was as follows:

    -
    fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw

    +
    fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw
    \ No newline at end of file diff --git a/1.28.0/fundamentals/logs/index.html b/1.28.0/fundamentals/logs/index.html index 13b4a1819..d7143bc7a 100644 --- a/1.28.0/fundamentals/logs/index.html +++ b/1.28.0/fundamentals/logs/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Logs

    warning

    This article is outdated and requires a revision.

    @@ -109,6 +109,6 @@

    E
  • Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version.
  • -

    +
    \ No newline at end of file diff --git a/1.28.0/fundamentals/performance-tuning/index.html b/1.28.0/fundamentals/performance-tuning/index.html index f7e2222a0..635fc5f79 100644 --- a/1.28.0/fundamentals/performance-tuning/index.html +++ b/1.28.0/fundamentals/performance-tuning/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Performance tuning

    By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.

    @@ -53,6 +53,6 @@

    Old

    Block processing time and attestation

    Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time. To help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option --Init.MemoryHint 2000000000. If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time.

    -

    It is also possible to disable compression of the state DB with --Db.StateDbDisableCompression true that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with --Network.MaxActivePeers 20.

    +

    It is also possible to disable compression of the state DB with --Db.StateDbDisableCompression true that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with --Network.MaxActivePeers 20.

    \ No newline at end of file diff --git a/1.28.0/fundamentals/private-networks/index.html b/1.28.0/fundamentals/private-networks/index.html index dbf88fb7b..bfdf049cf 100644 --- a/1.28.0/fundamentals/private-networks/index.html +++ b/1.28.0/fundamentals/private-networks/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Private networks

    This guide will walk you through using Kurtosis ethereum-package to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's mev-boost infrastructure to simulate MEV workflows.

    @@ -47,6 +47,6 @@

    Observab

    Deploying on Kubernetes

    As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ethereum-package on Kubernetes, see Running Kurtosis in Kubernetes.

    Questions and feedback

    -

    If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on GitHub or Discord.

    +

    If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on GitHub or Discord.

    \ No newline at end of file diff --git a/1.28.0/fundamentals/pruning/index.html b/1.28.0/fundamentals/pruning/index.html index c05e66b11..ab0d64227 100644 --- a/1.28.0/fundamentals/pruning/index.html +++ b/1.28.0/fundamentals/pruning/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +
    \ No newline at end of file diff --git a/1.28.0/fundamentals/security/index.html b/1.28.0/fundamentals/security/index.html index d93bfa93c..c5d816987 100644 --- a/1.28.0/fundamentals/security/index.html +++ b/1.28.0/fundamentals/security/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Security

    General security considerations

    @@ -22,6 +22,6 @@

    Networki
  • Block all traffic to the port 8545, or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources.
  • Allow traffic to the TCP port 30303 or whatever port is defined for P2P communication. This allows the node to connect to peers.
  • Allow traffic to the UDP port 30303 or whatever port ia defined for P2P communication. This allows node discovery.
  • -

    +
    \ No newline at end of file diff --git a/1.28.0/fundamentals/sync/index.html b/1.28.0/fundamentals/sync/index.html index 2f5646856..ee2d6d6e8 100644 --- a/1.28.0/fundamentals/sync/index.html +++ b/1.28.0/fundamentals/sync/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Sync

    warning

    This article is outdated and requires a revision.

    @@ -359,6 +359,6 @@

    +internet connection, and the size of the blockchain.

    \ No newline at end of file diff --git a/1.28.0/get-started/consensus-clients/index.html b/1.28.0/get-started/consensus-clients/index.html index 6b29d45fd..42bae588d 100644 --- a/1.28.0/get-started/consensus-clients/index.html +++ b/1.28.0/get-started/consensus-clients/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Consensus clients

    Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network. @@ -55,6 +55,6 @@

    TekuRunning Nethermind

    Important

    The consensus client must be running before you start Nethermind.

    nethermind \
    -c mainnet \
    --JsonRpc.JwtSecretFile path/to/jwt.hex
    -

    The command above runs Nethermind on Mainnet. For other networks, set the -c option accordingly. For more info, see Running Nethermind.

    +

    The command above runs Nethermind on Mainnet. For other networks, set the -c option accordingly. For more info, see Running Nethermind.

    \ No newline at end of file diff --git a/1.28.0/get-started/installing-nethermind/index.html b/1.28.0/get-started/installing-nethermind/index.html index 7ebb0d1a4..9376cf708 100644 --- a/1.28.0/get-started/installing-nethermind/index.html +++ b/1.28.0/get-started/installing-nethermind/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Installing Nethermind

    Nethermind can be installed in several ways:

    @@ -133,6 +133,6 @@

    Supported
  • OP Sepolia (testnet)
  • -

    +
    \ No newline at end of file diff --git a/1.28.0/get-started/migrating-from-geth/index.html b/1.28.0/get-started/migrating-from-geth/index.html index 47502709b..64e1de6b4 100644 --- a/1.28.0/get-started/migrating-from-geth/index.html +++ b/1.28.0/get-started/migrating-from-geth/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Migrating from Geth

    This guide will walk you through all the steps required for a seamless and quick transition.

    @@ -51,6 +51,6 @@

    Option 3: Remove Ge
  • Install Nethermind
  • Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings.
  • -

    Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the eth_syncing JSON-RPC method or the health check.

    +

    Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the eth_syncing JSON-RPC method or the health check.

    \ No newline at end of file diff --git a/1.28.0/get-started/system-requirements/index.html b/1.28.0/get-started/system-requirements/index.html index a675c6c99..f4db82e7b 100644 --- a/1.28.0/get-started/system-requirements/index.html +++ b/1.28.0/get-started/system-requirements/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    System requirements

    Supported operating systems

    @@ -57,6 +57,6 @@

    Sy
  • Ancient barriers. Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier.
  • Non-validator mode. This mode drops all historical receipts and bodies, but it cannot be used for validation.
  • -

    For more details, see sync modes.

    +

    For more details, see sync modes.

    \ No newline at end of file diff --git a/1.28.0/index.html b/1.28.0/index.html index 2885566f6..46e11766c 100644 --- a/1.28.0/index.html +++ b/1.28.0/index.html @@ -8,13 +8,13 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Introduction and overview

    Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.

    Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators.

    Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding.

    -

    We hope you find this documentation helpful and welcome your feedback and suggestions!

    +

    We hope you find this documentation helpful and welcome your feedback and suggestions!

    \ No newline at end of file diff --git a/1.28.0/interacting/json-rpc-ns/admin/index.html b/1.28.0/interacting/json-rpc-ns/admin/index.html index 6f6a0507a..60be99f99 100644 --- a/1.28.0/interacting/json-rpc-ns/admin/index.html +++ b/1.28.0/interacting/json-rpc-ns/admin/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    admin namespace

    admin_addPeer

    @@ -74,6 +74,6 @@

    admin_remov
  • removeFromStaticNodes: boolean

  • -

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "admin_removePeer",
    "params": [enode, removeFromStaticNodes]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "admin_removePeer",
    "params": [enode, removeFromStaticNodes]
    }'
    \ No newline at end of file diff --git a/1.28.0/interacting/json-rpc-ns/clique/index.html b/1.28.0/interacting/json-rpc-ns/clique/index.html index 2bd5389ed..a6b4c0554 100644 --- a/1.28.0/interacting/json-rpc-ns/clique/index.html +++ b/1.28.0/interacting/json-rpc-ns/clique/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    clique namespace

    clique_discard

    @@ -75,6 +75,6 @@

    clique_propos
  • vote: boolean

  • -

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "clique_propose",
    "params": [signer, vote]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "clique_propose",
    "params": [signer, vote]
    }'
    \ No newline at end of file diff --git a/1.28.0/interacting/json-rpc-ns/debug/index.html b/1.28.0/interacting/json-rpc-ns/debug/index.html index cc0d835e5..b221db277 100644 --- a/1.28.0/interacting/json-rpc-ns/debug/index.html +++ b/1.28.0/interacting/json-rpc-ns/debug/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +
    \ No newline at end of file diff --git a/1.28.0/interacting/json-rpc-ns/eth/index.html b/1.28.0/interacting/json-rpc-ns/eth/index.html index 936775887..40638fcd2 100644 --- a/1.28.0/interacting/json-rpc-ns/eth/index.html +++ b/1.28.0/interacting/json-rpc-ns/eth/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    eth namespace

    eth_blobBaseFee

    @@ -1072,6 +1072,6 @@

    eth_unsubscr
    info

    This method is enabled by adding subscribe to --JsonRpc.EnabledModules.

    wscat -c ws://localhost:8545
    {
    "jsonrpc": "2.0",
    "id": 0,
    "method": "eth_unsubscribe",
    "params": [subscriptionId]
    }

    +
    wscat -c ws://localhost:8545
    {
    "jsonrpc": "2.0",
    "id": 0,
    "method": "eth_unsubscribe",
    "params": [subscriptionId]
    }
    \ No newline at end of file diff --git a/1.28.0/interacting/json-rpc-ns/net/index.html b/1.28.0/interacting/json-rpc-ns/net/index.html index 51160a20a..bd682a4d8 100644 --- a/1.28.0/interacting/json-rpc-ns/net/index.html +++ b/1.28.0/interacting/json-rpc-ns/net/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    net namespace

    net_listening

    @@ -21,6 +21,6 @@

    net_localEnod

    net_peerCount

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "net_peerCount",
    "params": []
    }'

    net_version

    -
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "net_version",
    "params": []
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "net_version",
    "params": []
    }'
    \ No newline at end of file diff --git a/1.28.0/interacting/json-rpc-ns/parity/index.html b/1.28.0/interacting/json-rpc-ns/parity/index.html index ec9b6f500..57f2f3b0f 100644 --- a/1.28.0/interacting/json-rpc-ns/parity/index.html +++ b/1.28.0/interacting/json-rpc-ns/parity/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    parity namespace

    parity_clearEngineSigner

    @@ -124,6 +124,6 @@

    parit

    parity_setEngineSignerSecret

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "parity_setEngineSignerSecret",
    "params": [privateKey]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "parity_setEngineSignerSecret",
    "params": [privateKey]
    }'
    \ No newline at end of file diff --git a/1.28.0/interacting/json-rpc-ns/personal/index.html b/1.28.0/interacting/json-rpc-ns/personal/index.html index bd0a16ef1..7591e3226 100644 --- a/1.28.0/interacting/json-rpc-ns/personal/index.html +++ b/1.28.0/interacting/json-rpc-ns/personal/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    personal namespace

    personal_importRawKey

    @@ -39,6 +39,6 @@

    perso
  • passphrase: string

  • -

    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "personal_unlockAccount",
    "params": [address, passphrase]
    }'
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "personal_unlockAccount",
    "params": [address, passphrase]
    }'
    \ No newline at end of file diff --git a/1.28.0/interacting/json-rpc-ns/proof/index.html b/1.28.0/interacting/json-rpc-ns/proof/index.html index 5ef062da1..3392a01d1 100644 --- a/1.28.0/interacting/json-rpc-ns/proof/index.html +++ b/1.28.0/interacting/json-rpc-ns/proof/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    proof namespace

    proof_getTransactionByHash

    @@ -107,6 +107,6 @@

  • receiptProof: array of string (hex data)
  • txProof: array of string (hex data)
  • -

    +
    \ No newline at end of file diff --git a/1.28.0/interacting/json-rpc-ns/trace/index.html b/1.28.0/interacting/json-rpc-ns/trace/index.html index ab3555219..ec7eefd08 100644 --- a/1.28.0/interacting/json-rpc-ns/trace/index.html +++ b/1.28.0/interacting/json-rpc-ns/trace/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    trace namespace

    trace_block

    @@ -573,6 +573,6 @@

    trace_tran
  • transactionHash: string (hash)
  • transactionPosition: string (hex integer)
  • type: string
  • -

    +
    \ No newline at end of file diff --git a/1.28.0/interacting/json-rpc-ns/txpool/index.html b/1.28.0/interacting/json-rpc-ns/txpool/index.html index 8b99286a3..1f3bf5c9c 100644 --- a/1.28.0/interacting/json-rpc-ns/txpool/index.html +++ b/1.28.0/interacting/json-rpc-ns/txpool/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    txpool namespace

    txpool_content

    @@ -93,6 +93,6 @@

    txpool_status<
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "txpool_status",
    "params": []
    }'

    +
    \ No newline at end of file diff --git a/1.28.0/interacting/json-rpc-ns/web3/index.html b/1.28.0/interacting/json-rpc-ns/web3/index.html index 8c01f65c3..7ad371ac4 100644 --- a/1.28.0/interacting/json-rpc-ns/web3/index.html +++ b/1.28.0/interacting/json-rpc-ns/web3/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +
    curl localhost:8545 \
    -X POST \
    -H "Content-Type: application/json" \
    --data '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "web3_sha3",
    "params": [data]
    }'
    \ No newline at end of file diff --git a/1.28.0/interacting/json-rpc-server/index.html b/1.28.0/interacting/json-rpc-server/index.html index 06e63bc28..e86b4ca7f 100644 --- a/1.28.0/interacting/json-rpc-server/index.html +++ b/1.28.0/interacting/json-rpc-server/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    +

    The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at keystore/jwt-secret path in its root directory. To use a different path, specify the --JsonRpc.JwtSecretFile path/to/jwt.hex command line option.

    \ No newline at end of file diff --git a/1.28.0/monitoring/health-check/index.html b/1.28.0/monitoring/health-check/index.html index 0367205be..53a515c2c 100644 --- a/1.28.0/monitoring/health-check/index.html +++ b/1.28.0/monitoring/health-check/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Health check

    warning

    This article is outdated and requires a revision.

    @@ -83,6 +83,6 @@

    HealthChecks config section example

    "HealthChecks": {
    "Enabled": true,
    "WebhooksEnabled": true,
    "UIEnabled": true,
    "Slug": "/api/health",
    "MaxIntervalWithoutProcessedBlock ": 15,
    "MaxIntervalWithoutProducedBlock": 45
    }

    If those fields are not set in a config, application will try to use them based on seal engine specification. If there -is infinite time, unhealthy status can still be reported if processing or producing threads stopped.

    +is infinite time, unhealthy status can still be reported if processing or producing threads stopped.

    \ No newline at end of file diff --git a/1.28.0/monitoring/metrics/dotnet-counters/index.html b/1.28.0/monitoring/metrics/dotnet-counters/index.html index dd6f5949b..a2e12bd46 100644 --- a/1.28.0/monitoring/metrics/dotnet-counters/index.html +++ b/1.28.0/monitoring/metrics/dotnet-counters/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    dotnet-counters

    This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.

    @@ -41,6 +41,6 @@

    Step
    dotnet-counters collect -n nethermind

    By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:

    dotnet-counters collect -n nethermind -f json -o /tmp/counters.json
    -

    For more info about dotnet-counters, see its official docs.

    +

    For more info about dotnet-counters, see its official docs.

    \ No newline at end of file diff --git a/1.28.0/monitoring/metrics/grafana-and-prometheus/index.html b/1.28.0/monitoring/metrics/grafana-and-prometheus/index.html index 544e27838..d7d7b8cc4 100644 --- a/1.28.0/monitoring/metrics/grafana-and-prometheus/index.html +++ b/1.28.0/monitoring/metrics/grafana-and-prometheus/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Grafana and Prometheus

    This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.

    @@ -34,6 +34,6 @@

    Step 3
    nethermind -c mainnet --Metrics.Enabled true

    Alternatively, you may add the nethermind service to the docker-compose.yml file in the repository root to run everything altogether:

    docker-compose.yml
    nethermind:
    image: nethermind/nethermind:latest
    container_name: nethermind
    restart: unless-stopped
    ports:
    - 8545:8545
    - 8551:8551
    - 30303:30303
    ulimits:
    nofile:
    soft: 1000000
    hard: 1000000
    command: -c mainnet --Metrics.Enabled true
    volumes:
    - ./keystore:/nethermind/keystore
    - ./logs:/nethermind/logs
    - ./nethermind_db:/nethermind/nethermind_db
    -

    In this case, you may want to configure your consensus client similarly.

    +

    In this case, you may want to configure your consensus client similarly.

    \ No newline at end of file diff --git a/1.28.0/monitoring/metrics/index.html b/1.28.0/monitoring/metrics/index.html index b4bf6b8f1..cf029377b 100644 --- a/1.28.0/monitoring/metrics/index.html +++ b/1.28.0/monitoring/metrics/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Metrics

    Currently, Nethermind provides the following options to monitor and collect metrics about itself:

    @@ -633,6 +633,6 @@

    Para

    nethermind_transaction_count

    Number of transactions in pool.

    -

    +

    \ No newline at end of file diff --git a/1.28.0/troubleshooting/index.html b/1.28.0/troubleshooting/index.html index a05f1b38d..426271612 100644 --- a/1.28.0/troubleshooting/index.html +++ b/1.28.0/troubleshooting/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Troubleshooting

    File descriptor limits

    @@ -49,6 +49,6 @@

    Bloc

    However, quite often, this is because of memory module issues.

    Plugin loading failure

    If Nethermind fails to start with a message like Failed to load plugin..., this is most likely due to a missing or incompatible plugin. Reinstalling Nethermind usually fixes the issue.

    -
    tip

    If you install Nethermind over an existing installation, remove the old installation first, particularly the plugins directory. Package managers do this automatically.

    +
    tip

    If you install Nethermind over an existing installation, remove the old installation first, particularly the plugins directory. Package managers do this automatically.

    \ No newline at end of file diff --git a/1.28.0/validators/aura/index.html b/1.28.0/validators/aura/index.html index 2ecc3f95a..d57a3eb3b 100644 --- a/1.28.0/validators/aura/index.html +++ b/1.28.0/validators/aura/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Aura-based validators

    This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.

    @@ -40,6 +40,6 @@

    Runnin

    The above Docker Compose file can be run from the directory the docker-compose.yml is located in as follows:

    docker compose up -d

    To check the logs and verify the sealing of blocks, run:

    -
    docker compose logs -f nethermind-validator

    +
    docker compose logs -f nethermind-validator
    \ No newline at end of file diff --git a/1.28.0/validators/index.html b/1.28.0/validators/index.html index f2d634a29..7eecf0cf5 100644 --- a/1.28.0/validators/index.html +++ b/1.28.0/validators/index.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content
    Version: 1.28.0

    Validators

    General considerations

    @@ -44,6 +44,6 @@

    GCPMultiple validators on the c2d-highmem-4 instance: 4 vCPU, 32 GB memory

    These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on e2-small instances.

    Gnosis validators

    -

    To set up a Gnosis Chain validator, see the Gnosis Chain documentation.

    +

    To set up a Gnosis Chain validator, see the Gnosis Chain documentation.

    \ No newline at end of file diff --git a/404.html b/404.html index e8c0aa173..cbcb867ec 100644 --- a/404.html +++ b/404.html @@ -8,8 +8,8 @@ - - + +
    Skip to main content

    Page Not Found

    We could not find what you were looking for.

    Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

    diff --git a/assets/js/0089a00e.a54903ff.js b/assets/js/0089a00e.af62ab86.js similarity index 97% rename from assets/js/0089a00e.a54903ff.js rename to assets/js/0089a00e.af62ab86.js index 8ac8f4b2f..332c7cb09 100644 --- a/assets/js/0089a00e.a54903ff.js +++ b/assets/js/0089a00e.af62ab86.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8404],{2175:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=t(4848),r=t(8453);const o={title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},a=void 0,s={id:"get-started/intro",title:"Introduction and overview",description:"Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.",source:"@site/versioned_docs/version-1.26.0/get-started/intro.md",sourceDirName:"get-started",slug:"/",permalink:"/1.26.0/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/get-started/intro.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},sidebar:"tutorialSidebar",next:{title:"System requirements",permalink:"/1.26.0/get-started/system-requirements"}},d={},c=[];function u(e){const n={a:"a",p:"p",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Nethermind is a high-performance, highly configurable Ethereum execution client built on ",(0,i.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/",children:".NET"})," that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with ",(0,i.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,i.jsx)(n.a,{href:"https://datalust.co/seq",children:"Seq"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators."}),"\n",(0,i.jsx)(n.p,{children:"Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding."}),"\n",(0,i.jsx)(n.p,{children:"We hope you find this documentation helpful and welcome your feedback and suggestions!"})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var i=t(6540);const r={},o=i.createContext(r);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8404],{2175:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=t(4848),r=t(8453);const o={title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},a=void 0,s={id:"get-started/intro",title:"Introduction and overview",description:"Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.",source:"@site/versioned_docs/version-1.26.0/get-started/intro.md",sourceDirName:"get-started",slug:"/",permalink:"/1.26.0/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/get-started/intro.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},sidebar:"tutorialSidebar",next:{title:"System requirements",permalink:"/1.26.0/get-started/system-requirements"}},d={},c=[];function u(e){const n={a:"a",p:"p",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Nethermind is a high-performance, highly configurable Ethereum execution client built on ",(0,i.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/",children:".NET"})," that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with ",(0,i.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,i.jsx)(n.a,{href:"https://datalust.co/seq",children:"Seq"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators."}),"\n",(0,i.jsx)(n.p,{children:"Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding."}),"\n",(0,i.jsx)(n.p,{children:"We hope you find this documentation helpful and welcome your feedback and suggestions!"})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var i=t(6540);const r={},o=i.createContext(r);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/012570d0.2c3065e9.js b/assets/js/012570d0.2c3065e9.js new file mode 100644 index 000000000..ceb3c22b4 --- /dev/null +++ b/assets/js/012570d0.2c3065e9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2524],{6486:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),r=t(8453);const i={title:"dotnet-counters",sidebar_position:1},s=void 0,c={id:"monitoring/metrics/dotnet-counters",title:"dotnet-counters",description:"This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.",source:"@site/docs/monitoring/metrics/dotnet-counters.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/dotnet-counters",permalink:"/next/monitoring/metrics/dotnet-counters",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/monitoring/metrics/dotnet-counters.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"dotnet-counters",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Grafana and Prometheus",permalink:"/next/monitoring/metrics/grafana-and-prometheus"},next:{title:"Health check",permalink:"/next/monitoring/health-check"}},l={},d=[{value:"Step 1: Install dotnet-counters",id:"step-1-install-dotnet-counters",level:2},{value:"Installing locally",id:"installing-locally",level:3},{value:"Installing in a Docker container",id:"installing-in-a-docker-container",level:3},{value:"Step 2: Run Nethermind",id:"step-2-run-nethermind",level:2},{value:"Running locally",id:"running-locally",level:3},{value:"Running in a Docker container",id:"running-in-a-docker-container",level:3},{value:"Step 3: Collect metrics",id:"step-3-collect-metrics",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["This guide will walk you through setting up performance counters using the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"dotnet-counters"})," performance monitoring tool that observes counters published via the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventcounter",children:"EventCounters API"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"step-1-install-dotnet-counters",children:"Step 1: Install dotnet-counters"}),"\n",(0,o.jsx)(n.p,{children:"dotnet-counters can be either installed locally or in a Docker container."}),"\n",(0,o.jsx)(n.h3,{id:"installing-locally",children:"Installing locally"}),"\n",(0,o.jsx)(n.p,{children:"Use the dotnet tool install command as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet tool install -g dotnet-counters\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Once installed, you can run the tool from the command line by typing ",(0,o.jsx)(n.code,{children:"dotnet-counters"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"installing-in-a-docker-container",children:"Installing in a Docker container"}),"\n",(0,o.jsx)(n.p,{children:"To install dotnet-counters in a Docker container, create a Dockerfile with the following content:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-docker",metastring:'title="Dockerfile"',children:'FROM mcr.microsoft.com/dotnet/sdk:8.0\n\nRUN dotnet tool install -g dotnet-counters\n\nENV PATH="$PATH:/root/.dotnet/tools"\n\nENTRYPOINT ["/bin/bash"]\n'})}),"\n",(0,o.jsx)(n.p,{children:"Then, build the Docker image:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker build -t dotnet-counters .\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-2-run-nethermind",children:"Step 2: Run Nethermind"}),"\n",(0,o.jsxs)(n.p,{children:["To enable performance counters in Nethermind, set the ",(0,o.jsx)(n.a,{href:"/next/fundamentals/configuration#metrics-countersenabled",children:(0,o.jsx)(n.code,{children:"Metrics.CountersEnabled"})})," configuration option to ",(0,o.jsx)(n.code,{children:"true"}),". For more options, see the ",(0,o.jsx)(n.a,{href:"/next/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,o.jsx)(n.admonition,{type:"tip",children:(0,o.jsxs)(n.p,{children:["See ",(0,o.jsx)(n.a,{href:"/next/get-started/running-node/",children:"Running a node"})," for more information on how to run Nethermind."]})}),"\n",(0,o.jsx)(n.h3,{id:"running-locally",children:"Running locally"}),"\n",(0,o.jsx)(n.p,{children:"Run Nethermind as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --Metrics.CountersEnabled true\n"})}),"\n",(0,o.jsx)(n.h3,{id:"running-in-a-docker-container",children:"Running in a Docker container"}),"\n",(0,o.jsxs)(n.p,{children:["The easiest way of collecting metrics in a Docker container is to use Docker Compose. Below, we use the Nethermind official Docker image and the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," image we created earlier:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n\n dotnet-counters:\n image: dotnet-counters\n container_name: dotnet-counters\n stdin_open: true\n tty: true\n pid: service:nethermind\n volumes:\n - metrics:/tmp\n depends_on:\n - nethermind\n\n nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n command: -c mainnet --Metrics.CountersEnabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n - metrics:/tmp\n\nvolumes:\n metrics:\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:["dotnet-counters uses IPC socket communication to monitor the target process. For this, we use the ",(0,o.jsx)(n.code,{children:"metrics"})," volume to share the IPC socket directory with the ",(0,o.jsx)(n.code,{children:"nethermind"})," and ",(0,o.jsx)(n.code,{children:"dotnet-counter"})," services. The ",(0,o.jsx)(n.code,{children:"pid"})," option in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," service is used to share the PID namespace with the ",(0,o.jsx)(n.code,{children:"nethermind"})," service. This is necessary for ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," to be able to see the Nethermind process."]})}),"\n",(0,o.jsx)(n.p,{children:"We can run the above file as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-3-collect-metrics",children:"Step 3: Collect metrics"}),"\n",(0,o.jsxs)(n.p,{children:["Once dotnet-counters is installed and Nethermind is running, we can start collecting the metrics. If you chose to collect metrics in the containers, run the following command in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," container:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind\n"})}),"\n",(0,o.jsx)(n.p,{children:"By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind -f json -o /tmp/counters.json\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For more info about dotnet-counters, see its ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"official docs"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>c});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/012570d0.4e6b3e0b.js b/assets/js/012570d0.4e6b3e0b.js deleted file mode 100644 index 480ed16ed..000000000 --- a/assets/js/012570d0.4e6b3e0b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2524],{6486:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),r=t(8453);const i={title:"dotnet-counters",sidebar_position:1},s=void 0,c={id:"monitoring/metrics/dotnet-counters",title:"dotnet-counters",description:"This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.",source:"@site/docs/monitoring/metrics/dotnet-counters.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/dotnet-counters",permalink:"/next/monitoring/metrics/dotnet-counters",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/monitoring/metrics/dotnet-counters.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"dotnet-counters",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Grafana and Prometheus",permalink:"/next/monitoring/metrics/grafana-and-prometheus"},next:{title:"Health check",permalink:"/next/monitoring/health-check"}},l={},d=[{value:"Step 1: Install dotnet-counters",id:"step-1-install-dotnet-counters",level:2},{value:"Installing locally",id:"installing-locally",level:3},{value:"Installing in a Docker container",id:"installing-in-a-docker-container",level:3},{value:"Step 2: Run Nethermind",id:"step-2-run-nethermind",level:2},{value:"Running locally",id:"running-locally",level:3},{value:"Running in a Docker container",id:"running-in-a-docker-container",level:3},{value:"Step 3: Collect metrics",id:"step-3-collect-metrics",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["This guide will walk you through setting up performance counters using the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"dotnet-counters"})," performance monitoring tool that observes counters published via the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventcounter",children:"EventCounters API"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"step-1-install-dotnet-counters",children:"Step 1: Install dotnet-counters"}),"\n",(0,o.jsx)(n.p,{children:"dotnet-counters can be either installed locally or in a Docker container."}),"\n",(0,o.jsx)(n.h3,{id:"installing-locally",children:"Installing locally"}),"\n",(0,o.jsx)(n.p,{children:"Use the dotnet tool install command as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet tool install -g dotnet-counters\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Once installed, you can run the tool from the command line by typing ",(0,o.jsx)(n.code,{children:"dotnet-counters"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"installing-in-a-docker-container",children:"Installing in a Docker container"}),"\n",(0,o.jsx)(n.p,{children:"To install dotnet-counters in a Docker container, create a Dockerfile with the following content:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-docker",metastring:'title="Dockerfile"',children:'FROM mcr.microsoft.com/dotnet/sdk:8.0\n\nRUN dotnet tool install -g dotnet-counters\n\nENV PATH="$PATH:/root/.dotnet/tools"\n\nENTRYPOINT ["/bin/bash"]\n'})}),"\n",(0,o.jsx)(n.p,{children:"Then, build the Docker image:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker build -t dotnet-counters .\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-2-run-nethermind",children:"Step 2: Run Nethermind"}),"\n",(0,o.jsxs)(n.p,{children:["To enable performance counters in Nethermind, use the command line option ",(0,o.jsx)(n.code,{children:"--Metrics.CountersEnabled true"}),". For more options, see the ",(0,o.jsx)(n.a,{href:"/next/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["A ",(0,o.jsx)(n.a,{href:"/next/get-started/running-node/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,o.jsx)(n.h3,{id:"running-locally",children:"Running locally"}),"\n",(0,o.jsx)(n.p,{children:"To enable performance counters, run Nethermind as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.CountersEnabled true\n"})}),"\n",(0,o.jsx)(n.h3,{id:"running-in-a-docker-container",children:"Running in a Docker container"}),"\n",(0,o.jsxs)(n.p,{children:["The easiest way of collecting metrics in a Docker container is to use Docker Compose. Below, we use the Nethermind official Docker image and the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," image we created earlier:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n\n dotnet-counters:\n image: dotnet-counters\n container_name: dotnet-counters\n stdin_open: true\n tty: true\n pid: service:nethermind\n volumes:\n - metrics:/tmp\n depends_on:\n - nethermind\n\n nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n command: -c mainnet --Metrics.CountersEnabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n - metrics:/tmp\n\nvolumes:\n metrics:\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:["dotnet-counters uses IPC socket communication to monitor the target process. For this, we use the ",(0,o.jsx)(n.code,{children:"metrics"})," volume to share the IPC socket directory with the ",(0,o.jsx)(n.code,{children:"nethermind"})," and ",(0,o.jsx)(n.code,{children:"dotnet-counter"})," services. The ",(0,o.jsx)(n.code,{children:"pid"})," option in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," service is used to share the PID namespace with the ",(0,o.jsx)(n.code,{children:"nethermind"})," service. This is necessary for ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," to be able to see the Nethermind process."]})}),"\n",(0,o.jsx)(n.p,{children:"We can run the above file as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-3-collect-metrics",children:"Step 3: Collect metrics"}),"\n",(0,o.jsxs)(n.p,{children:["Once dotnet-counters is installed and Nethermind is running, we can start collecting the metrics. If you chose to collect metrics in the containers, run the following command in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," container:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind\n"})}),"\n",(0,o.jsx)(n.p,{children:"By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind -f json -o /tmp/counters.json\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For more info about dotnet-counters, see its ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"official docs"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>c});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/01611581.79c627a9.js b/assets/js/01611581.46463d98.js similarity index 99% rename from assets/js/01611581.79c627a9.js rename to assets/js/01611581.46463d98.js index 5224b5be4..a68482efd 100644 --- a/assets/js/01611581.79c627a9.js +++ b/assets/js/01611581.46463d98.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3710],{8401:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>a,frontMatter:()=>r,metadata:()=>o,toc:()=>t});var i=d(4848),s=d(8453);const r={title:"Metrics",sidebar_position:0},c=void 0,o={id:"monitoring/metrics/metrics",title:"Metrics",description:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:",source:"@site/versioned_docs/version-1.29.0/monitoring/metrics/metrics.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/",permalink:"/monitoring/metrics/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/monitoring/metrics/metrics.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Metrics",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"web3",permalink:"/interacting/json-rpc-ns/web3"},next:{title:"Grafana and Prometheus",permalink:"/monitoring/metrics/grafana-and-prometheus"}},l={},t=[{value:"Parameters by namespace",id:"parameters-by-namespace",level:3},{value:"Aura",id:"aura",level:3},{value:"nethermind_au_ra_step",id:"au_ra_step",level:4},{value:"nethermind_commit_hash_transaction",id:"commit_hash_transaction",level:4},{value:"nethermind_emit_initiate_change",id:"emit_initiate_change",level:4},{value:"nethermind_reported_benign_misbehaviour",id:"reported_benign_misbehaviour",level:4},{value:"nethermind_reported_malicious_misbehaviour",id:"reported_malicious_misbehaviour",level:4},{value:"nethermind_reveal_number",id:"reveal_number",level:4},{value:"nethermind_sealed_transactions",id:"sealed_transactions",level:4},{value:"nethermind_validators_count",id:"validators_count",level:4},{value:"Blockchain",id:"blockchain",level:3},{value:"nethermind_best_known_block_number",id:"best_known_block_number",level:4},{value:"nethermind_blockchain_height",id:"blockchain_height",level:4},{value:"nethermind_blocks",id:"blocks",level:4},{value:"nethermind_blocks_sealed",id:"blocks_sealed",level:4},{value:"nethermind_failed_block_seals",id:"failed_block_seals",level:4},{value:"nethermind_gas_limit",id:"gas_limit",level:4},{value:"nethermind_gas_used",id:"gas_used",level:4},{value:"nethermind_last_difficulty",id:"last_difficulty",level:4},{value:"nethermind_mgas",id:"mgas",level:4},{value:"nethermind_mgas_per_sec",id:"mgas_per_sec",level:4},{value:"nethermind_processing_queue_size",id:"processing_queue_size",level:4},{value:"nethermind_recovery_queue_size",id:"recovery_queue_size",level:4},{value:"nethermind_reorganizations",id:"reorganizations",level:4},{value:"nethermind_total_difficulty",id:"total_difficulty",level:4},{value:"nethermind_transactions",id:"transactions",level:4},{value:"Db",id:"db",level:3},{value:"nethermind_code_db_cache",id:"code_db_cache",level:4},{value:"nethermind_db_block_cache_size",id:"db_block_cache_size",level:4},{value:"nethermind_db_compaction_stats",id:"db_compaction_stats",level:4},{value:"nethermind_db_index_filter_size",id:"db_index_filter_size",level:4},{value:"nethermind_db_memtable_size",id:"db_memtable_size",level:4},{value:"nethermind_db_reads",id:"db_reads",level:4},{value:"nethermind_db_size",id:"db_size",level:4},{value:"nethermind_db_stats",id:"db_stats",level:4},{value:"nethermind_db_writes",id:"db_writes",level:4},{value:"nethermind_state_db_pruning",id:"state_db_pruning",level:4},{value:"nethermind_state_reader_reads",id:"state_reader_reads",level:4},{value:"nethermind_state_tree_cache",id:"state_tree_cache",level:4},{value:"nethermind_state_tree_reads",id:"state_tree_reads",level:4},{value:"nethermind_state_tree_writes",id:"state_tree_writes",level:4},{value:"nethermind_storage_reader_reads",id:"storage_reader_reads",level:4},{value:"nethermind_storage_tree_cache",id:"storage_tree_cache",level:4},{value:"nethermind_storage_tree_reads",id:"storage_tree_reads",level:4},{value:"nethermind_storage_tree_writes",id:"storage_tree_writes",level:4},{value:"nethermind_thread_local_code_db_cache",id:"thread_local_code_db_cache",level:4},{value:"nethermind_thread_local_state_tree_reads",id:"thread_local_state_tree_reads",level:4},{value:"nethermind_thread_local_storage_tree_reads",id:"thread_local_storage_tree_reads",level:4},{value:"Evm",id:"evm",level:3},{value:"nethermind_blockhash_opcode",id:"blockhash_opcode",level:4},{value:"nethermind_bn254_add_precompile",id:"bn254_add_precompile",level:4},{value:"nethermind_bn254_mul_precompile",id:"bn254_mul_precompile",level:4},{value:"nethermind_bn254_pairing_precompile",id:"bn254_pairing_precompile",level:4},{value:"nethermind_calls",id:"calls",level:4},{value:"nethermind_contracts_analysed",id:"contracts_analysed",level:4},{value:"nethermind_creates",id:"creates",level:4},{value:"nethermind_ec_recover_precompile",id:"ec_recover_precompile",level:4},{value:"nethermind_empty_calls",id:"empty_calls",level:4},{value:"nethermind_evm_exceptions",id:"evm_exceptions",level:4},{value:"nethermind_exp_opcode",id:"exp_opcode",level:4},{value:"nethermind_m_copy_opcode",id:"m_copy_opcode",level:4},{value:"nethermind_mod_exp_precompile",id:"mod_exp_precompile",level:4},{value:"nethermind_point_evaluation_precompile",id:"point_evaluation_precompile",level:4},{value:"nethermind_ripemd160_precompile",id:"ripemd160_precompile",level:4},{value:"nethermind_secp256r1_precompile",id:"secp256r1_precompile",level:4},{value:"nethermind_self_destructs",id:"self_destructs",level:4},{value:"nethermind_sha256_precompile",id:"sha256_precompile",level:4},{value:"nethermind_sload_opcode",id:"sload_opcode",level:4},{value:"nethermind_sstore_opcode",id:"sstore_opcode",level:4},{value:"nethermind_thread_local_calls",id:"thread_local_calls",level:4},{value:"nethermind_thread_local_contracts_analysed",id:"thread_local_contracts_analysed",level:4},{value:"nethermind_thread_local_creates",id:"thread_local_creates",level:4},{value:"nethermind_thread_local_empty_calls",id:"thread_local_empty_calls",level:4},{value:"nethermind_thread_local_s_load_opcode",id:"thread_local_s_load_opcode",level:4},{value:"nethermind_thread_local_s_store_opcode",id:"thread_local_s_store_opcode",level:4},{value:"nethermind_tload_opcode",id:"tload_opcode",level:4},{value:"nethermind_tstore_opcode",id:"tstore_opcode",level:4},{value:"JsonRpc",id:"jsonrpc",level:3},{value:"nethermind_json_rpc_bytes_received",id:"json_rpc_bytes_received",level:4},{value:"nethermind_json_rpc_bytes_sent",id:"json_rpc_bytes_sent",level:4},{value:"nethermind_json_rpc_errors",id:"json_rpc_errors",level:4},{value:"nethermind_json_rpc_invalid_requests",id:"json_rpc_invalid_requests",level:4},{value:"nethermind_json_rpc_request_deserialization_failures",id:"json_rpc_request_deserialization_failures",level:4},{value:"nethermind_json_rpc_requests",id:"json_rpc_requests",level:4},{value:"nethermind_json_rpc_successes",id:"json_rpc_successes",level:4},{value:"Merge",id:"merge",level:3},{value:"nethermind_forkchoice_upded_execution_time",id:"forkchoice_upded_execution_time",level:4},{value:"nethermind_get_payload_requests",id:"get_payload_requests",level:4},{value:"nethermind_new_payload_execution_time",id:"new_payload_execution_time",level:4},{value:"nethermind_number_of_transactions_in_get_payload",id:"number_of_transactions_in_get_payload",level:4},{value:"Network",id:"network",level:3},{value:"nethermind_handshakes",id:"handshakes",level:4},{value:"nethermind_handshake_timeouts",id:"handshake_timeouts",level:4},{value:"nethermind_incoming_connections",id:"incoming_connections",level:4},{value:"nethermind_incoming_p2_p_message_bytes",id:"incoming_p2_p_message_bytes",level:4},{value:"nethermind_incoming_p2_p_messages",id:"incoming_p2_p_messages",level:4},{value:"nethermind_local_disconnects_total",id:"local_disconnects_total",level:4},{value:"nethermind_outgoing_connections",id:"outgoing_connections",level:4},{value:"nethermind_outgoing_p2_p_message_bytes",id:"outgoing_p2_p_message_bytes",level:4},{value:"nethermind_outgoing_p2_p_messages",id:"outgoing_p2_p_messages",level:4},{value:"nethermind_peer_limit",id:"peer_limit",level:4},{value:"nethermind_remote_disconnects_total",id:"remote_disconnects_total",level:4},{value:"Pruning",id:"pruning",level:3},{value:"nethermind_cached_nodes_count",id:"cached_nodes_count",level:4},{value:"nethermind_committed_nodes_count",id:"committed_nodes_count",level:4},{value:"nethermind_deep_pruned_persisted_nodes_count",id:"deep_pruned_persisted_nodes_count",level:4},{value:"nethermind_deep_pruning_time",id:"deep_pruning_time",level:4},{value:"nethermind_last_persisted_block_number",id:"last_persisted_block_number",level:4},{value:"nethermind_loaded_from_cache_nodes_count",id:"loaded_from_cache_nodes_count",level:4},{value:"nethermind_loaded_from_db_nodes_count",id:"loaded_from_db_nodes_count",level:4},{value:"nethermind_loaded_from_rlp_cache_nodes_count",id:"loaded_from_rlp_cache_nodes_count",level:4},{value:"nethermind_memory_used_by_cache",id:"memory_used_by_cache",level:4},{value:"nethermind_persisted_node_count",id:"persisted_node_count",level:4},{value:"nethermind_pruned_persisted_nodes_count",id:"pruned_persisted_nodes_count",level:4},{value:"nethermind_pruned_transient_nodes_count",id:"pruned_transient_nodes_count",level:4},{value:"nethermind_pruning_time",id:"pruning_time",level:4},{value:"nethermind_removed_node_count",id:"removed_node_count",level:4},{value:"nethermind_replaced_nodes_count",id:"replaced_nodes_count",level:4},{value:"nethermind_snapshot_persistence_time",id:"snapshot_persistence_time",level:4},{value:"Runner",id:"runner",level:3},{value:"nethermind_version",id:"version",level:4},{value:"Synchronization",id:"synchronization",level:3},{value:"nethermind_sync_peers",id:"sync_peers",level:4},{value:"Trie",id:"trie",level:3},{value:"nethermind_tree_node_hash_calculations",id:"tree_node_hash_calculations",level:4},{value:"nethermind_tree_node_rlp_decodings",id:"tree_node_rlp_decodings",level:4},{value:"nethermind_tree_node_rlp_encodings",id:"tree_node_rlp_encodings",level:4},{value:"TxPool",id:"txpool",level:3},{value:"nethermind_blobs_in_block",id:"blobs_in_block",level:4},{value:"nethermind_blob_transaction_count",id:"blob_transaction_count",level:4},{value:"nethermind_blob_transactions_in_block",id:"blob_transactions_in_block",level:4},{value:"nethermind_dark_pool_ratio_level1",id:"dark_pool_ratio_level1",level:4},{value:"nethermind_dark_pool_ratio_level2",id:"dark_pool_ratio_level2",level:4},{value:"nethermind_eip1559_transactions_ratio",id:"eip1559_transactions_ratio",level:4},{value:"nethermind_pending1559_transactions_added",id:"pending1559_transactions_added",level:4},{value:"nethermind_pending_blob_transactions_added",id:"pending_blob_transactions_added",level:4},{value:"nethermind_pending_transactions_added",id:"pending_transactions_added",level:4},{value:"nethermind_pending_transactions_balance_below_value",id:"pending_transactions_balance_below_value",level:4},{value:"nethermind_pending_transactions_conflicting_tx_type",id:"pending_transactions_conflicting_tx_type",level:4},{value:"nethermind_pending_transactions_discarded",id:"pending_transactions_discarded",level:4},{value:"nethermind_pending_transactions_evicted",id:"pending_transactions_evicted",level:4},{value:"nethermind_pending_transactions_gas_limit_too_high",id:"pending_transactions_gas_limit_too_high",level:4},{value:"nethermind_pending_transactions_hashes_received",id:"pending_transactions_hashes_received",level:4},{value:"nethermind_pending_transactions_hashes_sent",id:"pending_transactions_hashes_sent",level:4},{value:"nethermind_pending_transactions_known",id:"pending_transactions_known",level:4},{value:"nethermind_pending_transactions_low_nonce",id:"pending_transactions_low_nonce",level:4},{value:"nethermind_pending_transactions_malformed",id:"pending_transactions_malformed",level:4},{value:"nethermind_pending_transactions_nonce_gap",id:"pending_transactions_nonce_gap",level:4},{value:"nethermind_pending_transactions_nonce_too_far_in_future",id:"pending_transactions_nonce_too_far_in_future",level:4},{value:"nethermind_pending_transactions_not_supported_tx_type",id:"pending_transactions_not_supported_tx_type",level:4},{value:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees",id:"pending_transactions_passed_filters_but_cannot_compete_on_fees",level:4},{value:"nethermind_pending_transactions_passed_filters_but_cannot_replace",id:"pending_transactions_passed_filters_but_cannot_replace",level:4},{value:"nethermind_pending_transactions_received",id:"pending_transactions_received",level:4},{value:"nethermind_pending_transactions_sent",id:"pending_transactions_sent",level:4},{value:"nethermind_pending_transactions_too_low_balance",id:"pending_transactions_too_low_balance",level:4},{value:"nethermind_pending_transactions_too_low_fee",id:"pending_transactions_too_low_fee",level:4},{value:"nethermind_pending_transactions_too_low_priority_fee",id:"pending_transactions_too_low_priority_fee",level:4},{value:"nethermind_pending_transactions_unresolvable_sender",id:"pending_transactions_unresolvable_sender",level:4},{value:"nethermind_pending_transactions_with_expensive_filtering",id:"pending_transactions_with_expensive_filtering",level:4},{value:"nethermind_pending_transactions_zero_balance",id:"pending_transactions_zero_balance",level:4},{value:"nethermind_transaction_count",id:"transaction_count",level:4}];function _(e){const n={a:"a",code:"code",h3:"h3",h4:"h4",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/monitoring/metrics/grafana-and-prometheus",children:"Grafana and Prometheus"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/monitoring/metrics/dotnet-counters",children:"dotnet-counters"})}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"parameters-by-namespace",children:"Parameters by namespace"}),"\n",(0,i.jsx)(n.h3,{id:"aura",children:"Aura"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"au_ra_step",children:(0,i.jsx)(n.code,{children:"nethermind_au_ra_step"})}),"\n",(0,i.jsx)(n.p,{children:"Current AuRa step"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"commit_hash_transaction",children:(0,i.jsx)(n.code,{children:"nethermind_commit_hash_transaction"})}),"\n",(0,i.jsx)(n.p,{children:"RANDAO number of commit hash transactions"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"emit_initiate_change",children:(0,i.jsx)(n.code,{children:"nethermind_emit_initiate_change"})}),"\n",(0,i.jsx)(n.p,{children:"POSDAO number of emit init change transactions"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reported_benign_misbehaviour",children:(0,i.jsx)(n.code,{children:"nethermind_reported_benign_misbehaviour"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reported benign misbehaviour validators"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reported_malicious_misbehaviour",children:(0,i.jsx)(n.code,{children:"nethermind_reported_malicious_misbehaviour"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reported malicious misbehaviour validators"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reveal_number",children:(0,i.jsx)(n.code,{children:"nethermind_reveal_number"})}),"\n",(0,i.jsx)(n.p,{children:"RANDAO number of reveal number transactions"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sealed_transactions",children:(0,i.jsx)(n.code,{children:"nethermind_sealed_transactions"})}),"\n",(0,i.jsx)(n.p,{children:"Number of sealed transactions generated by engine"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"validators_count",children:(0,i.jsx)(n.code,{children:"nethermind_validators_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of current AuRa validators"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"blockchain",children:"Blockchain"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"best_known_block_number",children:(0,i.jsx)(n.code,{children:"nethermind_best_known_block_number"})}),"\n",(0,i.jsx)(n.p,{children:"The estimated highest block available."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blockchain_height",children:(0,i.jsx)(n.code,{children:"nethermind_blockchain_height"})}),"\n",(0,i.jsx)(n.p,{children:"The current height of the canonical chain."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks",children:(0,i.jsx)(n.code,{children:"nethermind_blocks"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of blocks processed"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks_sealed",children:(0,i.jsx)(n.code,{children:"nethermind_blocks_sealed"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of sealed blocks"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"failed_block_seals",children:(0,i.jsx)(n.code,{children:"nethermind_failed_block_seals"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of failed block seals"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"gas_limit",children:(0,i.jsx)(n.code,{children:"nethermind_gas_limit"})}),"\n",(0,i.jsx)(n.p,{children:"Gas Limit for processed blocks"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"gas_used",children:(0,i.jsx)(n.code,{children:"nethermind_gas_used"})}),"\n",(0,i.jsx)(n.p,{children:"Gas Used in processed blocks"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"last_difficulty",children:(0,i.jsx)(n.code,{children:"nethermind_last_difficulty"})}),"\n",(0,i.jsx)(n.p,{children:"Difficulty of the last block"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mgas",children:(0,i.jsx)(n.code,{children:"nethermind_mgas"})}),"\n",(0,i.jsx)(n.p,{children:"Total MGas processed"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mgas_per_sec",children:(0,i.jsx)(n.code,{children:"nethermind_mgas_per_sec"})}),"\n",(0,i.jsx)(n.p,{children:"MGas processed per second"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"processing_queue_size",children:(0,i.jsx)(n.code,{children:"nethermind_processing_queue_size"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blocks awaiting for processing."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"recovery_queue_size",children:(0,i.jsx)(n.code,{children:"nethermind_recovery_queue_size"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blocks awaiting for recovery of public keys from signatures."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reorganizations",children:(0,i.jsx)(n.code,{children:"nethermind_reorganizations"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of chain reorganizations"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"total_difficulty",children:(0,i.jsx)(n.code,{children:"nethermind_total_difficulty"})}),"\n",(0,i.jsx)(n.p,{children:"Total difficulty on the chain"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"transactions",children:(0,i.jsx)(n.code,{children:"nethermind_transactions"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of transactions processed"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"db",children:"Db"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"code_db_cache",children:(0,i.jsx)(n.code,{children:"nethermind_code_db_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Code DB cache reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_block_cache_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_block_cache_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database block cache size per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_compaction_stats",children:(0,i.jsx)(n.code,{children:"nethermind_db_compaction_stats"})}),"\n",(0,i.jsx)(n.p,{children:"Metrics extracted from RocksDB Compaction Stats"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_index_filter_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_index_filter_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database index and filter size per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_memtable_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_memtable_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database memtable per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_reads",children:(0,i.jsx)(n.code,{children:"nethermind_db_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Database reads per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database size per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_stats",children:(0,i.jsx)(n.code,{children:"nethermind_db_stats"})}),"\n",(0,i.jsx)(n.p,{children:"Metrics extracted from RocksDB Compaction Stats and DB Statistics"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_writes",children:(0,i.jsx)(n.code,{children:"nethermind_db_writes"})}),"\n",(0,i.jsx)(n.p,{children:"Database writes per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_db_pruning",children:(0,i.jsx)(n.code,{children:"nethermind_state_db_pruning"})}),"\n",(0,i.jsx)(n.p,{children:"Indicator if StadeDb is being pruned."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_reader_reads",children:(0,i.jsx)(n.code,{children:"nethermind_state_reader_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Reader reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_tree_cache",children:(0,i.jsx)(n.code,{children:"nethermind_state_tree_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Trie cache hits."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_state_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Trie reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_tree_writes",children:(0,i.jsx)(n.code,{children:"nethermind_state_tree_writes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Blocks Trie writes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_reader_reads",children:(0,i.jsx)(n.code,{children:"nethermind_storage_reader_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage reader reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_tree_cache",children:(0,i.jsx)(n.code,{children:"nethermind_storage_tree_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie cache hits."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_storage_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_tree_writes",children:(0,i.jsx)(n.code,{children:"nethermind_storage_tree_writes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie writes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_code_db_cache",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_code_db_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Code DB cache reads on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_state_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_state_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Trie reads on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_storage_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_storage_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie reads on thread."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"evm",children:"Evm"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blockhash_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_blockhash_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLOCKHASH opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bn254_add_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bn254_add_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BN254_ADD precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bn254_mul_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bn254_mul_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BN254_MUL precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bn254_pairing_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bn254_pairing_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BN254_PAIRING precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"calls",children:(0,i.jsx)(n.code,{children:"nethermind_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls to other contracts."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"contracts_analysed",children:(0,i.jsx)(n.code,{children:"nethermind_contracts_analysed"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contracts' code analysed for jump destinations."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"creates",children:(0,i.jsx)(n.code,{children:"nethermind_creates"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contract create calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ec_recover_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_ec_recover_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of EC_RECOVERY precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"empty_calls",children:(0,i.jsx)(n.code,{children:"nethermind_empty_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls made to addresses without code."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"evm_exceptions",children:(0,i.jsx)(n.code,{children:"nethermind_evm_exceptions"})}),"\n",(0,i.jsx)(n.p,{children:"Number of EVM exceptions thrown by contracts."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"exp_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_exp_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of EXP opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"m_copy_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_m_copy_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of MCOPY opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mod_exp_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_mod_exp_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of MODEXP precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"point_evaluation_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_point_evaluation_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Point Evaluation precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ripemd160_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_ripemd160_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of RIPEMD160 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"secp256r1_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_secp256r1_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Secp256r1 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"self_destructs",children:(0,i.jsx)(n.code,{children:"nethermind_self_destructs"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SELFDESTRUCT calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sha256_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_sha256_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SHA256 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sload_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_sload_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SLOAD opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sstore_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_sstore_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SSTORE opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_calls",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls to other contracts on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_contracts_analysed",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_contracts_analysed"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contracts' code analysed for jump destinations on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_creates",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_creates"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contract create calls on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_empty_calls",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_empty_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls made to addresses without code on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_s_load_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_s_load_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SLOAD opcodes executed on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_s_store_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_s_store_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SSTORE opcodes executed on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tload_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_tload_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of TLOAD opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tstore_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_tstore_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of TSTORE opcodes executed."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"jsonrpc",children:"JsonRpc"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_bytes_received",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_bytes_received"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC bytes received."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_bytes_sent",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_bytes_sent"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC bytes sent."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_errors",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_errors"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests processed with errors."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_invalid_requests",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_invalid_requests"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests that were invalid."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_request_deserialization_failures",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_request_deserialization_failures"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests that failed JSON deserialization."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_requests",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_requests"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of JSON RPC requests received by the node."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_successes",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_successes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests processed successfully."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"merge",children:"Merge"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"forkchoice_upded_execution_time",children:(0,i.jsx)(n.code,{children:"nethermind_forkchoice_upded_execution_time"})}),"\n",(0,i.jsx)(n.p,{children:"ForkchoiceUpded request execution time"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"get_payload_requests",children:(0,i.jsx)(n.code,{children:"nethermind_get_payload_requests"})}),"\n",(0,i.jsx)(n.p,{children:"Number of GetPayload Requests"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"new_payload_execution_time",children:(0,i.jsx)(n.code,{children:"nethermind_new_payload_execution_time"})}),"\n",(0,i.jsx)(n.p,{children:"NewPayload request execution time"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"number_of_transactions_in_get_payload",children:(0,i.jsx)(n.code,{children:"nethermind_number_of_transactions_in_get_payload"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Transactions included in the Last GetPayload Request"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"network",children:"Network"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"handshakes",children:(0,i.jsx)(n.code,{children:"nethermind_handshakes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of devp2p handshakes"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"handshake_timeouts",children:(0,i.jsx)(n.code,{children:"nethermind_handshake_timeouts"})}),"\n",(0,i.jsx)(n.p,{children:"Number of devp2p handshake timeouts"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"incoming_connections",children:(0,i.jsx)(n.code,{children:"nethermind_incoming_connections"})}),"\n",(0,i.jsx)(n.p,{children:"Number of incoming connection."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"incoming_p2_p_message_bytes",children:(0,i.jsx)(n.code,{children:"nethermind_incoming_p2_p_message_bytes"})}),"\n",(0,i.jsx)(n.p,{children:"Bytes of incoming p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"incoming_p2_p_messages",children:(0,i.jsx)(n.code,{children:"nethermind_incoming_p2_p_messages"})}),"\n",(0,i.jsx)(n.p,{children:"Number of incoming p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"local_disconnects_total",children:(0,i.jsx)(n.code,{children:"nethermind_local_disconnects_total"})}),"\n",(0,i.jsx)(n.p,{children:"Number of local disconnects"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"outgoing_connections",children:(0,i.jsx)(n.code,{children:"nethermind_outgoing_connections"})}),"\n",(0,i.jsx)(n.p,{children:"Number of outgoing connection."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"outgoing_p2_p_message_bytes",children:(0,i.jsx)(n.code,{children:"nethermind_outgoing_p2_p_message_bytes"})}),"\n",(0,i.jsx)(n.p,{children:"Bytes of outgoing p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"outgoing_p2_p_messages",children:(0,i.jsx)(n.code,{children:"nethermind_outgoing_p2_p_messages"})}),"\n",(0,i.jsx)(n.p,{children:"Number of outgoing p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"peer_limit",children:(0,i.jsx)(n.code,{children:"nethermind_peer_limit"})}),"\n",(0,i.jsx)(n.p,{children:"The maximum number of peers this node allows to connect."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"remote_disconnects_total",children:(0,i.jsx)(n.code,{children:"nethermind_remote_disconnects_total"})}),"\n",(0,i.jsx)(n.p,{children:"Number of remote disconnects"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"pruning",children:"Pruning"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"cached_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_cached_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that are currently kept in cache (either persisted or not)"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"committed_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_committed_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been committed since the session start. These nodes may have been pruned, persisted or replaced."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"deep_pruned_persisted_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_deep_pruned_persisted_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been removed from the cache during deep pruning because they have been persisted before."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"deep_pruning_time",children:(0,i.jsx)(n.code,{children:"nethermind_deep_pruning_time"})}),"\n",(0,i.jsx)(n.p,{children:"Time taken by the last deep pruning."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"last_persisted_block_number",children:(0,i.jsx)(n.code,{children:"nethermind_last_persisted_block_number"})}),"\n",(0,i.jsx)(n.p,{children:"Last persisted block number (snapshot)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loaded_from_cache_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_loaded_from_cache_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reads from the node cache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loaded_from_db_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_loaded_from_db_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of DB reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loaded_from_rlp_cache_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_loaded_from_rlp_cache_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reads from the RLP cache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"memory_used_by_cache",children:(0,i.jsx)(n.code,{children:"nethermind_memory_used_by_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Estimated memory used by cache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"persisted_node_count",children:(0,i.jsx)(n.code,{children:"nethermind_persisted_node_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been persisted since the session start."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruned_persisted_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_pruned_persisted_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they have been persisted before."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruned_transient_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_pruned_transient_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they were no longer needed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning_time",children:(0,i.jsx)(n.code,{children:"nethermind_pruning_time"})}),"\n",(0,i.jsx)(n.p,{children:"Time taken by the last pruning."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"removed_node_count",children:(0,i.jsx)(n.code,{children:"nethermind_removed_node_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that was removed via live pruning."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"replaced_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_replaced_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of nodes that have been exactly the same as other nodes in the cache when committing."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot_persistence_time",children:(0,i.jsx)(n.code,{children:"nethermind_snapshot_persistence_time"})}),"\n",(0,i.jsx)(n.p,{children:"Time taken by the last snapshot persistence."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"runner",children:"Runner"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"version",children:(0,i.jsx)(n.code,{children:"nethermind_version"})}),"\n",(0,i.jsx)(n.p,{children:"Version number"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"synchronization",children:"Synchronization"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync_peers",children:(0,i.jsx)(n.code,{children:"nethermind_sync_peers"})}),"\n",(0,i.jsx)(n.p,{children:"Number of sync peers."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"trie",children:"Trie"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tree_node_hash_calculations",children:(0,i.jsx)(n.code,{children:"nethermind_tree_node_hash_calculations"})}),"\n",(0,i.jsx)(n.p,{children:"Number of trie node hash calculations."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tree_node_rlp_decodings",children:(0,i.jsx)(n.code,{children:"nethermind_tree_node_rlp_decodings"})}),"\n",(0,i.jsx)(n.p,{children:"Number of trie node RLP decodings."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tree_node_rlp_encodings",children:(0,i.jsx)(n.code,{children:"nethermind_tree_node_rlp_encodings"})}),"\n",(0,i.jsx)(n.p,{children:"Number of trie node RLP encodings."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"txpool",children:"TxPool"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blobs_in_block",children:(0,i.jsx)(n.code,{children:"nethermind_blobs_in_block"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blobs in the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blob_transaction_count",children:(0,i.jsx)(n.code,{children:"nethermind_blob_transaction_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blob transactions in pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blob_transactions_in_block",children:(0,i.jsx)(n.code,{children:"nethermind_blob_transactions_in_block"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blob transactions in the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"dark_pool_ratio_level1",children:(0,i.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level1"})}),"\n",(0,i.jsx)(n.p,{children:"Ratio of transactions in the block absent in hashCache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"dark_pool_ratio_level2",children:(0,i.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level2"})}),"\n",(0,i.jsx)(n.p,{children:"Ratio of transactions in the block absent in pending transactions."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"eip1559_transactions_ratio",children:(0,i.jsx)(n.code,{children:"nethermind_eip1559_transactions_ratio"})}),"\n",(0,i.jsx)(n.p,{children:"Ratio of 1559-type transactions in the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending1559_transactions_added",children:(0,i.jsx)(n.code,{children:"nethermind_pending1559_transactions_added"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending 1559-type transactions added to transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_blob_transactions_added",children:(0,i.jsx)(n.code,{children:"nethermind_pending_blob_transactions_added"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending blob-type transactions added to transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_added",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_added"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions added to transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_balance_below_value",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_balance_below_value"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is less than txn value."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_conflicting_tx_type",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_conflicting_tx_type"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions rejected because of already pending tx of other type (allowed blob txs or others, not both at once)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_discarded",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_discarded"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_evicted",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_evicted"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions evicted from transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_gas_limit_too_high",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_gas_limit_too_high"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the gas limit was to high for the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_hashes_received",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_received"})}),"\n",(0,i.jsx)(n.p,{children:"Number of hashes of pending transactions received from peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_hashes_sent",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_sent"})}),"\n",(0,i.jsx)(n.p,{children:"Number of hashes of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_known",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_known"})}),"\n",(0,i.jsx)(n.p,{children:"Number of already known pending transactions."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_low_nonce",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_low_nonce"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions with already used nonce."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_malformed",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_malformed"})}),"\n",(0,i.jsx)(n.p,{children:"Number of malformed transactions."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_nonce_gap",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_gap"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not having preceding nonce of this sender in TxPool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_nonce_too_far_in_future",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_too_far_in_future"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions with nonce too far in future."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_not_supported_tx_type",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_not_supported_tx_type"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not supported transaction type."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_passed_filters_but_cannot_compete_on_fees",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored after passing early rejections as balance is too low to compete with lowest effective fee in transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_passed_filters_but_cannot_replace",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_replace"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were trying to replace tx with the same sender and nonce and failed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_received",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_received"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received from peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_sent",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_sent"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_too_low_balance",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_balance"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance too low for fee to be higher than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_too_low_fee",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_fee"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of fee lower than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_too_low_priority_fee",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_priority_fee"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of priority fee lower than minimal requirement."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_unresolvable_sender",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_unresolvable_sender"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the sender couldn't be resolved."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_with_expensive_filtering",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_with_expensive_filtering"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions that reached filters which are resource expensive"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_zero_balance",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_zero_balance"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is zero and cannot pay gas."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"transaction_count",children:(0,i.jsx)(n.code,{children:"nethermind_transaction_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions in pool."}),"\n"]}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(_,{...e})}):_(e)}},8453:(e,n,d)=>{d.d(n,{R:()=>c,x:()=>o});var i=d(6540);const s={},r=i.createContext(s);function c(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3710],{8401:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>a,frontMatter:()=>r,metadata:()=>o,toc:()=>t});var i=d(4848),s=d(8453);const r={title:"Metrics",sidebar_position:0},c=void 0,o={id:"monitoring/metrics/metrics",title:"Metrics",description:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:",source:"@site/versioned_docs/version-1.29.0/monitoring/metrics/metrics.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/",permalink:"/monitoring/metrics/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/monitoring/metrics/metrics.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Metrics",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"web3",permalink:"/interacting/json-rpc-ns/web3"},next:{title:"Grafana and Prometheus",permalink:"/monitoring/metrics/grafana-and-prometheus"}},l={},t=[{value:"Parameters by namespace",id:"parameters-by-namespace",level:3},{value:"Aura",id:"aura",level:3},{value:"nethermind_au_ra_step",id:"au_ra_step",level:4},{value:"nethermind_commit_hash_transaction",id:"commit_hash_transaction",level:4},{value:"nethermind_emit_initiate_change",id:"emit_initiate_change",level:4},{value:"nethermind_reported_benign_misbehaviour",id:"reported_benign_misbehaviour",level:4},{value:"nethermind_reported_malicious_misbehaviour",id:"reported_malicious_misbehaviour",level:4},{value:"nethermind_reveal_number",id:"reveal_number",level:4},{value:"nethermind_sealed_transactions",id:"sealed_transactions",level:4},{value:"nethermind_validators_count",id:"validators_count",level:4},{value:"Blockchain",id:"blockchain",level:3},{value:"nethermind_best_known_block_number",id:"best_known_block_number",level:4},{value:"nethermind_blockchain_height",id:"blockchain_height",level:4},{value:"nethermind_blocks",id:"blocks",level:4},{value:"nethermind_blocks_sealed",id:"blocks_sealed",level:4},{value:"nethermind_failed_block_seals",id:"failed_block_seals",level:4},{value:"nethermind_gas_limit",id:"gas_limit",level:4},{value:"nethermind_gas_used",id:"gas_used",level:4},{value:"nethermind_last_difficulty",id:"last_difficulty",level:4},{value:"nethermind_mgas",id:"mgas",level:4},{value:"nethermind_mgas_per_sec",id:"mgas_per_sec",level:4},{value:"nethermind_processing_queue_size",id:"processing_queue_size",level:4},{value:"nethermind_recovery_queue_size",id:"recovery_queue_size",level:4},{value:"nethermind_reorganizations",id:"reorganizations",level:4},{value:"nethermind_total_difficulty",id:"total_difficulty",level:4},{value:"nethermind_transactions",id:"transactions",level:4},{value:"Db",id:"db",level:3},{value:"nethermind_code_db_cache",id:"code_db_cache",level:4},{value:"nethermind_db_block_cache_size",id:"db_block_cache_size",level:4},{value:"nethermind_db_compaction_stats",id:"db_compaction_stats",level:4},{value:"nethermind_db_index_filter_size",id:"db_index_filter_size",level:4},{value:"nethermind_db_memtable_size",id:"db_memtable_size",level:4},{value:"nethermind_db_reads",id:"db_reads",level:4},{value:"nethermind_db_size",id:"db_size",level:4},{value:"nethermind_db_stats",id:"db_stats",level:4},{value:"nethermind_db_writes",id:"db_writes",level:4},{value:"nethermind_state_db_pruning",id:"state_db_pruning",level:4},{value:"nethermind_state_reader_reads",id:"state_reader_reads",level:4},{value:"nethermind_state_tree_cache",id:"state_tree_cache",level:4},{value:"nethermind_state_tree_reads",id:"state_tree_reads",level:4},{value:"nethermind_state_tree_writes",id:"state_tree_writes",level:4},{value:"nethermind_storage_reader_reads",id:"storage_reader_reads",level:4},{value:"nethermind_storage_tree_cache",id:"storage_tree_cache",level:4},{value:"nethermind_storage_tree_reads",id:"storage_tree_reads",level:4},{value:"nethermind_storage_tree_writes",id:"storage_tree_writes",level:4},{value:"nethermind_thread_local_code_db_cache",id:"thread_local_code_db_cache",level:4},{value:"nethermind_thread_local_state_tree_reads",id:"thread_local_state_tree_reads",level:4},{value:"nethermind_thread_local_storage_tree_reads",id:"thread_local_storage_tree_reads",level:4},{value:"Evm",id:"evm",level:3},{value:"nethermind_blockhash_opcode",id:"blockhash_opcode",level:4},{value:"nethermind_bn254_add_precompile",id:"bn254_add_precompile",level:4},{value:"nethermind_bn254_mul_precompile",id:"bn254_mul_precompile",level:4},{value:"nethermind_bn254_pairing_precompile",id:"bn254_pairing_precompile",level:4},{value:"nethermind_calls",id:"calls",level:4},{value:"nethermind_contracts_analysed",id:"contracts_analysed",level:4},{value:"nethermind_creates",id:"creates",level:4},{value:"nethermind_ec_recover_precompile",id:"ec_recover_precompile",level:4},{value:"nethermind_empty_calls",id:"empty_calls",level:4},{value:"nethermind_evm_exceptions",id:"evm_exceptions",level:4},{value:"nethermind_exp_opcode",id:"exp_opcode",level:4},{value:"nethermind_m_copy_opcode",id:"m_copy_opcode",level:4},{value:"nethermind_mod_exp_precompile",id:"mod_exp_precompile",level:4},{value:"nethermind_point_evaluation_precompile",id:"point_evaluation_precompile",level:4},{value:"nethermind_ripemd160_precompile",id:"ripemd160_precompile",level:4},{value:"nethermind_secp256r1_precompile",id:"secp256r1_precompile",level:4},{value:"nethermind_self_destructs",id:"self_destructs",level:4},{value:"nethermind_sha256_precompile",id:"sha256_precompile",level:4},{value:"nethermind_sload_opcode",id:"sload_opcode",level:4},{value:"nethermind_sstore_opcode",id:"sstore_opcode",level:4},{value:"nethermind_thread_local_calls",id:"thread_local_calls",level:4},{value:"nethermind_thread_local_contracts_analysed",id:"thread_local_contracts_analysed",level:4},{value:"nethermind_thread_local_creates",id:"thread_local_creates",level:4},{value:"nethermind_thread_local_empty_calls",id:"thread_local_empty_calls",level:4},{value:"nethermind_thread_local_s_load_opcode",id:"thread_local_s_load_opcode",level:4},{value:"nethermind_thread_local_s_store_opcode",id:"thread_local_s_store_opcode",level:4},{value:"nethermind_tload_opcode",id:"tload_opcode",level:4},{value:"nethermind_tstore_opcode",id:"tstore_opcode",level:4},{value:"JsonRpc",id:"jsonrpc",level:3},{value:"nethermind_json_rpc_bytes_received",id:"json_rpc_bytes_received",level:4},{value:"nethermind_json_rpc_bytes_sent",id:"json_rpc_bytes_sent",level:4},{value:"nethermind_json_rpc_errors",id:"json_rpc_errors",level:4},{value:"nethermind_json_rpc_invalid_requests",id:"json_rpc_invalid_requests",level:4},{value:"nethermind_json_rpc_request_deserialization_failures",id:"json_rpc_request_deserialization_failures",level:4},{value:"nethermind_json_rpc_requests",id:"json_rpc_requests",level:4},{value:"nethermind_json_rpc_successes",id:"json_rpc_successes",level:4},{value:"Merge",id:"merge",level:3},{value:"nethermind_forkchoice_upded_execution_time",id:"forkchoice_upded_execution_time",level:4},{value:"nethermind_get_payload_requests",id:"get_payload_requests",level:4},{value:"nethermind_new_payload_execution_time",id:"new_payload_execution_time",level:4},{value:"nethermind_number_of_transactions_in_get_payload",id:"number_of_transactions_in_get_payload",level:4},{value:"Network",id:"network",level:3},{value:"nethermind_handshakes",id:"handshakes",level:4},{value:"nethermind_handshake_timeouts",id:"handshake_timeouts",level:4},{value:"nethermind_incoming_connections",id:"incoming_connections",level:4},{value:"nethermind_incoming_p2_p_message_bytes",id:"incoming_p2_p_message_bytes",level:4},{value:"nethermind_incoming_p2_p_messages",id:"incoming_p2_p_messages",level:4},{value:"nethermind_local_disconnects_total",id:"local_disconnects_total",level:4},{value:"nethermind_outgoing_connections",id:"outgoing_connections",level:4},{value:"nethermind_outgoing_p2_p_message_bytes",id:"outgoing_p2_p_message_bytes",level:4},{value:"nethermind_outgoing_p2_p_messages",id:"outgoing_p2_p_messages",level:4},{value:"nethermind_peer_limit",id:"peer_limit",level:4},{value:"nethermind_remote_disconnects_total",id:"remote_disconnects_total",level:4},{value:"Pruning",id:"pruning",level:3},{value:"nethermind_cached_nodes_count",id:"cached_nodes_count",level:4},{value:"nethermind_committed_nodes_count",id:"committed_nodes_count",level:4},{value:"nethermind_deep_pruned_persisted_nodes_count",id:"deep_pruned_persisted_nodes_count",level:4},{value:"nethermind_deep_pruning_time",id:"deep_pruning_time",level:4},{value:"nethermind_last_persisted_block_number",id:"last_persisted_block_number",level:4},{value:"nethermind_loaded_from_cache_nodes_count",id:"loaded_from_cache_nodes_count",level:4},{value:"nethermind_loaded_from_db_nodes_count",id:"loaded_from_db_nodes_count",level:4},{value:"nethermind_loaded_from_rlp_cache_nodes_count",id:"loaded_from_rlp_cache_nodes_count",level:4},{value:"nethermind_memory_used_by_cache",id:"memory_used_by_cache",level:4},{value:"nethermind_persisted_node_count",id:"persisted_node_count",level:4},{value:"nethermind_pruned_persisted_nodes_count",id:"pruned_persisted_nodes_count",level:4},{value:"nethermind_pruned_transient_nodes_count",id:"pruned_transient_nodes_count",level:4},{value:"nethermind_pruning_time",id:"pruning_time",level:4},{value:"nethermind_removed_node_count",id:"removed_node_count",level:4},{value:"nethermind_replaced_nodes_count",id:"replaced_nodes_count",level:4},{value:"nethermind_snapshot_persistence_time",id:"snapshot_persistence_time",level:4},{value:"Runner",id:"runner",level:3},{value:"nethermind_version",id:"version",level:4},{value:"Synchronization",id:"synchronization",level:3},{value:"nethermind_sync_peers",id:"sync_peers",level:4},{value:"Trie",id:"trie",level:3},{value:"nethermind_tree_node_hash_calculations",id:"tree_node_hash_calculations",level:4},{value:"nethermind_tree_node_rlp_decodings",id:"tree_node_rlp_decodings",level:4},{value:"nethermind_tree_node_rlp_encodings",id:"tree_node_rlp_encodings",level:4},{value:"TxPool",id:"txpool",level:3},{value:"nethermind_blobs_in_block",id:"blobs_in_block",level:4},{value:"nethermind_blob_transaction_count",id:"blob_transaction_count",level:4},{value:"nethermind_blob_transactions_in_block",id:"blob_transactions_in_block",level:4},{value:"nethermind_dark_pool_ratio_level1",id:"dark_pool_ratio_level1",level:4},{value:"nethermind_dark_pool_ratio_level2",id:"dark_pool_ratio_level2",level:4},{value:"nethermind_eip1559_transactions_ratio",id:"eip1559_transactions_ratio",level:4},{value:"nethermind_pending1559_transactions_added",id:"pending1559_transactions_added",level:4},{value:"nethermind_pending_blob_transactions_added",id:"pending_blob_transactions_added",level:4},{value:"nethermind_pending_transactions_added",id:"pending_transactions_added",level:4},{value:"nethermind_pending_transactions_balance_below_value",id:"pending_transactions_balance_below_value",level:4},{value:"nethermind_pending_transactions_conflicting_tx_type",id:"pending_transactions_conflicting_tx_type",level:4},{value:"nethermind_pending_transactions_discarded",id:"pending_transactions_discarded",level:4},{value:"nethermind_pending_transactions_evicted",id:"pending_transactions_evicted",level:4},{value:"nethermind_pending_transactions_gas_limit_too_high",id:"pending_transactions_gas_limit_too_high",level:4},{value:"nethermind_pending_transactions_hashes_received",id:"pending_transactions_hashes_received",level:4},{value:"nethermind_pending_transactions_hashes_sent",id:"pending_transactions_hashes_sent",level:4},{value:"nethermind_pending_transactions_known",id:"pending_transactions_known",level:4},{value:"nethermind_pending_transactions_low_nonce",id:"pending_transactions_low_nonce",level:4},{value:"nethermind_pending_transactions_malformed",id:"pending_transactions_malformed",level:4},{value:"nethermind_pending_transactions_nonce_gap",id:"pending_transactions_nonce_gap",level:4},{value:"nethermind_pending_transactions_nonce_too_far_in_future",id:"pending_transactions_nonce_too_far_in_future",level:4},{value:"nethermind_pending_transactions_not_supported_tx_type",id:"pending_transactions_not_supported_tx_type",level:4},{value:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees",id:"pending_transactions_passed_filters_but_cannot_compete_on_fees",level:4},{value:"nethermind_pending_transactions_passed_filters_but_cannot_replace",id:"pending_transactions_passed_filters_but_cannot_replace",level:4},{value:"nethermind_pending_transactions_received",id:"pending_transactions_received",level:4},{value:"nethermind_pending_transactions_sent",id:"pending_transactions_sent",level:4},{value:"nethermind_pending_transactions_too_low_balance",id:"pending_transactions_too_low_balance",level:4},{value:"nethermind_pending_transactions_too_low_fee",id:"pending_transactions_too_low_fee",level:4},{value:"nethermind_pending_transactions_too_low_priority_fee",id:"pending_transactions_too_low_priority_fee",level:4},{value:"nethermind_pending_transactions_unresolvable_sender",id:"pending_transactions_unresolvable_sender",level:4},{value:"nethermind_pending_transactions_with_expensive_filtering",id:"pending_transactions_with_expensive_filtering",level:4},{value:"nethermind_pending_transactions_zero_balance",id:"pending_transactions_zero_balance",level:4},{value:"nethermind_transaction_count",id:"transaction_count",level:4}];function _(e){const n={a:"a",code:"code",h3:"h3",h4:"h4",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/monitoring/metrics/grafana-and-prometheus",children:"Grafana and Prometheus"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/monitoring/metrics/dotnet-counters",children:"dotnet-counters"})}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"parameters-by-namespace",children:"Parameters by namespace"}),"\n",(0,i.jsx)(n.h3,{id:"aura",children:"Aura"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"au_ra_step",children:(0,i.jsx)(n.code,{children:"nethermind_au_ra_step"})}),"\n",(0,i.jsx)(n.p,{children:"Current AuRa step"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"commit_hash_transaction",children:(0,i.jsx)(n.code,{children:"nethermind_commit_hash_transaction"})}),"\n",(0,i.jsx)(n.p,{children:"RANDAO number of commit hash transactions"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"emit_initiate_change",children:(0,i.jsx)(n.code,{children:"nethermind_emit_initiate_change"})}),"\n",(0,i.jsx)(n.p,{children:"POSDAO number of emit init change transactions"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reported_benign_misbehaviour",children:(0,i.jsx)(n.code,{children:"nethermind_reported_benign_misbehaviour"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reported benign misbehaviour validators"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reported_malicious_misbehaviour",children:(0,i.jsx)(n.code,{children:"nethermind_reported_malicious_misbehaviour"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reported malicious misbehaviour validators"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reveal_number",children:(0,i.jsx)(n.code,{children:"nethermind_reveal_number"})}),"\n",(0,i.jsx)(n.p,{children:"RANDAO number of reveal number transactions"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sealed_transactions",children:(0,i.jsx)(n.code,{children:"nethermind_sealed_transactions"})}),"\n",(0,i.jsx)(n.p,{children:"Number of sealed transactions generated by engine"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"validators_count",children:(0,i.jsx)(n.code,{children:"nethermind_validators_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of current AuRa validators"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"blockchain",children:"Blockchain"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"best_known_block_number",children:(0,i.jsx)(n.code,{children:"nethermind_best_known_block_number"})}),"\n",(0,i.jsx)(n.p,{children:"The estimated highest block available."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blockchain_height",children:(0,i.jsx)(n.code,{children:"nethermind_blockchain_height"})}),"\n",(0,i.jsx)(n.p,{children:"The current height of the canonical chain."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks",children:(0,i.jsx)(n.code,{children:"nethermind_blocks"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of blocks processed"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks_sealed",children:(0,i.jsx)(n.code,{children:"nethermind_blocks_sealed"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of sealed blocks"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"failed_block_seals",children:(0,i.jsx)(n.code,{children:"nethermind_failed_block_seals"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of failed block seals"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"gas_limit",children:(0,i.jsx)(n.code,{children:"nethermind_gas_limit"})}),"\n",(0,i.jsx)(n.p,{children:"Gas Limit for processed blocks"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"gas_used",children:(0,i.jsx)(n.code,{children:"nethermind_gas_used"})}),"\n",(0,i.jsx)(n.p,{children:"Gas Used in processed blocks"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"last_difficulty",children:(0,i.jsx)(n.code,{children:"nethermind_last_difficulty"})}),"\n",(0,i.jsx)(n.p,{children:"Difficulty of the last block"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mgas",children:(0,i.jsx)(n.code,{children:"nethermind_mgas"})}),"\n",(0,i.jsx)(n.p,{children:"Total MGas processed"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mgas_per_sec",children:(0,i.jsx)(n.code,{children:"nethermind_mgas_per_sec"})}),"\n",(0,i.jsx)(n.p,{children:"MGas processed per second"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"processing_queue_size",children:(0,i.jsx)(n.code,{children:"nethermind_processing_queue_size"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blocks awaiting for processing."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"recovery_queue_size",children:(0,i.jsx)(n.code,{children:"nethermind_recovery_queue_size"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blocks awaiting for recovery of public keys from signatures."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reorganizations",children:(0,i.jsx)(n.code,{children:"nethermind_reorganizations"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of chain reorganizations"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"total_difficulty",children:(0,i.jsx)(n.code,{children:"nethermind_total_difficulty"})}),"\n",(0,i.jsx)(n.p,{children:"Total difficulty on the chain"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"transactions",children:(0,i.jsx)(n.code,{children:"nethermind_transactions"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of transactions processed"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"db",children:"Db"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"code_db_cache",children:(0,i.jsx)(n.code,{children:"nethermind_code_db_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Code DB cache reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_block_cache_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_block_cache_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database block cache size per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_compaction_stats",children:(0,i.jsx)(n.code,{children:"nethermind_db_compaction_stats"})}),"\n",(0,i.jsx)(n.p,{children:"Metrics extracted from RocksDB Compaction Stats"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_index_filter_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_index_filter_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database index and filter size per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_memtable_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_memtable_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database memtable per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_reads",children:(0,i.jsx)(n.code,{children:"nethermind_db_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Database reads per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database size per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_stats",children:(0,i.jsx)(n.code,{children:"nethermind_db_stats"})}),"\n",(0,i.jsx)(n.p,{children:"Metrics extracted from RocksDB Compaction Stats and DB Statistics"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_writes",children:(0,i.jsx)(n.code,{children:"nethermind_db_writes"})}),"\n",(0,i.jsx)(n.p,{children:"Database writes per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_db_pruning",children:(0,i.jsx)(n.code,{children:"nethermind_state_db_pruning"})}),"\n",(0,i.jsx)(n.p,{children:"Indicator if StadeDb is being pruned."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_reader_reads",children:(0,i.jsx)(n.code,{children:"nethermind_state_reader_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Reader reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_tree_cache",children:(0,i.jsx)(n.code,{children:"nethermind_state_tree_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Trie cache hits."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_state_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Trie reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_tree_writes",children:(0,i.jsx)(n.code,{children:"nethermind_state_tree_writes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Blocks Trie writes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_reader_reads",children:(0,i.jsx)(n.code,{children:"nethermind_storage_reader_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage reader reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_tree_cache",children:(0,i.jsx)(n.code,{children:"nethermind_storage_tree_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie cache hits."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_storage_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_tree_writes",children:(0,i.jsx)(n.code,{children:"nethermind_storage_tree_writes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie writes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_code_db_cache",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_code_db_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Code DB cache reads on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_state_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_state_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Trie reads on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_storage_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_storage_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie reads on thread."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"evm",children:"Evm"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blockhash_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_blockhash_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLOCKHASH opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bn254_add_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bn254_add_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BN254_ADD precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bn254_mul_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bn254_mul_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BN254_MUL precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bn254_pairing_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bn254_pairing_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BN254_PAIRING precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"calls",children:(0,i.jsx)(n.code,{children:"nethermind_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls to other contracts."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"contracts_analysed",children:(0,i.jsx)(n.code,{children:"nethermind_contracts_analysed"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contracts' code analysed for jump destinations."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"creates",children:(0,i.jsx)(n.code,{children:"nethermind_creates"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contract create calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ec_recover_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_ec_recover_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of EC_RECOVERY precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"empty_calls",children:(0,i.jsx)(n.code,{children:"nethermind_empty_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls made to addresses without code."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"evm_exceptions",children:(0,i.jsx)(n.code,{children:"nethermind_evm_exceptions"})}),"\n",(0,i.jsx)(n.p,{children:"Number of EVM exceptions thrown by contracts."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"exp_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_exp_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of EXP opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"m_copy_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_m_copy_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of MCOPY opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mod_exp_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_mod_exp_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of MODEXP precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"point_evaluation_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_point_evaluation_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Point Evaluation precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ripemd160_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_ripemd160_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of RIPEMD160 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"secp256r1_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_secp256r1_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Secp256r1 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"self_destructs",children:(0,i.jsx)(n.code,{children:"nethermind_self_destructs"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SELFDESTRUCT calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sha256_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_sha256_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SHA256 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sload_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_sload_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SLOAD opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sstore_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_sstore_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SSTORE opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_calls",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls to other contracts on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_contracts_analysed",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_contracts_analysed"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contracts' code analysed for jump destinations on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_creates",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_creates"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contract create calls on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_empty_calls",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_empty_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls made to addresses without code on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_s_load_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_s_load_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SLOAD opcodes executed on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_s_store_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_s_store_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SSTORE opcodes executed on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tload_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_tload_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of TLOAD opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tstore_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_tstore_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of TSTORE opcodes executed."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"jsonrpc",children:"JsonRpc"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_bytes_received",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_bytes_received"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC bytes received."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_bytes_sent",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_bytes_sent"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC bytes sent."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_errors",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_errors"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests processed with errors."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_invalid_requests",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_invalid_requests"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests that were invalid."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_request_deserialization_failures",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_request_deserialization_failures"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests that failed JSON deserialization."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_requests",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_requests"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of JSON RPC requests received by the node."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_successes",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_successes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests processed successfully."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"merge",children:"Merge"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"forkchoice_upded_execution_time",children:(0,i.jsx)(n.code,{children:"nethermind_forkchoice_upded_execution_time"})}),"\n",(0,i.jsx)(n.p,{children:"ForkchoiceUpded request execution time"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"get_payload_requests",children:(0,i.jsx)(n.code,{children:"nethermind_get_payload_requests"})}),"\n",(0,i.jsx)(n.p,{children:"Number of GetPayload Requests"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"new_payload_execution_time",children:(0,i.jsx)(n.code,{children:"nethermind_new_payload_execution_time"})}),"\n",(0,i.jsx)(n.p,{children:"NewPayload request execution time"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"number_of_transactions_in_get_payload",children:(0,i.jsx)(n.code,{children:"nethermind_number_of_transactions_in_get_payload"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Transactions included in the Last GetPayload Request"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"network",children:"Network"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"handshakes",children:(0,i.jsx)(n.code,{children:"nethermind_handshakes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of devp2p handshakes"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"handshake_timeouts",children:(0,i.jsx)(n.code,{children:"nethermind_handshake_timeouts"})}),"\n",(0,i.jsx)(n.p,{children:"Number of devp2p handshake timeouts"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"incoming_connections",children:(0,i.jsx)(n.code,{children:"nethermind_incoming_connections"})}),"\n",(0,i.jsx)(n.p,{children:"Number of incoming connection."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"incoming_p2_p_message_bytes",children:(0,i.jsx)(n.code,{children:"nethermind_incoming_p2_p_message_bytes"})}),"\n",(0,i.jsx)(n.p,{children:"Bytes of incoming p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"incoming_p2_p_messages",children:(0,i.jsx)(n.code,{children:"nethermind_incoming_p2_p_messages"})}),"\n",(0,i.jsx)(n.p,{children:"Number of incoming p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"local_disconnects_total",children:(0,i.jsx)(n.code,{children:"nethermind_local_disconnects_total"})}),"\n",(0,i.jsx)(n.p,{children:"Number of local disconnects"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"outgoing_connections",children:(0,i.jsx)(n.code,{children:"nethermind_outgoing_connections"})}),"\n",(0,i.jsx)(n.p,{children:"Number of outgoing connection."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"outgoing_p2_p_message_bytes",children:(0,i.jsx)(n.code,{children:"nethermind_outgoing_p2_p_message_bytes"})}),"\n",(0,i.jsx)(n.p,{children:"Bytes of outgoing p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"outgoing_p2_p_messages",children:(0,i.jsx)(n.code,{children:"nethermind_outgoing_p2_p_messages"})}),"\n",(0,i.jsx)(n.p,{children:"Number of outgoing p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"peer_limit",children:(0,i.jsx)(n.code,{children:"nethermind_peer_limit"})}),"\n",(0,i.jsx)(n.p,{children:"The maximum number of peers this node allows to connect."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"remote_disconnects_total",children:(0,i.jsx)(n.code,{children:"nethermind_remote_disconnects_total"})}),"\n",(0,i.jsx)(n.p,{children:"Number of remote disconnects"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"pruning",children:"Pruning"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"cached_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_cached_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that are currently kept in cache (either persisted or not)"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"committed_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_committed_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been committed since the session start. These nodes may have been pruned, persisted or replaced."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"deep_pruned_persisted_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_deep_pruned_persisted_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been removed from the cache during deep pruning because they have been persisted before."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"deep_pruning_time",children:(0,i.jsx)(n.code,{children:"nethermind_deep_pruning_time"})}),"\n",(0,i.jsx)(n.p,{children:"Time taken by the last deep pruning."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"last_persisted_block_number",children:(0,i.jsx)(n.code,{children:"nethermind_last_persisted_block_number"})}),"\n",(0,i.jsx)(n.p,{children:"Last persisted block number (snapshot)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loaded_from_cache_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_loaded_from_cache_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reads from the node cache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loaded_from_db_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_loaded_from_db_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of DB reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loaded_from_rlp_cache_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_loaded_from_rlp_cache_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reads from the RLP cache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"memory_used_by_cache",children:(0,i.jsx)(n.code,{children:"nethermind_memory_used_by_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Estimated memory used by cache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"persisted_node_count",children:(0,i.jsx)(n.code,{children:"nethermind_persisted_node_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been persisted since the session start."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruned_persisted_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_pruned_persisted_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they have been persisted before."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruned_transient_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_pruned_transient_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they were no longer needed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning_time",children:(0,i.jsx)(n.code,{children:"nethermind_pruning_time"})}),"\n",(0,i.jsx)(n.p,{children:"Time taken by the last pruning."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"removed_node_count",children:(0,i.jsx)(n.code,{children:"nethermind_removed_node_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that was removed via live pruning."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"replaced_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_replaced_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of nodes that have been exactly the same as other nodes in the cache when committing."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot_persistence_time",children:(0,i.jsx)(n.code,{children:"nethermind_snapshot_persistence_time"})}),"\n",(0,i.jsx)(n.p,{children:"Time taken by the last snapshot persistence."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"runner",children:"Runner"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"version",children:(0,i.jsx)(n.code,{children:"nethermind_version"})}),"\n",(0,i.jsx)(n.p,{children:"Version number"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"synchronization",children:"Synchronization"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync_peers",children:(0,i.jsx)(n.code,{children:"nethermind_sync_peers"})}),"\n",(0,i.jsx)(n.p,{children:"Number of sync peers."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"trie",children:"Trie"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tree_node_hash_calculations",children:(0,i.jsx)(n.code,{children:"nethermind_tree_node_hash_calculations"})}),"\n",(0,i.jsx)(n.p,{children:"Number of trie node hash calculations."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tree_node_rlp_decodings",children:(0,i.jsx)(n.code,{children:"nethermind_tree_node_rlp_decodings"})}),"\n",(0,i.jsx)(n.p,{children:"Number of trie node RLP decodings."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tree_node_rlp_encodings",children:(0,i.jsx)(n.code,{children:"nethermind_tree_node_rlp_encodings"})}),"\n",(0,i.jsx)(n.p,{children:"Number of trie node RLP encodings."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"txpool",children:"TxPool"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blobs_in_block",children:(0,i.jsx)(n.code,{children:"nethermind_blobs_in_block"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blobs in the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blob_transaction_count",children:(0,i.jsx)(n.code,{children:"nethermind_blob_transaction_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blob transactions in pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blob_transactions_in_block",children:(0,i.jsx)(n.code,{children:"nethermind_blob_transactions_in_block"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blob transactions in the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"dark_pool_ratio_level1",children:(0,i.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level1"})}),"\n",(0,i.jsx)(n.p,{children:"Ratio of transactions in the block absent in hashCache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"dark_pool_ratio_level2",children:(0,i.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level2"})}),"\n",(0,i.jsx)(n.p,{children:"Ratio of transactions in the block absent in pending transactions."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"eip1559_transactions_ratio",children:(0,i.jsx)(n.code,{children:"nethermind_eip1559_transactions_ratio"})}),"\n",(0,i.jsx)(n.p,{children:"Ratio of 1559-type transactions in the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending1559_transactions_added",children:(0,i.jsx)(n.code,{children:"nethermind_pending1559_transactions_added"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending 1559-type transactions added to transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_blob_transactions_added",children:(0,i.jsx)(n.code,{children:"nethermind_pending_blob_transactions_added"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending blob-type transactions added to transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_added",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_added"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions added to transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_balance_below_value",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_balance_below_value"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is less than txn value."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_conflicting_tx_type",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_conflicting_tx_type"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions rejected because of already pending tx of other type (allowed blob txs or others, not both at once)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_discarded",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_discarded"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_evicted",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_evicted"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions evicted from transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_gas_limit_too_high",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_gas_limit_too_high"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the gas limit was to high for the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_hashes_received",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_received"})}),"\n",(0,i.jsx)(n.p,{children:"Number of hashes of pending transactions received from peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_hashes_sent",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_sent"})}),"\n",(0,i.jsx)(n.p,{children:"Number of hashes of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_known",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_known"})}),"\n",(0,i.jsx)(n.p,{children:"Number of already known pending transactions."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_low_nonce",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_low_nonce"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions with already used nonce."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_malformed",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_malformed"})}),"\n",(0,i.jsx)(n.p,{children:"Number of malformed transactions."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_nonce_gap",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_gap"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not having preceding nonce of this sender in TxPool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_nonce_too_far_in_future",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_too_far_in_future"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions with nonce too far in future."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_not_supported_tx_type",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_not_supported_tx_type"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not supported transaction type."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_passed_filters_but_cannot_compete_on_fees",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored after passing early rejections as balance is too low to compete with lowest effective fee in transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_passed_filters_but_cannot_replace",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_replace"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were trying to replace tx with the same sender and nonce and failed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_received",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_received"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received from peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_sent",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_sent"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_too_low_balance",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_balance"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance too low for fee to be higher than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_too_low_fee",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_fee"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of fee lower than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_too_low_priority_fee",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_priority_fee"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of priority fee lower than minimal requirement."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_unresolvable_sender",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_unresolvable_sender"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the sender couldn't be resolved."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_with_expensive_filtering",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_with_expensive_filtering"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions that reached filters which are resource expensive"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_zero_balance",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_zero_balance"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is zero and cannot pay gas."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"transaction_count",children:(0,i.jsx)(n.code,{children:"nethermind_transaction_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions in pool."}),"\n"]}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(_,{...e})}):_(e)}},8453:(e,n,d)=>{d.d(n,{R:()=>c,x:()=>o});var i=d(6540);const s={},r=i.createContext(s);function c(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/01fdf914.772620b6.js b/assets/js/01fdf914.c7631a25.js similarity index 98% rename from assets/js/01fdf914.772620b6.js rename to assets/js/01fdf914.c7631a25.js index 010809390..66ca59c1c 100644 --- a/assets/js/01fdf914.772620b6.js +++ b/assets/js/01fdf914.c7631a25.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7540],{8639:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var i=n(4848),r=n(8453);const o={title:"Security",sidebar_position:3},s=void 0,c={id:"fundamentals/security",title:"Security",description:"General security considerations",source:"@site/versioned_docs/version-1.28.0/fundamentals/security.md",sourceDirName:"fundamentals",slug:"/fundamentals/security",permalink:"/1.28.0/fundamentals/security",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/security.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"Security",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Sync",permalink:"/1.28.0/fundamentals/sync"},next:{title:"Logs",permalink:"/1.28.0/fundamentals/logs"}},a={},d=[{value:"General security considerations",id:"general-security-considerations",level:2},{value:"Networking security",id:"networking-security",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{id:"general-security-considerations",children:"General security considerations"}),"\n",(0,i.jsx)(t.admonition,{type:"tip",children:(0,i.jsx)(t.p,{children:"Although Nethermind is thoroughly tested, the more popular it becomes, the more likely it will be a target of client-specific attacks. Generally, we recommend you always consider running backup client nodes from another developer for any critical operations."})}),"\n",(0,i.jsx)(t.admonition,{type:"warning",children:(0,i.jsxs)(t.p,{children:["Enable only the ",(0,i.jsx)(t.a,{href:"/1.28.0/interacting/json-rpc-server",children:"JSON-RPC namespaces"})," you absolutely need. This is particularly important for namespaces like ",(0,i.jsx)(t.code,{children:"admin"})," and ",(0,i.jsx)(t.code,{children:"debug"}),", as they can be exploited to get elevated access to your node or for DOS attacks."]})}),"\n",(0,i.jsx)(t.admonition,{type:"danger",children:(0,i.jsx)(t.p,{children:"The private key the node id is derived from is stored on the disk as plaintext."})}),"\n",(0,i.jsx)(t.h2,{id:"networking-security",children:"Networking security"}),"\n",(0,i.jsxs)(t.p,{children:["These rules are ",(0,i.jsx)(t.strong,{children:"highly recommended"})," to be applied to your firewall:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Block all traffic to the port ",(0,i.jsx)(t.code,{children:"8545"}),", or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the TCP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port is defined for P2P communication. This allows the node to connect to peers."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the UDP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port ia defined for P2P communication. This allows node discovery."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var i=n(6540);const r={},o=i.createContext(r);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7540],{8639:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var i=n(4848),r=n(8453);const o={title:"Security",sidebar_position:3},s=void 0,c={id:"fundamentals/security",title:"Security",description:"General security considerations",source:"@site/versioned_docs/version-1.28.0/fundamentals/security.md",sourceDirName:"fundamentals",slug:"/fundamentals/security",permalink:"/1.28.0/fundamentals/security",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/security.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"Security",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Sync",permalink:"/1.28.0/fundamentals/sync"},next:{title:"Logs",permalink:"/1.28.0/fundamentals/logs"}},a={},d=[{value:"General security considerations",id:"general-security-considerations",level:2},{value:"Networking security",id:"networking-security",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{id:"general-security-considerations",children:"General security considerations"}),"\n",(0,i.jsx)(t.admonition,{type:"tip",children:(0,i.jsx)(t.p,{children:"Although Nethermind is thoroughly tested, the more popular it becomes, the more likely it will be a target of client-specific attacks. Generally, we recommend you always consider running backup client nodes from another developer for any critical operations."})}),"\n",(0,i.jsx)(t.admonition,{type:"warning",children:(0,i.jsxs)(t.p,{children:["Enable only the ",(0,i.jsx)(t.a,{href:"/1.28.0/interacting/json-rpc-server",children:"JSON-RPC namespaces"})," you absolutely need. This is particularly important for namespaces like ",(0,i.jsx)(t.code,{children:"admin"})," and ",(0,i.jsx)(t.code,{children:"debug"}),", as they can be exploited to get elevated access to your node or for DOS attacks."]})}),"\n",(0,i.jsx)(t.admonition,{type:"danger",children:(0,i.jsx)(t.p,{children:"The private key the node id is derived from is stored on the disk as plaintext."})}),"\n",(0,i.jsx)(t.h2,{id:"networking-security",children:"Networking security"}),"\n",(0,i.jsxs)(t.p,{children:["These rules are ",(0,i.jsx)(t.strong,{children:"highly recommended"})," to be applied to your firewall:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Block all traffic to the port ",(0,i.jsx)(t.code,{children:"8545"}),", or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the TCP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port is defined for P2P communication. This allows the node to connect to peers."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the UDP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port ia defined for P2P communication. This allows node discovery."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var i=n(6540);const r={},o=i.createContext(r);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/03067d53.85ac9637.js b/assets/js/03067d53.57a746a0.js similarity index 99% rename from assets/js/03067d53.85ac9637.js rename to assets/js/03067d53.57a746a0.js index d121a75c1..3a2b79c05 100644 --- a/assets/js/03067d53.85ac9637.js +++ b/assets/js/03067d53.57a746a0.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6083],{9560:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var t=s(4848),i=s(8453);const r={title:"System requirements",sidebar_position:1},d=void 0,a={id:"get-started/system-requirements",title:"System requirements",description:"Supported operating systems",source:"@site/versioned_docs/version-1.29.0/get-started/system-requirements.md",sourceDirName:"get-started",slug:"/get-started/system-requirements",permalink:"/get-started/system-requirements",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/get-started/system-requirements.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"System requirements",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/"},next:{title:"Installing Nethermind",permalink:"/get-started/installing-nethermind"}},o={},l=[{value:"Supported operating systems",id:"supported-operating-systems",level:2},{value:"Hardware requirements",id:"hardware-requirements",level:2},{value:"Disk requirements",id:"disk-requirements",level:3},{value:"Database growth",id:"database-growth",level:4},{value:"Disk speed",id:"disk-speed",level:4},{value:"Sync modes and disk usage",id:"sync-modes-and-disk-usage",level:4}];function c(e){const n={a:"a",br:"br",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"supported-operating-systems",children:"Supported operating systems"}),"\n",(0,t.jsx)(n.p,{children:"Nethermind supports a broad range of modern operating systems (64-bit-only) including but not limited to:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Linux"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Alpine 3.17+"}),"\n",(0,t.jsx)(n.li,{children:"CentOS Stream 9+"}),"\n",(0,t.jsx)(n.li,{children:"Debian 11+"}),"\n",(0,t.jsx)(n.li,{children:"Fedora 37+"}),"\n",(0,t.jsx)(n.li,{children:"openSUSE 15+"}),"\n",(0,t.jsx)(n.li,{children:"RHEL 8+"}),"\n",(0,t.jsx)(n.li,{children:"SLES 15+"}),"\n",(0,t.jsx)(n.li,{children:"Ubuntu 20.04+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Windows"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Windows 10+"}),"\n",(0,t.jsx)(n.li,{children:"Windows Server 2012+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"macOS"})," 10.15+"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"hardware-requirements",children:"Hardware requirements"}),"\n",(0,t.jsx)(n.p,{children:"Suggested requirements can be found below."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Network"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Memory"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"CPU cores"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"4"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet archive"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"128 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Gnosis"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Energy Web"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Volta"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]})]})]}),"\n",(0,t.jsx)(n.h3,{id:"disk-requirements",children:"Disk requirements"}),"\n",(0,t.jsxs)(n.p,{children:["Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as NVMe or a fast SSD. However, ",(0,t.jsx)(n.strong,{children:"2\nTB is recommended"})," to minimize maintenance requirements. To choose a specific disk model, we recommend\nchecking out ",(0,t.jsx)(n.a,{href:"https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good",children:"this guide"}),".",(0,t.jsx)(n.br,{}),"\n","Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking.\nNonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic."]}),"\n",(0,t.jsx)(n.h4,{id:"database-growth",children:"Database growth"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind requires approximately 898 GB of disk space (as of Jan 2024) after a fresh Ethereum Mainnet sync using default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to bring it back to its optimal database size. For more info on managing node disk usage growth, see ",(0,t.jsx)(n.a,{href:"/fundamentals/database#reducing-database-size",children:"how to reduce database size"}),".",(0,t.jsx)(n.br,{}),"\n","Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements."]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/fundamentals/database#database-size",children:"Database size"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"disk-speed",children:"Disk speed"}),"\n",(0,t.jsx)(n.p,{children:"The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully."}),"\n",(0,t.jsx)(n.h4,{id:"sync-modes-and-disk-usage",children:"Sync modes and disk usage"}),"\n",(0,t.jsx)(n.p,{children:"A node can be run using different syncing options, and each option has different characteristics of disk space usage."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Archive node."})," This mode stores the full historical state for all blocks. As of July 2023, an archive node requires at least 14 TB of disk space, and it grows by approximately 60 GB per week."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Ancient barriers."})," Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Non-validator mode."})," This mode drops all historical receipts and bodies, but it cannot be used for validation."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/fundamentals/sync",children:"sync modes"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>a});var t=s(6540);const i={},r=t.createContext(i);function d(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6083],{9560:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var t=s(4848),i=s(8453);const r={title:"System requirements",sidebar_position:1},d=void 0,a={id:"get-started/system-requirements",title:"System requirements",description:"Supported operating systems",source:"@site/versioned_docs/version-1.29.0/get-started/system-requirements.md",sourceDirName:"get-started",slug:"/get-started/system-requirements",permalink:"/get-started/system-requirements",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/get-started/system-requirements.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"System requirements",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/"},next:{title:"Installing Nethermind",permalink:"/get-started/installing-nethermind"}},o={},l=[{value:"Supported operating systems",id:"supported-operating-systems",level:2},{value:"Hardware requirements",id:"hardware-requirements",level:2},{value:"Disk requirements",id:"disk-requirements",level:3},{value:"Database growth",id:"database-growth",level:4},{value:"Disk speed",id:"disk-speed",level:4},{value:"Sync modes and disk usage",id:"sync-modes-and-disk-usage",level:4}];function c(e){const n={a:"a",br:"br",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"supported-operating-systems",children:"Supported operating systems"}),"\n",(0,t.jsx)(n.p,{children:"Nethermind supports a broad range of modern operating systems (64-bit-only) including but not limited to:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Linux"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Alpine 3.17+"}),"\n",(0,t.jsx)(n.li,{children:"CentOS Stream 9+"}),"\n",(0,t.jsx)(n.li,{children:"Debian 11+"}),"\n",(0,t.jsx)(n.li,{children:"Fedora 37+"}),"\n",(0,t.jsx)(n.li,{children:"openSUSE 15+"}),"\n",(0,t.jsx)(n.li,{children:"RHEL 8+"}),"\n",(0,t.jsx)(n.li,{children:"SLES 15+"}),"\n",(0,t.jsx)(n.li,{children:"Ubuntu 20.04+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Windows"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Windows 10+"}),"\n",(0,t.jsx)(n.li,{children:"Windows Server 2012+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"macOS"})," 10.15+"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"hardware-requirements",children:"Hardware requirements"}),"\n",(0,t.jsx)(n.p,{children:"Suggested requirements can be found below."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Network"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Memory"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"CPU cores"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"4"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet archive"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"128 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Gnosis"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Energy Web"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Volta"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]})]})]}),"\n",(0,t.jsx)(n.h3,{id:"disk-requirements",children:"Disk requirements"}),"\n",(0,t.jsxs)(n.p,{children:["Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as NVMe or a fast SSD. However, ",(0,t.jsx)(n.strong,{children:"2\nTB is recommended"})," to minimize maintenance requirements. To choose a specific disk model, we recommend\nchecking out ",(0,t.jsx)(n.a,{href:"https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good",children:"this guide"}),".",(0,t.jsx)(n.br,{}),"\n","Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking.\nNonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic."]}),"\n",(0,t.jsx)(n.h4,{id:"database-growth",children:"Database growth"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind requires approximately 898 GB of disk space (as of Jan 2024) after a fresh Ethereum Mainnet sync using default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to bring it back to its optimal database size. For more info on managing node disk usage growth, see ",(0,t.jsx)(n.a,{href:"/fundamentals/database#reducing-database-size",children:"how to reduce database size"}),".",(0,t.jsx)(n.br,{}),"\n","Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements."]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/fundamentals/database#database-size",children:"Database size"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"disk-speed",children:"Disk speed"}),"\n",(0,t.jsx)(n.p,{children:"The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully."}),"\n",(0,t.jsx)(n.h4,{id:"sync-modes-and-disk-usage",children:"Sync modes and disk usage"}),"\n",(0,t.jsx)(n.p,{children:"A node can be run using different syncing options, and each option has different characteristics of disk space usage."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Archive node."})," This mode stores the full historical state for all blocks. As of July 2023, an archive node requires at least 14 TB of disk space, and it grows by approximately 60 GB per week."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Ancient barriers."})," Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Non-validator mode."})," This mode drops all historical receipts and bodies, but it cannot be used for validation."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/fundamentals/sync",children:"sync modes"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>a});var t=s(6540);const i={},r=t.createContext(i);function d(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/043e7a23.89105b2a.js b/assets/js/043e7a23.75ae3488.js similarity index 98% rename from assets/js/043e7a23.89105b2a.js rename to assets/js/043e7a23.75ae3488.js index c99e42611..e2f819c9f 100644 --- a/assets/js/043e7a23.89105b2a.js +++ b/assets/js/043e7a23.75ae3488.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8474],{9940:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var o=t(4848),r=t(8453);const i={title:"Layer 2 networks",sidebar_position:2},s=void 0,a={id:"get-started/running-node/l2-networks",title:"Layer 2 networks",description:"OP Stack",source:"@site/docs/get-started/running-node/l2-networks.md",sourceDirName:"get-started/running-node",slug:"/get-started/running-node/l2-networks",permalink:"/next/get-started/running-node/l2-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/get-started/running-node/l2-networks.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Layer 2 networks",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Consensus clients",permalink:"/next/get-started/running-node/consensus-clients"},next:{title:"Migrating from Geth",permalink:"/next/get-started/migrating-from-geth"}},d={},c=[{value:"OP Stack",id:"op-stack",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h2,{id:"op-stack",children:"OP Stack"}),"\n",(0,o.jsxs)(n.p,{children:["An Optimism node ",(0,o.jsx)(n.a,{href:"https://docs.optimism.io/builders/node-operators/architecture",children:"consists of two nodes"}),": op-node, a rollup node, analogous to a consensus client in Ethereum, paired with a Layer 2 (L2) execution client, and a Layer 1 (L1) node of a pair of execution and consensus clients."]}),"\n",(0,o.jsx)(n.admonition,{title:"Before you begin",type:"info",children:(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Running the OP stack requires access to an L1 node\u2014either on-premises or an external RPC provider. If you also plan to run an L1 node with Nethermind, note that you will need two Nethermind instances\u2014one for the L1 node and another for the L2 node, replacing op-geth."}),"\n",(0,o.jsx)(n.li,{children:"Depending on which OP Stack network you want to run on, the L1 node must be configured respectively. For instance, for OP Mainnet, the L1 node must run on Ethereum Mainnet. For OP Sepolia, on Sepolia."}),"\n",(0,o.jsxs)(n.li,{children:["Ensure your L1 node is up and running on the respective network before running the OP Stack. See ",(0,o.jsx)(n.a,{href:"/next/get-started/running-node/#ethereum",children:"Running a node on Ethereum"}),"."]}),"\n"]})}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Similar to the L1 node, the L2 instance of Nethermind also requires a ",(0,o.jsx)(n.a,{href:"/next/get-started/running-node/consensus-clients#configuring-json-rpc-interface",children:"properly configured"})," Engine API to communicate to op-node."]}),"\n",(0,o.jsx)(n.li,{children:"If both the L1 and L2 nodes run on the same machine, ensure they use different ports and data directories."}),"\n"]})}),"\n",(0,o.jsx)(n.p,{children:"To run Nethermind on the OP Mainnet, use the following command:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c op-mainnet \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,o.jsx)(n.p,{children:"Below is a sample command to run op-node paired with Nethermind:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"export L1_RPC_URL=... # The URL of the L1 node RPC interface\nexport L1_BEACON_URL=... # The URL of the L1 node Beacon interface\n\nop-node \\\n --l1=$L1_RPC_URL \\\n --l1.rpckind=standard \\\n --l1.beacon=$L1_BEACON_URL \\\n --l2=http://localhost:8551 \\\n --l2.jwt-secret=path/to/jwt.hex \\\n --syncmode=execution-layer \\\n --network=op-mainnet\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For the full list of the configuration options, see the ",(0,o.jsx)(n.a,{href:"https://docs.optimism.io/builders/node-operators/configuration/consensus-config",children:"op-node documentation"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>a});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8474],{9940:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var o=t(4848),r=t(8453);const i={title:"Layer 2 networks",sidebar_position:2},s=void 0,a={id:"get-started/running-node/l2-networks",title:"Layer 2 networks",description:"OP Stack",source:"@site/docs/get-started/running-node/l2-networks.md",sourceDirName:"get-started/running-node",slug:"/get-started/running-node/l2-networks",permalink:"/next/get-started/running-node/l2-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/get-started/running-node/l2-networks.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Layer 2 networks",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Consensus clients",permalink:"/next/get-started/running-node/consensus-clients"},next:{title:"Migrating from Geth",permalink:"/next/get-started/migrating-from-geth"}},d={},c=[{value:"OP Stack",id:"op-stack",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h2,{id:"op-stack",children:"OP Stack"}),"\n",(0,o.jsxs)(n.p,{children:["An Optimism node ",(0,o.jsx)(n.a,{href:"https://docs.optimism.io/builders/node-operators/architecture",children:"consists of two nodes"}),": op-node, a rollup node, analogous to a consensus client in Ethereum, paired with a Layer 2 (L2) execution client, and a Layer 1 (L1) node of a pair of execution and consensus clients."]}),"\n",(0,o.jsx)(n.admonition,{title:"Before you begin",type:"info",children:(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Running the OP stack requires access to an L1 node\u2014either on-premises or an external RPC provider. If you also plan to run an L1 node with Nethermind, note that you will need two Nethermind instances\u2014one for the L1 node and another for the L2 node, replacing op-geth."}),"\n",(0,o.jsx)(n.li,{children:"Depending on which OP Stack network you want to run on, the L1 node must be configured respectively. For instance, for OP Mainnet, the L1 node must run on Ethereum Mainnet. For OP Sepolia, on Sepolia."}),"\n",(0,o.jsxs)(n.li,{children:["Ensure your L1 node is up and running on the respective network before running the OP Stack. See ",(0,o.jsx)(n.a,{href:"/next/get-started/running-node/#ethereum",children:"Running a node on Ethereum"}),"."]}),"\n"]})}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Similar to the L1 node, the L2 instance of Nethermind also requires a ",(0,o.jsx)(n.a,{href:"/next/get-started/running-node/consensus-clients#configuring-json-rpc-interface",children:"properly configured"})," Engine API to communicate to op-node."]}),"\n",(0,o.jsx)(n.li,{children:"If both the L1 and L2 nodes run on the same machine, ensure they use different ports and data directories."}),"\n"]})}),"\n",(0,o.jsx)(n.p,{children:"To run Nethermind on the OP Mainnet, use the following command:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c op-mainnet \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,o.jsx)(n.p,{children:"Below is a sample command to run op-node paired with Nethermind:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"export L1_RPC_URL=... # The URL of the L1 node RPC interface\nexport L1_BEACON_URL=... # The URL of the L1 node Beacon interface\n\nop-node \\\n --l1=$L1_RPC_URL \\\n --l1.rpckind=standard \\\n --l1.beacon=$L1_BEACON_URL \\\n --l2=http://localhost:8551 \\\n --l2.jwt-secret=path/to/jwt.hex \\\n --syncmode=execution-layer \\\n --network=op-mainnet\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For the full list of the configuration options, see the ",(0,o.jsx)(n.a,{href:"https://docs.optimism.io/builders/node-operators/configuration/consensus-config",children:"op-node documentation"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>a});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0537931c.ac2d5ee2.js b/assets/js/0537931c.48323a50.js similarity index 99% rename from assets/js/0537931c.ac2d5ee2.js rename to assets/js/0537931c.48323a50.js index 5fe6675aa..cb0b6dec1 100644 --- a/assets/js/0537931c.ac2d5ee2.js +++ b/assets/js/0537931c.48323a50.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7944],{7757:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>o,toc:()=>d});var i=s(4848),r=s(8453);const t={title:"Validators",sidebar_position:0},a=void 0,o={id:"validators/validators",title:"Validators",description:"General considerations",source:"@site/versioned_docs/version-1.26.0/validators/validators.md",sourceDirName:"validators",slug:"/validators/",permalink:"/1.26.0/validators/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/validators/validators.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Health check",permalink:"/1.26.0/monitoring/health-check"},next:{title:"Aura-based validators",permalink:"/1.26.0/validators/aura"}},l={},d=[{value:"General considerations",id:"general-considerations",level:2},{value:"Hardware configurations",id:"hardware-configurations",level:2},{value:"On-premises",id:"on-premises",level:3},{value:"AWS",id:"aws",level:3},{value:"Azure",id:"azure",level:3},{value:"GCP",id:"gcp",level:3},{value:"Gnosis validators",id:"gnosis-validators",level:2}];function c(e){const n={a:"a",admonition:"admonition",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"general-considerations",children:"General considerations"}),"\n",(0,i.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,i.jsxs)(n.p,{children:["Please check out the ",(0,i.jsx)(n.a,{href:"/1.26.0/fundamentals/security",children:"security considerations"})," before using Nethermind as a validator."]})}),"\n",(0,i.jsxs)(n.p,{children:["For Ethereum validators, we highly recommend checking out ",(0,i.jsx)(n.a,{href:"https://ethereum.org/staking",children:"Staking with Ethereum"})," and ",(0,i.jsx)(n.a,{href:"https://launchpad.ethereum.org/en/checklist",children:"Validator checklist"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"hardware-configurations",children:"Hardware configurations"}),"\n",(0,i.jsx)(n.p,{children:"The following hardware configurations for Ethereum Mainnet validators have been battle-tested by us and our users. We have observed excellent validator performance and stability with these configurations."}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Before setting up your infrastructure, check out ",(0,i.jsx)(n.a,{href:"/1.26.0/get-started/system-requirements#hardware-requirements",children:"Nethermind hardware requirements"}),"."]})}),"\n",(0,i.jsx)(n.h3,{id:"on-premises",children:"On-premises"}),"\n",(0,i.jsx)(n.p,{children:"A single validator on Intel NUC 11:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"CPU: Intel Core i7-1165G7"}),"\n",(0,i.jsx)(n.li,{children:"Memory: Crucial 32GB DDR4-3200 SODIMM"}),"\n",(0,i.jsx)(n.li,{children:"Storage: Samsung 980 PRO PCIe NVMe SSD 2TB"}),"\n",(0,i.jsx)(n.li,{children:"Internet speed: 620 Mbps download, 160 Mbps upload"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"aws",children:"AWS"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following EC2 instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m6i/",children:"m6i.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m7g/",children:"m7g.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/t4/",children:"t4g.small"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"azure",children:"Azure"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following VM instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dv5-dsv5-series#dv5-series",children:"Standard_D8_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dpsv5-dpdsv5-series#dpsv5-series",children:"Standard_D8ps_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dplsv5-dpldsv5-series#dplsv5-series",children:"Standard_D2pls_v5"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"gcp",children:"GCP"}),"\n",(0,i.jsxs)(n.p,{children:["Multiple validators on the ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/compute-optimized-machines#c2d-high-mem",children:"c2d-highmem-4"})," instance: 4 vCPU, 32 GB memory"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/general-purpose-machines#sharedcore",children:"e2-small"})," instances."]}),"\n",(0,i.jsx)(n.h2,{id:"gnosis-validators",children:"Gnosis validators"}),"\n",(0,i.jsxs)(n.p,{children:["To set up a Gnosis Chain validator, you can either do that ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node/manual/",children:"manually"})," or use one of the available ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node/tools",children:"one-click tools"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>o});var i=s(6540);const r={},t=i.createContext(r);function a(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7944],{7757:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>o,toc:()=>d});var i=s(4848),r=s(8453);const t={title:"Validators",sidebar_position:0},a=void 0,o={id:"validators/validators",title:"Validators",description:"General considerations",source:"@site/versioned_docs/version-1.26.0/validators/validators.md",sourceDirName:"validators",slug:"/validators/",permalink:"/1.26.0/validators/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/validators/validators.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Health check",permalink:"/1.26.0/monitoring/health-check"},next:{title:"Aura-based validators",permalink:"/1.26.0/validators/aura"}},l={},d=[{value:"General considerations",id:"general-considerations",level:2},{value:"Hardware configurations",id:"hardware-configurations",level:2},{value:"On-premises",id:"on-premises",level:3},{value:"AWS",id:"aws",level:3},{value:"Azure",id:"azure",level:3},{value:"GCP",id:"gcp",level:3},{value:"Gnosis validators",id:"gnosis-validators",level:2}];function c(e){const n={a:"a",admonition:"admonition",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"general-considerations",children:"General considerations"}),"\n",(0,i.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,i.jsxs)(n.p,{children:["Please check out the ",(0,i.jsx)(n.a,{href:"/1.26.0/fundamentals/security",children:"security considerations"})," before using Nethermind as a validator."]})}),"\n",(0,i.jsxs)(n.p,{children:["For Ethereum validators, we highly recommend checking out ",(0,i.jsx)(n.a,{href:"https://ethereum.org/staking",children:"Staking with Ethereum"})," and ",(0,i.jsx)(n.a,{href:"https://launchpad.ethereum.org/en/checklist",children:"Validator checklist"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"hardware-configurations",children:"Hardware configurations"}),"\n",(0,i.jsx)(n.p,{children:"The following hardware configurations for Ethereum Mainnet validators have been battle-tested by us and our users. We have observed excellent validator performance and stability with these configurations."}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Before setting up your infrastructure, check out ",(0,i.jsx)(n.a,{href:"/1.26.0/get-started/system-requirements#hardware-requirements",children:"Nethermind hardware requirements"}),"."]})}),"\n",(0,i.jsx)(n.h3,{id:"on-premises",children:"On-premises"}),"\n",(0,i.jsx)(n.p,{children:"A single validator on Intel NUC 11:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"CPU: Intel Core i7-1165G7"}),"\n",(0,i.jsx)(n.li,{children:"Memory: Crucial 32GB DDR4-3200 SODIMM"}),"\n",(0,i.jsx)(n.li,{children:"Storage: Samsung 980 PRO PCIe NVMe SSD 2TB"}),"\n",(0,i.jsx)(n.li,{children:"Internet speed: 620 Mbps download, 160 Mbps upload"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"aws",children:"AWS"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following EC2 instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m6i/",children:"m6i.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m7g/",children:"m7g.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/t4/",children:"t4g.small"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"azure",children:"Azure"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following VM instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dv5-dsv5-series#dv5-series",children:"Standard_D8_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dpsv5-dpdsv5-series#dpsv5-series",children:"Standard_D8ps_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dplsv5-dpldsv5-series#dplsv5-series",children:"Standard_D2pls_v5"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"gcp",children:"GCP"}),"\n",(0,i.jsxs)(n.p,{children:["Multiple validators on the ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/compute-optimized-machines#c2d-high-mem",children:"c2d-highmem-4"})," instance: 4 vCPU, 32 GB memory"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/general-purpose-machines#sharedcore",children:"e2-small"})," instances."]}),"\n",(0,i.jsx)(n.h2,{id:"gnosis-validators",children:"Gnosis validators"}),"\n",(0,i.jsxs)(n.p,{children:["To set up a Gnosis Chain validator, you can either do that ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node/manual/",children:"manually"})," or use one of the available ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node/tools",children:"one-click tools"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>o});var i=s(6540);const r={},t=i.createContext(r);function a(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/06488e66.c77d0267.js b/assets/js/06488e66.f5ffe17a.js similarity index 99% rename from assets/js/06488e66.c77d0267.js rename to assets/js/06488e66.f5ffe17a.js index d4bd15c3e..de7da9ba6 100644 --- a/assets/js/06488e66.c77d0267.js +++ b/assets/js/06488e66.f5ffe17a.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1700],{5123:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var o=t(4848),i=t(8453);const r={title:"Custom analytic tools",sidebar_position:2},a=void 0,s={id:"developers/custom-analytic-tools",title:"Custom analytic tools",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.26.0/developers/custom-analytic-tools.md",sourceDirName:"developers",slug:"/developers/custom-analytic-tools",permalink:"/1.26.0/developers/custom-analytic-tools",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/developers/custom-analytic-tools.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Custom analytic tools",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Plugins",permalink:"/1.26.0/developers/plugins"},next:{title:"FAQ",permalink:"/1.26.0/faq"}},l={},c=[];function d(e){const n={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,o.jsx)(n.p,{children:"Check plugins for some easy addition of analytical tools"}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/1.26.0/developers/plugins",children:"Learn more about Plugins"})})}),"\n",(0,o.jsx)(n.p,{children:"You can also read more about some useful interfaces below:"}),"\n",(0,o.jsxs)(n.p,{children:["There are multiple extension points where you can add custom analytics to your Nethermind node if you know some C#.\nBelow you will find an example of using two very useful interfaces - ",(0,o.jsx)(n.code,{children:"IBlockVisitor"})," and ",(0,o.jsx)(n.code,{children:"ITreeVisitor"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Just to execute the code I have added one new initialization step that invokes two custom verifiers that I have used for\ncalculating total supply in two different ways - by calculating mining rewards and by summing up all account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' [RunnerStepDependencies(typeof(ReviewBlockTree))]\n public class RunCustomTools : IStep\n {\n private readonly EthereumRunnerContext _context;\n\n public RunCustomTools(EthereumRunnerContext context)\n {\n _context = context;\n }\n\n public Task Execute(CancellationToken cancellationToken)\n {\n ILogger logger = _context.LogManager.GetClassLogger();\n IInitConfig initConfig = _context.Config();\n\n switch (initConfig.DiagnosticMode)\n {\n case DiagnosticMode.VerifySupply:\n {\n logger.Info("Genesis supply:");\n SupplyVerifier supplyVerifier = new SupplyVerifier(logger);\n StateDb stateDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateDb codeDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateReader stateReader = new StateReader(stateDb, codeDb, _context.LogManager);\n stateReader.RunTreeVisitor(supplyVerifier, _context.BlockTree!.Genesis.StateRoot);\n\n Block head = _context.BlockTree!.Head;\n logger.Info($"Head ({head.Number}) block supply:");\n supplyVerifier = new SupplyVerifier(logger);\n stateReader.RunTreeVisitor(supplyVerifier, head.StateRoot);\n break;\n }\n case DiagnosticMode.VerifyRewards:\n _context.BlockTree!.Accept(new RewardsVerifier(_context.LogManager), cancellationToken);\n break;\n }\n\n return Task.CompletedTask;\n }\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"Below you will see an example of using ITreeVisitor that allows to check all the blocks, including some of the discarded\nbranches if you wish so:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive => 10618000;\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n private UInt256 _blockRewards;\n\n public RewardsVerifier(ILogManager logManager)\n {\n _logger = logManager.GetClassLogger();\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n _blockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"And here you will find an example of a tree visitor that sums up all the account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class SupplyVerifier : ITreeVisitor\n {\n private readonly ILogger _logger;\n private UInt256 _balance = UInt256.Zero;\n private int _accountsVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public bool ShouldVisit(Keccak nextNode) { return true; }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n _balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }\n }\n'})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var o=t(6540);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1700],{5123:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var o=t(4848),i=t(8453);const r={title:"Custom analytic tools",sidebar_position:2},a=void 0,s={id:"developers/custom-analytic-tools",title:"Custom analytic tools",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.26.0/developers/custom-analytic-tools.md",sourceDirName:"developers",slug:"/developers/custom-analytic-tools",permalink:"/1.26.0/developers/custom-analytic-tools",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/developers/custom-analytic-tools.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Custom analytic tools",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Plugins",permalink:"/1.26.0/developers/plugins"},next:{title:"FAQ",permalink:"/1.26.0/faq"}},l={},c=[];function d(e){const n={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,o.jsx)(n.p,{children:"Check plugins for some easy addition of analytical tools"}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/1.26.0/developers/plugins",children:"Learn more about Plugins"})})}),"\n",(0,o.jsx)(n.p,{children:"You can also read more about some useful interfaces below:"}),"\n",(0,o.jsxs)(n.p,{children:["There are multiple extension points where you can add custom analytics to your Nethermind node if you know some C#.\nBelow you will find an example of using two very useful interfaces - ",(0,o.jsx)(n.code,{children:"IBlockVisitor"})," and ",(0,o.jsx)(n.code,{children:"ITreeVisitor"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Just to execute the code I have added one new initialization step that invokes two custom verifiers that I have used for\ncalculating total supply in two different ways - by calculating mining rewards and by summing up all account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' [RunnerStepDependencies(typeof(ReviewBlockTree))]\n public class RunCustomTools : IStep\n {\n private readonly EthereumRunnerContext _context;\n\n public RunCustomTools(EthereumRunnerContext context)\n {\n _context = context;\n }\n\n public Task Execute(CancellationToken cancellationToken)\n {\n ILogger logger = _context.LogManager.GetClassLogger();\n IInitConfig initConfig = _context.Config();\n\n switch (initConfig.DiagnosticMode)\n {\n case DiagnosticMode.VerifySupply:\n {\n logger.Info("Genesis supply:");\n SupplyVerifier supplyVerifier = new SupplyVerifier(logger);\n StateDb stateDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateDb codeDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateReader stateReader = new StateReader(stateDb, codeDb, _context.LogManager);\n stateReader.RunTreeVisitor(supplyVerifier, _context.BlockTree!.Genesis.StateRoot);\n\n Block head = _context.BlockTree!.Head;\n logger.Info($"Head ({head.Number}) block supply:");\n supplyVerifier = new SupplyVerifier(logger);\n stateReader.RunTreeVisitor(supplyVerifier, head.StateRoot);\n break;\n }\n case DiagnosticMode.VerifyRewards:\n _context.BlockTree!.Accept(new RewardsVerifier(_context.LogManager), cancellationToken);\n break;\n }\n\n return Task.CompletedTask;\n }\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"Below you will see an example of using ITreeVisitor that allows to check all the blocks, including some of the discarded\nbranches if you wish so:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive => 10618000;\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n private UInt256 _blockRewards;\n\n public RewardsVerifier(ILogManager logManager)\n {\n _logger = logManager.GetClassLogger();\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n _blockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"And here you will find an example of a tree visitor that sums up all the account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class SupplyVerifier : ITreeVisitor\n {\n private readonly ILogger _logger;\n private UInt256 _balance = UInt256.Zero;\n private int _accountsVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public bool ShouldVisit(Keccak nextNode) { return true; }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n _balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }\n }\n'})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var o=t(6540);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/096c865c.94f420dd.js b/assets/js/096c865c.3b998d51.js similarity index 99% rename from assets/js/096c865c.94f420dd.js rename to assets/js/096c865c.3b998d51.js index 1f87a2102..67025132c 100644 --- a/assets/js/096c865c.94f420dd.js +++ b/assets/js/096c865c.3b998d51.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5809],{7828:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),a=t(8453),s=t(1470),l=t(9365);const o={title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},i=void 0,c={id:"interacting/json-rpc-ns/web3",title:"web3 namespace",description:"web3_clientVersion",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/web3.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/web3",permalink:"/1.27.0/interacting/json-rpc-ns/web3",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/web3.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:10,frontMatter:{title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"txpool",permalink:"/1.27.0/interacting/json-rpc-ns/txpool"},next:{title:"Metrics",permalink:"/1.27.0/monitoring/metrics/"}},u={},d=[{value:"web3_clientVersion",id:"web3_clientversion",level:3},{value:"web3_sha3",id:"web3_sha3",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"web3_clientversion",children:"web3_clientVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns the current client version."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_clientVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"web3_sha3",children:"web3_sha3"}),"\n",(0,r.jsx)(n.p,{children:"Returns Keccak of the given data."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_sha3",\n "params": [data]\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const a={tabItem:"tabItem_Ymn6"};var s=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>y});var r=t(6540),a=t(4164),s=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const a=(0,l.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(s),(0,r.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(a.location.search);n.set(s,e),a.replace({...a.location,search:n.toString()})}),[s,a])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s}))),[c,d]=b({queryString:t,groupId:a}),[m,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,s]=(0,u.Dv)(t);return[a,(0,r.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:a}),v=(()=>{const e=c??m;return h({value:e,tabValues:s})?e:null})();(0,o.A)((()=>{v&&i(v)}),[v]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)}),[d,f,s]),tabValues:s}}var f=t(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function x(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),a=o[t].value;a!==r&&(c(n),l(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...s,className:(0,a.A)("tabs__item",v.tabItem,s?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:s}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===s));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function w(e){const n=m(e);return(0,j.jsxs)("div",{className:(0,a.A)("tabs-container",v.tabList),children:[(0,j.jsx)(x,{...n,...e}),(0,j.jsx)(g,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,j.jsx)(w,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const a={},s=r.createContext(a);function l(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5809],{7828:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),a=t(8453),s=t(1470),l=t(9365);const o={title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},i=void 0,c={id:"interacting/json-rpc-ns/web3",title:"web3 namespace",description:"web3_clientVersion",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/web3.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/web3",permalink:"/1.27.0/interacting/json-rpc-ns/web3",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/web3.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:10,frontMatter:{title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"txpool",permalink:"/1.27.0/interacting/json-rpc-ns/txpool"},next:{title:"Metrics",permalink:"/1.27.0/monitoring/metrics/"}},u={},d=[{value:"web3_clientVersion",id:"web3_clientversion",level:3},{value:"web3_sha3",id:"web3_sha3",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"web3_clientversion",children:"web3_clientVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns the current client version."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_clientVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"web3_sha3",children:"web3_sha3"}),"\n",(0,r.jsx)(n.p,{children:"Returns Keccak of the given data."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_sha3",\n "params": [data]\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const a={tabItem:"tabItem_Ymn6"};var s=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>y});var r=t(6540),a=t(4164),s=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const a=(0,l.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(s),(0,r.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(a.location.search);n.set(s,e),a.replace({...a.location,search:n.toString()})}),[s,a])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s}))),[c,d]=b({queryString:t,groupId:a}),[m,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,s]=(0,u.Dv)(t);return[a,(0,r.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:a}),v=(()=>{const e=c??m;return h({value:e,tabValues:s})?e:null})();(0,o.A)((()=>{v&&i(v)}),[v]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)}),[d,f,s]),tabValues:s}}var f=t(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function x(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),a=o[t].value;a!==r&&(c(n),l(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...s,className:(0,a.A)("tabs__item",v.tabItem,s?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:s}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===s));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function w(e){const n=m(e);return(0,j.jsxs)("div",{className:(0,a.A)("tabs-container",v.tabList),children:[(0,j.jsx)(x,{...n,...e}),(0,j.jsx)(g,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,j.jsx)(w,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const a={},s=r.createContext(a);function l(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/09768f65.2a282a57.js b/assets/js/09768f65.8f819633.js similarity index 99% rename from assets/js/09768f65.2a282a57.js rename to assets/js/09768f65.8f819633.js index 249f92823..073741024 100644 --- a/assets/js/09768f65.2a282a57.js +++ b/assets/js/09768f65.8f819633.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8324],{7762:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>l,frontMatter:()=>s,metadata:()=>h,toc:()=>a});var i=t(4848),r=t(8453);const s={title:"Migrating from Geth",sidebar_position:4},o=void 0,h={id:"get-started/migrating-from-geth",title:"Migrating from Geth",description:"This guide will walk you through all the steps required for a seamless and quick transition.",source:"@site/docs/get-started/migrating-from-geth.md",sourceDirName:"get-started",slug:"/get-started/migrating-from-geth",permalink:"/next/get-started/migrating-from-geth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/get-started/migrating-from-geth.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"Migrating from Geth",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Layer 2 networks",permalink:"/next/get-started/running-node/l2-networks"},next:{title:"Configuration",permalink:"/next/fundamentals/configuration"}},d={},a=[{value:"Option 1: Sync Nethermind next to Geth",id:"option-1",level:2},{value:"Option 2: Sync Nethermind using Sedge next to Geth",id:"option-2",level:2},{value:"Option 3: Remove Geth and sync Nethermind",id:"option-3",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This guide will walk you through all the steps required for a seamless and quick transition."}),"\n",(0,i.jsxs)(n.p,{children:["First, ensure ",(0,i.jsx)(n.em,{children:"the disk has enough space"}),". The most secure way is having a Nethermind synced on the same machine as Geth without shutting Geth down. That allows you to check whether Nethermind is syncing properly, verify whether everything works as expected, and reduce node downtime to a bare minimum. This is a recommended approach for any public JSON-RPC provider or a validator."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the disk has enough space, ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"})," or ",(0,i.jsx)(n.a,{href:"#option-2",children:"option 2"})," are the recommended choices."]}),"\n",(0,i.jsx)(n.li,{children:"If there is not enough disk space, and downtime is not an option, we recommend either extending the disk or, if not possible, hosting Nethermind on another machine, syncing it, and whenever it completes, moving everything validator-related to that machine, and abandoning the first one."}),"\n",(0,i.jsxs)(n.li,{children:["If downtime of around 12 hours or more is not a problem, see the ",(0,i.jsx)(n.a,{href:"#option-3",children:"option 3"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"option-1",children:"Option 1: Sync Nethermind next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:["First, ",(0,i.jsx)(n.a,{href:"/next/get-started/installing-nethermind",children:"install Nethermind"})," and a ",(0,i.jsx)(n.a,{href:"/next/get-started/running-node/consensus-clients",children:"consensus client"})," of your choice."]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"If you choose the same consensus client for Nethermind that is already being used with Geth, ensure their settings, such as data directories, do not interfere."}),"\n",(0,i.jsx)(n.li,{children:"Ensure the network ports of the consensus client paired with Nethermind and the one paired with Geth do not interfere with each other."}),"\n",(0,i.jsxs)(n.li,{children:["Ensure the JSON-RPC port, Engine API port, and the P2P networking ports of Nethermind are different from the ones used by Geth. These ports are set using the following command line options:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort "})}),"\n"]}),"\n"]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. To check the sync status, use the ",(0,i.jsx)(n.a,{href:"/next/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method. When it returns ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind is considered fully synced with all block bodies and receipts needed to work properly as a validator. Another option to monitor the sync is a ",(0,i.jsx)(n.a,{href:"/next/monitoring/health-check",children:"health check"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Once Nethermind is synced, shut down both Geth and Nethermind, along with its paired consensus client. Then, restart Nethermind using the ports assigned for and the JWT secret used by Geth before. Ensure no warnings or errors are present in the logs of both Nethermind and the consensus client. Also, check if Nethermind is following the chain properly. If everything is alright, you can remove Geth and the consensus client paired with Nethermind previously along with their data."}),"\n",(0,i.jsx)(n.h2,{id:"option-2",children:"Option 2: Sync Nethermind using Sedge next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"})," is a setup tool for PoS validators and nodes that runs on Linux and macOS."]}),"\n",(0,i.jsxs)(n.p,{children:["This option is similar to the ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"}),", but Sedge automatically takes care of conflicting settings making the entire process much easier."]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsx)(n.p,{children:"You can add a flag to Sedge as follows. For instance:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["For the execution client, ",(0,i.jsx)(n.code,{children:"--el-extra-flag JsonRpc.Port=8546"})]}),"\n",(0,i.jsxs)(n.li,{children:["For the consensus client, ",(0,i.jsx)(n.code,{children:"--cl-extra-flag rpc-port=4001"})]}),"\n"]})]}),"\n",(0,i.jsxs)(n.p,{children:["Once Nethermind is synced, you can remove extra flags if any from the ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," and restart the node as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"docker compose stop execution\ndocker compose up -d execution\n"})}),"\n",(0,i.jsx)(n.h2,{id:"option-3",children:"Option 3: Remove Geth and sync Nethermind"}),"\n",(0,i.jsx)(n.p,{children:"This is the simplest option as it doesn't require configuration adjustments. However, the node will be down until Nethermind is syncing."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Shut down and remove Geth along with its data."}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/next/get-started/installing-nethermind",children:"Install Nethermind"})}),"\n",(0,i.jsx)(n.li,{children:"Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the ",(0,i.jsx)(n.a,{href:"/next/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method or the ",(0,i.jsx)(n.a,{href:"/next/monitoring/health-check",children:"health check"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>h});var i=t(6540);const r={},s=i.createContext(r);function o(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function h(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8324],{7762:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>l,frontMatter:()=>s,metadata:()=>h,toc:()=>a});var i=t(4848),r=t(8453);const s={title:"Migrating from Geth",sidebar_position:4},o=void 0,h={id:"get-started/migrating-from-geth",title:"Migrating from Geth",description:"This guide will walk you through all the steps required for a seamless and quick transition.",source:"@site/docs/get-started/migrating-from-geth.md",sourceDirName:"get-started",slug:"/get-started/migrating-from-geth",permalink:"/next/get-started/migrating-from-geth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/get-started/migrating-from-geth.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"Migrating from Geth",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Layer 2 networks",permalink:"/next/get-started/running-node/l2-networks"},next:{title:"Configuration",permalink:"/next/fundamentals/configuration"}},d={},a=[{value:"Option 1: Sync Nethermind next to Geth",id:"option-1",level:2},{value:"Option 2: Sync Nethermind using Sedge next to Geth",id:"option-2",level:2},{value:"Option 3: Remove Geth and sync Nethermind",id:"option-3",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This guide will walk you through all the steps required for a seamless and quick transition."}),"\n",(0,i.jsxs)(n.p,{children:["First, ensure ",(0,i.jsx)(n.em,{children:"the disk has enough space"}),". The most secure way is having a Nethermind synced on the same machine as Geth without shutting Geth down. That allows you to check whether Nethermind is syncing properly, verify whether everything works as expected, and reduce node downtime to a bare minimum. This is a recommended approach for any public JSON-RPC provider or a validator."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the disk has enough space, ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"})," or ",(0,i.jsx)(n.a,{href:"#option-2",children:"option 2"})," are the recommended choices."]}),"\n",(0,i.jsx)(n.li,{children:"If there is not enough disk space, and downtime is not an option, we recommend either extending the disk or, if not possible, hosting Nethermind on another machine, syncing it, and whenever it completes, moving everything validator-related to that machine, and abandoning the first one."}),"\n",(0,i.jsxs)(n.li,{children:["If downtime of around 12 hours or more is not a problem, see the ",(0,i.jsx)(n.a,{href:"#option-3",children:"option 3"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"option-1",children:"Option 1: Sync Nethermind next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:["First, ",(0,i.jsx)(n.a,{href:"/next/get-started/installing-nethermind",children:"install Nethermind"})," and a ",(0,i.jsx)(n.a,{href:"/next/get-started/running-node/consensus-clients",children:"consensus client"})," of your choice."]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"If you choose the same consensus client for Nethermind that is already being used with Geth, ensure their settings, such as data directories, do not interfere."}),"\n",(0,i.jsx)(n.li,{children:"Ensure the network ports of the consensus client paired with Nethermind and the one paired with Geth do not interfere with each other."}),"\n",(0,i.jsxs)(n.li,{children:["Ensure the JSON-RPC port, Engine API port, and the P2P networking ports of Nethermind are different from the ones used by Geth. These ports are set using the following command line options:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort "})}),"\n"]}),"\n"]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. To check the sync status, use the ",(0,i.jsx)(n.a,{href:"/next/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method. When it returns ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind is considered fully synced with all block bodies and receipts needed to work properly as a validator. Another option to monitor the sync is a ",(0,i.jsx)(n.a,{href:"/next/monitoring/health-check",children:"health check"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Once Nethermind is synced, shut down both Geth and Nethermind, along with its paired consensus client. Then, restart Nethermind using the ports assigned for and the JWT secret used by Geth before. Ensure no warnings or errors are present in the logs of both Nethermind and the consensus client. Also, check if Nethermind is following the chain properly. If everything is alright, you can remove Geth and the consensus client paired with Nethermind previously along with their data."}),"\n",(0,i.jsx)(n.h2,{id:"option-2",children:"Option 2: Sync Nethermind using Sedge next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"})," is a setup tool for PoS validators and nodes that runs on Linux and macOS."]}),"\n",(0,i.jsxs)(n.p,{children:["This option is similar to the ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"}),", but Sedge automatically takes care of conflicting settings making the entire process much easier."]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsx)(n.p,{children:"You can add a flag to Sedge as follows. For instance:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["For the execution client, ",(0,i.jsx)(n.code,{children:"--el-extra-flag JsonRpc.Port=8546"})]}),"\n",(0,i.jsxs)(n.li,{children:["For the consensus client, ",(0,i.jsx)(n.code,{children:"--cl-extra-flag rpc-port=4001"})]}),"\n"]})]}),"\n",(0,i.jsxs)(n.p,{children:["Once Nethermind is synced, you can remove extra flags if any from the ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," and restart the node as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"docker compose stop execution\ndocker compose up -d execution\n"})}),"\n",(0,i.jsx)(n.h2,{id:"option-3",children:"Option 3: Remove Geth and sync Nethermind"}),"\n",(0,i.jsx)(n.p,{children:"This is the simplest option as it doesn't require configuration adjustments. However, the node will be down until Nethermind is syncing."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Shut down and remove Geth along with its data."}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/next/get-started/installing-nethermind",children:"Install Nethermind"})}),"\n",(0,i.jsx)(n.li,{children:"Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the ",(0,i.jsx)(n.a,{href:"/next/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method or the ",(0,i.jsx)(n.a,{href:"/next/monitoring/health-check",children:"health check"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>h});var i=t(6540);const r={},s=i.createContext(r);function o(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function h(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0be7507e.3908ebcf.js b/assets/js/0be7507e.6d42691f.js similarity index 99% rename from assets/js/0be7507e.3908ebcf.js rename to assets/js/0be7507e.6d42691f.js index d5c949e88..f86bad9ba 100644 --- a/assets/js/0be7507e.3908ebcf.js +++ b/assets/js/0be7507e.6d42691f.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4342],{9773:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const t={title:"parity namespace",sidebar_label:"parity",sidebar_position:5},d=void 0,a={id:"interacting/json-rpc-ns/parity",title:"parity namespace",description:"parity_clearEngineSigner",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/parity.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/parity",permalink:"/1.28.0/interacting/json-rpc-ns/parity",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/parity.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:5,frontMatter:{title:"parity namespace",sidebar_label:"parity",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"net",permalink:"/1.28.0/interacting/json-rpc-ns/net"},next:{title:"personal",permalink:"/1.28.0/interacting/json-rpc-ns/personal"}},o={},h=[{value:"parity_clearEngineSigner",id:"parity_clearenginesigner",level:3},{value:"parity_enode",id:"parity_enode",level:3},{value:"parity_getBlockReceipts",id:"parity_getblockreceipts",level:3},{value:"parity_netPeers",id:"parity_netpeers",level:3},{value:"parity_pendingTransactions",id:"parity_pendingtransactions",level:3},{value:"parity_setEngineSigner",id:"parity_setenginesigner",level:3},{value:"parity_setEngineSignerSecret",id:"parity_setenginesignersecret",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"parity_clearenginesigner",children:"parity_clearEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_clearEngineSigner",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_enode",children:"parity_enode"}),"\n",(0,r.jsx)(n.p,{children:"Returns the node enode URI."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_enode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_getblockreceipts",children:"parity_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_netpeers",children:"parity_netPeers"}),"\n",(0,r.jsx)(n.p,{children:"Returns connected peers. Peers with non-empty protocols have completed handshake."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_netPeers",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"active"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"connected"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"max"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"peers"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"caps"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"network"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"localAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"remoteAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"version"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_pendingtransactions",children:"parity_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given sender address."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_pendingTransactions",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"condition"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creates"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"publicKey"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prefixedBytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"raw"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"standardV"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesigner",children:"parity_setEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"password"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSigner",\n "params": [address, password]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesignersecret",children:"parity_setEngineSignerSecret"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"privateKey"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSignerSecret",\n "params": [privateKey]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),t=s(205),d=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function p(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[c,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:s,groupId:i}),[p,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),m=(()=>{const e=a??p;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{m&&d(m)}),[m]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,l]),tabValues:l}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),i=t[s].value;i!==r&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",m.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=p(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",m.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,g.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>t});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4342],{9773:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const t={title:"parity namespace",sidebar_label:"parity",sidebar_position:5},d=void 0,a={id:"interacting/json-rpc-ns/parity",title:"parity namespace",description:"parity_clearEngineSigner",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/parity.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/parity",permalink:"/1.28.0/interacting/json-rpc-ns/parity",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/parity.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:5,frontMatter:{title:"parity namespace",sidebar_label:"parity",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"net",permalink:"/1.28.0/interacting/json-rpc-ns/net"},next:{title:"personal",permalink:"/1.28.0/interacting/json-rpc-ns/personal"}},o={},h=[{value:"parity_clearEngineSigner",id:"parity_clearenginesigner",level:3},{value:"parity_enode",id:"parity_enode",level:3},{value:"parity_getBlockReceipts",id:"parity_getblockreceipts",level:3},{value:"parity_netPeers",id:"parity_netpeers",level:3},{value:"parity_pendingTransactions",id:"parity_pendingtransactions",level:3},{value:"parity_setEngineSigner",id:"parity_setenginesigner",level:3},{value:"parity_setEngineSignerSecret",id:"parity_setenginesignersecret",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"parity_clearenginesigner",children:"parity_clearEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_clearEngineSigner",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_enode",children:"parity_enode"}),"\n",(0,r.jsx)(n.p,{children:"Returns the node enode URI."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_enode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_getblockreceipts",children:"parity_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_netpeers",children:"parity_netPeers"}),"\n",(0,r.jsx)(n.p,{children:"Returns connected peers. Peers with non-empty protocols have completed handshake."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_netPeers",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"active"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"connected"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"max"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"peers"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"caps"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"network"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"localAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"remoteAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"version"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_pendingtransactions",children:"parity_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given sender address."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_pendingTransactions",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"condition"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creates"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"publicKey"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prefixedBytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"raw"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"standardV"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesigner",children:"parity_setEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"password"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSigner",\n "params": [address, password]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesignersecret",children:"parity_setEngineSignerSecret"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"privateKey"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSignerSecret",\n "params": [privateKey]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),t=s(205),d=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function p(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[c,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:s,groupId:i}),[p,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),m=(()=>{const e=a??p;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{m&&d(m)}),[m]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,l]),tabValues:l}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),i=t[s].value;i!==r&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",m.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=p(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",m.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,g.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>t});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1011204e.1a6d4507.js b/assets/js/1011204e.7ad37bee.js similarity index 99% rename from assets/js/1011204e.1a6d4507.js rename to assets/js/1011204e.7ad37bee.js index f1662302d..40ee51387 100644 --- a/assets/js/1011204e.1a6d4507.js +++ b/assets/js/1011204e.7ad37bee.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4649],{7459:(n,e,s)=>{s.r(e),s.d(e,{assets:()=>h,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>l,toc:()=>t});var r=s(4848),i=s(8453);const d={title:"Metrics",sidebar_position:0,toc_max_heading_level:4},c=void 0,l={id:"monitoring/metrics/metrics",title:"Metrics",description:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:",source:"@site/versioned_docs/version-1.27.0/monitoring/metrics/metrics.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/",permalink:"/1.27.0/monitoring/metrics/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/monitoring/metrics/metrics.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Metrics",sidebar_position:0,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"web3",permalink:"/1.27.0/interacting/json-rpc-ns/web3"},next:{title:"Grafana and Prometheus",permalink:"/1.27.0/monitoring/metrics/grafana-and-prometheus"}},h={},t=[{value:"Parameters by namespace",id:"parameters-by-namespace",level:3},{value:"Aura",id:"aura",level:4},{value:"Blockchain",id:"blockchain",level:4},{value:"Db",id:"db",level:4},{value:"Evm",id:"evm",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"Merge",id:"merge",level:4},{value:"Network",id:"network",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Runner",id:"runner",level:4},{value:"Synchronization",id:"synchronization",level:4},{value:"Trie",id:"trie",level:4},{value:"TxPool",id:"txpool",level:4}];function o(n){const e={a:"a",code:"code",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...n.components},{Details:s}=e;return s||function(n,e){throw new Error("Expected "+(e?"component":"object")+" `"+n+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(e.p,{children:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/1.27.0/monitoring/metrics/grafana-and-prometheus",children:"Grafana and Prometheus"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/1.27.0/monitoring/metrics/dotnet-counters",children:"dotnet-counters"})}),"\n"]}),"\n",(0,r.jsx)(e.h3,{id:"parameters-by-namespace",children:"Parameters by namespace"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"aura",children:"Aura"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_au_ra_step"})})}),"\n",(0,r.jsx)(e.p,{children:"Current AuRa step"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_commit_hash_transaction"})})}),"\n",(0,r.jsx)(e.p,{children:"RANDAO number of commit hash transactions"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_emit_initiate_change"})})}),"\n",(0,r.jsx)(e.p,{children:"POSDAO number of emit init change transactions"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reported_benign_misbehaviour"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reported benign misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reported_malicious_misbehaviour"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reported malicious misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reveal_number"})})}),"\n",(0,r.jsx)(e.p,{children:"RANDAO number of reveal number transactions"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sealed_transactions"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of sealed transactions generated by engine"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_validators_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of current AuRa validators"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"blockchain",children:"Blockchain"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_best_known_block_number"})})}),"\n",(0,r.jsx)(e.p,{children:"The estimated highest block available."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blockchain_height"})})}),"\n",(0,r.jsx)(e.p,{children:"The current height of the canonical chain."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blocks"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of blocks processed"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blocks_sealed"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of sealed blocks"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_failed_block_seals"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of failed block seals"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_gas_limit"})})}),"\n",(0,r.jsx)(e.p,{children:"Gas Limit for processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_gas_used"})})}),"\n",(0,r.jsx)(e.p,{children:"Gas Used in processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_last_difficulty"})})}),"\n",(0,r.jsx)(e.p,{children:"Difficulty of the last block"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_mgas"})})}),"\n",(0,r.jsx)(e.p,{children:"Total MGas processed"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_mgas_per_sec"})})}),"\n",(0,r.jsx)(e.p,{children:"MGas processed per second"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_processing_queue_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blocks awaiting for processing."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_recovery_queue_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blocks awaiting for recovery of public keys from signatures."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reorganizations"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of chain reorganizations"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_total_difficulty"})})}),"\n",(0,r.jsx)(e.p,{children:"Total difficulty on the chain"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_transactions"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of transactions processed"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"db",children:"Db"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_code_db_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Code DB cache reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_block_cache_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database block cache size per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_compaction_stats"})})}),"\n",(0,r.jsx)(e.p,{children:"Metrics extracted from RocksDB Compaction Stats"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_index_filter_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database index and filter size per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_memtable_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database memtable per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Database reads per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database size per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_stats"})})}),"\n",(0,r.jsx)(e.p,{children:"Metrics extracted from RocksDB Compaction Stats and DB Statistics"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_writes"})})}),"\n",(0,r.jsx)(e.p,{children:"Database writes per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_db_pruning"})})}),"\n",(0,r.jsx)(e.p,{children:"Indicator if StadeDb is being pruned."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_reader_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Reader reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_tree_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Trie cache hits."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Trie reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_tree_writes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Blocks Trie writes."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_reader_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage reader reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_tree_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie cache hits."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_tree_writes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie writes."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_code_db_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Code DB cache reads on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_state_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Trie reads on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_storage_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie reads on thread."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"evm",children:"Evm"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blockhash_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BLOCKHASH opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_bn254_add_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BN254_ADD precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_bn254_mul_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BN254_MUL precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_bn254_pairing_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BN254_PAIRING precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls to other contracts."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_contracts_analysed"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contracts' code analysed for jump destinations."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_creates"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contract create calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_ec_recover_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of EC_RECOVERY precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_empty_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls made to addresses without code."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_evm_exceptions"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of EVM exceptions thrown by contracts."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_exp_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of EXP opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_m_copy_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of MCOPY opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_mod_exp_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of MODEXP precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_point_evaluation_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Point Evaluation precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_ripemd160_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of RIPEMD160 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_self_destructs"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SELFDESTRUCT calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sha256_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SHA256 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sload_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sstore_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SSTORE opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls to other contracts on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_contracts_analysed"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contracts' code analysed for jump destinations on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_creates"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contract create calls on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_empty_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls made to addresses without code on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_s_load_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SLOAD opcodes executed on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_s_store_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SSTORE opcodes executed on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tload_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of TLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tstore_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of TSTORE opcodes executed."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_bytes_received"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC bytes received."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_bytes_sent"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC bytes sent."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_errors"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests processed with errors."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_invalid_requests"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests that were invalid."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_request_deserialization_failures"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests that failed JSON deserialization."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_requests"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of JSON RPC requests received by the node."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_successes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests processed successfully."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"merge",children:"Merge"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_forkchoice_upded_execution_time"})})}),"\n",(0,r.jsx)(e.p,{children:"ForkchoiceUpded request execution time"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_get_payload_requests"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of GetPayload Requests"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_new_payload_execution_time"})})}),"\n",(0,r.jsx)(e.p,{children:"NewPayload request execution time"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_number_of_transactions_in_get_payload"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Transactions included in the Last GetPayload Request"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"network",children:"Network"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_handshakes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of devp2p handshakes"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_handshake_timeouts"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of devp2p handshake timeouts"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_incoming_connections"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of incoming connection."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_incoming_p2_p_message_bytes"})})}),"\n",(0,r.jsx)(e.p,{children:"Bytes of incoming p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_incoming_p2_p_messages"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of incoming p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_local_disconnects_total"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of local disconnects"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_outgoing_connections"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of outgoing connection."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_outgoing_p2_p_message_bytes"})})}),"\n",(0,r.jsx)(e.p,{children:"Bytes of outgoing p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_outgoing_p2_p_messages"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of outgoing p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_peer_limit"})})}),"\n",(0,r.jsx)(e.p,{children:"The maximum number of peers this node allows to connect."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_remote_disconnects_total"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of remote disconnects"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"pruning",children:"Pruning"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_cached_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that are currently kept in cache (either persisted or not)"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_committed_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been committed since the session start. These nodes may have been pruned, persisted or replaced."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_deep_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been removed from the cache during deep pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_deep_pruning_time"})})}),"\n",(0,r.jsx)(e.p,{children:"Time taken by the last deep pruning."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_last_persisted_block_number"})})}),"\n",(0,r.jsx)(e.p,{children:"Last persisted block number (snapshot)."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_loaded_from_cache_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reads from the node cache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_loaded_from_db_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of DB reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_loaded_from_rlp_cache_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reads from the RLP cache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_memory_used_by_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Estimated memory used by cache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_persisted_node_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been persisted since the session start."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been removed from the cache during pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pruned_transient_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been removed from the cache during pruning because they were no longer needed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pruning_time"})})}),"\n",(0,r.jsx)(e.p,{children:"Time taken by the last pruning."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_removed_node_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that was removed via live pruning."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_replaced_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of nodes that have been exactly the same as other nodes in the cache when committing."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_snapshot_persistence_time"})})}),"\n",(0,r.jsx)(e.p,{children:"Time taken by the last snapshot persistence."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"runner",children:"Runner"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_version"})})}),"\n",(0,r.jsx)(e.p,{children:"Version number"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"synchronization",children:"Synchronization"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sync_peers"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of sync peers."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"trie",children:"Trie"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tree_node_hash_calculations"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of trie node hash calculations."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tree_node_rlp_decodings"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of trie node RLP decodings."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tree_node_rlp_encodings"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of trie node RLP encodings."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"txpool",children:"TxPool"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blobs_in_block"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blobs in the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blob_transaction_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blob transactions in pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blob_transactions_in_block"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blob transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_dark_pool_ratio_level1"})})}),"\n",(0,r.jsx)(e.p,{children:"Ratio of transactions in the block absent in hashCache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_dark_pool_ratio_level2"})})}),"\n",(0,r.jsx)(e.p,{children:"Ratio of transactions in the block absent in pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_eip1559_transactions_ratio"})})}),"\n",(0,r.jsx)(e.p,{children:"Ratio of 1559-type transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending1559_transactions_added"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending 1559-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_blob_transactions_added"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending blob-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_added"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_balance_below_value"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because balance is less than txn value."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_conflicting_tx_type"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions rejected because of already pending tx of other type (allowed blob txs or others, not both at once)."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_discarded"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_evicted"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions evicted from transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_gas_limit_too_high"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because the gas limit was to high for the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_hashes_received"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of hashes of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_hashes_sent"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of hashes of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_known"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of already known pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_low_nonce"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions with already used nonce."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_malformed"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of malformed transactions."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_nonce_gap"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of not having preceding nonce of this sender in TxPool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_nonce_too_far_in_future"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions with nonce too far in future."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_not_supported_tx_type"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of not supported transaction type."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored after passing early rejections as balance is too low to compete with lowest effective fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_replace"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were trying to replace tx with the same sender and nonce and failed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_received"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_sent"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_too_low_balance"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because balance too low for fee to be higher than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_too_low_fee"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of fee lower than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_too_low_priority_fee"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of priority fee lower than minimal requirement."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_unresolvable_sender"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because the sender couldn't be resolved."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_with_expensive_filtering"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions that reached filters which are resource expensive"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_zero_balance"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because balance is zero and cannot pay gas."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_transaction_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions in pool."}),"\n"]}),"\n"]})})]})]})}function x(n={}){const{wrapper:e}={...(0,i.R)(),...n.components};return e?(0,r.jsx)(e,{...n,children:(0,r.jsx)(o,{...n})}):o(n)}},8453:(n,e,s)=>{s.d(e,{R:()=>c,x:()=>l});var r=s(6540);const i={},d=r.createContext(i);function c(n){const e=r.useContext(d);return r.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function l(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(i):n.components||i:c(n.components),r.createElement(d.Provider,{value:e},n.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4649],{7459:(n,e,s)=>{s.r(e),s.d(e,{assets:()=>h,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>l,toc:()=>t});var r=s(4848),i=s(8453);const d={title:"Metrics",sidebar_position:0,toc_max_heading_level:4},c=void 0,l={id:"monitoring/metrics/metrics",title:"Metrics",description:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:",source:"@site/versioned_docs/version-1.27.0/monitoring/metrics/metrics.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/",permalink:"/1.27.0/monitoring/metrics/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/monitoring/metrics/metrics.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Metrics",sidebar_position:0,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"web3",permalink:"/1.27.0/interacting/json-rpc-ns/web3"},next:{title:"Grafana and Prometheus",permalink:"/1.27.0/monitoring/metrics/grafana-and-prometheus"}},h={},t=[{value:"Parameters by namespace",id:"parameters-by-namespace",level:3},{value:"Aura",id:"aura",level:4},{value:"Blockchain",id:"blockchain",level:4},{value:"Db",id:"db",level:4},{value:"Evm",id:"evm",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"Merge",id:"merge",level:4},{value:"Network",id:"network",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Runner",id:"runner",level:4},{value:"Synchronization",id:"synchronization",level:4},{value:"Trie",id:"trie",level:4},{value:"TxPool",id:"txpool",level:4}];function o(n){const e={a:"a",code:"code",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...n.components},{Details:s}=e;return s||function(n,e){throw new Error("Expected "+(e?"component":"object")+" `"+n+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(e.p,{children:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/1.27.0/monitoring/metrics/grafana-and-prometheus",children:"Grafana and Prometheus"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/1.27.0/monitoring/metrics/dotnet-counters",children:"dotnet-counters"})}),"\n"]}),"\n",(0,r.jsx)(e.h3,{id:"parameters-by-namespace",children:"Parameters by namespace"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"aura",children:"Aura"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_au_ra_step"})})}),"\n",(0,r.jsx)(e.p,{children:"Current AuRa step"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_commit_hash_transaction"})})}),"\n",(0,r.jsx)(e.p,{children:"RANDAO number of commit hash transactions"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_emit_initiate_change"})})}),"\n",(0,r.jsx)(e.p,{children:"POSDAO number of emit init change transactions"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reported_benign_misbehaviour"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reported benign misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reported_malicious_misbehaviour"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reported malicious misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reveal_number"})})}),"\n",(0,r.jsx)(e.p,{children:"RANDAO number of reveal number transactions"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sealed_transactions"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of sealed transactions generated by engine"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_validators_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of current AuRa validators"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"blockchain",children:"Blockchain"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_best_known_block_number"})})}),"\n",(0,r.jsx)(e.p,{children:"The estimated highest block available."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blockchain_height"})})}),"\n",(0,r.jsx)(e.p,{children:"The current height of the canonical chain."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blocks"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of blocks processed"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blocks_sealed"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of sealed blocks"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_failed_block_seals"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of failed block seals"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_gas_limit"})})}),"\n",(0,r.jsx)(e.p,{children:"Gas Limit for processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_gas_used"})})}),"\n",(0,r.jsx)(e.p,{children:"Gas Used in processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_last_difficulty"})})}),"\n",(0,r.jsx)(e.p,{children:"Difficulty of the last block"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_mgas"})})}),"\n",(0,r.jsx)(e.p,{children:"Total MGas processed"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_mgas_per_sec"})})}),"\n",(0,r.jsx)(e.p,{children:"MGas processed per second"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_processing_queue_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blocks awaiting for processing."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_recovery_queue_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blocks awaiting for recovery of public keys from signatures."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reorganizations"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of chain reorganizations"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_total_difficulty"})})}),"\n",(0,r.jsx)(e.p,{children:"Total difficulty on the chain"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_transactions"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of transactions processed"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"db",children:"Db"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_code_db_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Code DB cache reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_block_cache_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database block cache size per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_compaction_stats"})})}),"\n",(0,r.jsx)(e.p,{children:"Metrics extracted from RocksDB Compaction Stats"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_index_filter_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database index and filter size per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_memtable_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database memtable per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Database reads per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database size per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_stats"})})}),"\n",(0,r.jsx)(e.p,{children:"Metrics extracted from RocksDB Compaction Stats and DB Statistics"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_writes"})})}),"\n",(0,r.jsx)(e.p,{children:"Database writes per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_db_pruning"})})}),"\n",(0,r.jsx)(e.p,{children:"Indicator if StadeDb is being pruned."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_reader_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Reader reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_tree_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Trie cache hits."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Trie reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_tree_writes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Blocks Trie writes."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_reader_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage reader reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_tree_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie cache hits."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_tree_writes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie writes."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_code_db_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Code DB cache reads on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_state_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Trie reads on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_storage_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie reads on thread."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"evm",children:"Evm"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blockhash_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BLOCKHASH opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_bn254_add_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BN254_ADD precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_bn254_mul_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BN254_MUL precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_bn254_pairing_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BN254_PAIRING precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls to other contracts."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_contracts_analysed"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contracts' code analysed for jump destinations."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_creates"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contract create calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_ec_recover_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of EC_RECOVERY precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_empty_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls made to addresses without code."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_evm_exceptions"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of EVM exceptions thrown by contracts."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_exp_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of EXP opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_m_copy_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of MCOPY opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_mod_exp_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of MODEXP precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_point_evaluation_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Point Evaluation precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_ripemd160_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of RIPEMD160 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_self_destructs"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SELFDESTRUCT calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sha256_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SHA256 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sload_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sstore_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SSTORE opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls to other contracts on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_contracts_analysed"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contracts' code analysed for jump destinations on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_creates"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contract create calls on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_empty_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls made to addresses without code on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_s_load_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SLOAD opcodes executed on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_s_store_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SSTORE opcodes executed on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tload_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of TLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tstore_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of TSTORE opcodes executed."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_bytes_received"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC bytes received."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_bytes_sent"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC bytes sent."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_errors"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests processed with errors."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_invalid_requests"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests that were invalid."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_request_deserialization_failures"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests that failed JSON deserialization."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_requests"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of JSON RPC requests received by the node."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_successes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests processed successfully."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"merge",children:"Merge"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_forkchoice_upded_execution_time"})})}),"\n",(0,r.jsx)(e.p,{children:"ForkchoiceUpded request execution time"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_get_payload_requests"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of GetPayload Requests"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_new_payload_execution_time"})})}),"\n",(0,r.jsx)(e.p,{children:"NewPayload request execution time"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_number_of_transactions_in_get_payload"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Transactions included in the Last GetPayload Request"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"network",children:"Network"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_handshakes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of devp2p handshakes"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_handshake_timeouts"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of devp2p handshake timeouts"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_incoming_connections"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of incoming connection."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_incoming_p2_p_message_bytes"})})}),"\n",(0,r.jsx)(e.p,{children:"Bytes of incoming p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_incoming_p2_p_messages"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of incoming p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_local_disconnects_total"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of local disconnects"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_outgoing_connections"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of outgoing connection."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_outgoing_p2_p_message_bytes"})})}),"\n",(0,r.jsx)(e.p,{children:"Bytes of outgoing p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_outgoing_p2_p_messages"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of outgoing p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_peer_limit"})})}),"\n",(0,r.jsx)(e.p,{children:"The maximum number of peers this node allows to connect."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_remote_disconnects_total"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of remote disconnects"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"pruning",children:"Pruning"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_cached_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that are currently kept in cache (either persisted or not)"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_committed_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been committed since the session start. These nodes may have been pruned, persisted or replaced."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_deep_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been removed from the cache during deep pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_deep_pruning_time"})})}),"\n",(0,r.jsx)(e.p,{children:"Time taken by the last deep pruning."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_last_persisted_block_number"})})}),"\n",(0,r.jsx)(e.p,{children:"Last persisted block number (snapshot)."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_loaded_from_cache_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reads from the node cache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_loaded_from_db_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of DB reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_loaded_from_rlp_cache_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reads from the RLP cache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_memory_used_by_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Estimated memory used by cache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_persisted_node_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been persisted since the session start."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been removed from the cache during pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pruned_transient_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been removed from the cache during pruning because they were no longer needed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pruning_time"})})}),"\n",(0,r.jsx)(e.p,{children:"Time taken by the last pruning."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_removed_node_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that was removed via live pruning."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_replaced_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of nodes that have been exactly the same as other nodes in the cache when committing."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_snapshot_persistence_time"})})}),"\n",(0,r.jsx)(e.p,{children:"Time taken by the last snapshot persistence."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"runner",children:"Runner"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_version"})})}),"\n",(0,r.jsx)(e.p,{children:"Version number"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"synchronization",children:"Synchronization"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sync_peers"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of sync peers."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"trie",children:"Trie"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tree_node_hash_calculations"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of trie node hash calculations."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tree_node_rlp_decodings"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of trie node RLP decodings."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tree_node_rlp_encodings"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of trie node RLP encodings."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"txpool",children:"TxPool"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blobs_in_block"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blobs in the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blob_transaction_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blob transactions in pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blob_transactions_in_block"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blob transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_dark_pool_ratio_level1"})})}),"\n",(0,r.jsx)(e.p,{children:"Ratio of transactions in the block absent in hashCache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_dark_pool_ratio_level2"})})}),"\n",(0,r.jsx)(e.p,{children:"Ratio of transactions in the block absent in pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_eip1559_transactions_ratio"})})}),"\n",(0,r.jsx)(e.p,{children:"Ratio of 1559-type transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending1559_transactions_added"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending 1559-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_blob_transactions_added"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending blob-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_added"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_balance_below_value"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because balance is less than txn value."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_conflicting_tx_type"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions rejected because of already pending tx of other type (allowed blob txs or others, not both at once)."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_discarded"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_evicted"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions evicted from transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_gas_limit_too_high"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because the gas limit was to high for the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_hashes_received"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of hashes of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_hashes_sent"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of hashes of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_known"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of already known pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_low_nonce"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions with already used nonce."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_malformed"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of malformed transactions."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_nonce_gap"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of not having preceding nonce of this sender in TxPool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_nonce_too_far_in_future"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions with nonce too far in future."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_not_supported_tx_type"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of not supported transaction type."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored after passing early rejections as balance is too low to compete with lowest effective fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_replace"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were trying to replace tx with the same sender and nonce and failed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_received"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_sent"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_too_low_balance"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because balance too low for fee to be higher than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_too_low_fee"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of fee lower than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_too_low_priority_fee"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of priority fee lower than minimal requirement."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_unresolvable_sender"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because the sender couldn't be resolved."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_with_expensive_filtering"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions that reached filters which are resource expensive"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_zero_balance"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because balance is zero and cannot pay gas."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_transaction_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions in pool."}),"\n"]}),"\n"]})})]})]})}function x(n={}){const{wrapper:e}={...(0,i.R)(),...n.components};return e?(0,r.jsx)(e,{...n,children:(0,r.jsx)(o,{...n})}):o(n)}},8453:(n,e,s)=>{s.d(e,{R:()=>c,x:()=>l});var r=s(6540);const i={},d=r.createContext(i);function c(n){const e=r.useContext(d);return r.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function l(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(i):n.components||i:c(n.components),r.createElement(d.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/10a5c55c.4d46528c.js b/assets/js/10a5c55c.1706aa6c.js similarity index 99% rename from assets/js/10a5c55c.4d46528c.js rename to assets/js/10a5c55c.1706aa6c.js index d5af2a3a8..083be8524 100644 --- a/assets/js/10a5c55c.4d46528c.js +++ b/assets/js/10a5c55c.1706aa6c.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9274],{2842:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>l,frontMatter:()=>o,metadata:()=>c,toc:()=>h});var s=t(4848),i=t(8453);const o={title:"Consensus clients",sidebar_position:3},r=void 0,c={id:"get-started/consensus-clients",title:"Consensus clients",description:"Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.",source:"@site/versioned_docs/version-1.25.4/get-started/consensus-clients.md",sourceDirName:"get-started",slug:"/get-started/consensus-clients",permalink:"/1.25.4/get-started/consensus-clients",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/get-started/consensus-clients.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"Consensus clients",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Installing Nethermind",permalink:"/1.25.4/get-started/installing-nethermind"},next:{title:"Migrating from Geth",permalink:"/1.25.4/get-started/migrating-from-geth"}},a={},h=[{value:"Choosing a consensus client",id:"choosing-a-consensus-client",level:2},{value:"Configuring JSON-RPC interface",id:"configuring-json-rpc-interface",level:2},{value:"Running the consensus client",id:"running-the-consensus-client",level:2},{value:"Lighthouse",id:"lighthouse",level:3},{value:"Lodestar",id:"lodestar",level:3},{value:"Nimbus",id:"nimbus",level:3},{value:"Prysm",id:"prysm",level:3},{value:"Teku",id:"teku",level:3},{value:"Running Nethermind",id:"running-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.\nThe Merge changed how operators run nodes on the Ethereum blockchain. A node now needs two clients that work together as a pair. In addition to the ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#execution-client",children:"execution client"})," (e.g., Nethermind), you need a ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#consensus-client",children:"consensus client"})," that connects to the consensus layer and runs the PoS algorithm. This guide shows how to run an Ethereum node with Nethermind and a consensus client of your choice."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["An easy way to run both consensus and execution clients is with ",(0,s.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"}),". Sedge is a setup tool for PoS validators and nodes that runs on Linux and macOS."]})}),"\n",(0,s.jsx)(n.h2,{id:"choosing-a-consensus-client",children:"Choosing a consensus client"}),"\n",(0,s.jsx)(n.p,{children:"On the consensus layer, there are 5 client implementations to choose from. Though all consensus clients are great, check them out yourself to find the one best suited to your needs."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku"})}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.p,{children:["We urge you to take ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/client-diversity",children:"client diversity"})," into consideration when choosing your consensus client and avoid the majority clients."]})}),"\n",(0,s.jsx)(n.h2,{id:"configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"\n",(0,s.jsxs)(n.p,{children:["Execution and consensus clients communicate via an authenticated endpoint specified in Engine JSON-RPC API. In order to connect to a consensus client, the execution client must generate a ",(0,s.jsx)(n.a,{href:"https://jwt.io",children:"JWT"})," secret at a known path. Although the secret is generated automatically by Nethermind on startup at ",(0,s.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory, in some cases, you might need to do it yourself. You can generate one using ",(0,s.jsx)(n.a,{href:"https://www.openssl.org",children:"OpenSSL"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"openssl rand -hex 32 > path/to/jwt.hex\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"Since the JWT secret is simply a 64-character hex value, there are many other ways of generating it, including online resources. However, for security reasons, we recommend using OpenSSL."})}),"\n",(0,s.jsxs)(n.p,{children:["The generated JWT secret can be specified with the ",(0,s.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option. For more configuration options, see ",(0,s.jsx)(n.a,{href:"/1.25.4/interacting/json-rpc-server#engine-api",children:"Engine API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-the-consensus-client",children:"Running the consensus client"}),"\n",(0,s.jsxs)(n.p,{children:["This step assumes that you have already ",(0,s.jsx)(n.a,{href:"/1.25.4/get-started/installing-nethermind",children:"installed"})," Nethermind, the ",(0,s.jsx)(n.a,{href:"#choosing-a-consensus-client",children:"consensus client"})," of your choice, and, optionally, created the ",(0,s.jsx)(n.a,{href:"#configuring-json-rpc-interface",children:"JWT secret"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["As syncing from the scratch can take a very long time on some networks (up to several days), the commands below optionally use ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/#checkpoint-sync",children:"checkpoint sync"})," to speed up the process."]})}),"\n",(0,s.jsx)(n.h3,{id:"lighthouse",children:"Lighthouse"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lighthouse bn \\\n --network mainnet \\\n --execution-endpoint http://localhost:8551 \\\n --execution-jwt path/to/jwt.hex \\\n --checkpoint-sync-url https://mainnet.checkpoint.sigp.io \\\n --http\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lighthouse on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lodestar",children:"Lodestar"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lodestar beacon \\\n --network mainnet \\\n --jwt-secret path/to/jwt.hex \\\n --checkpointSyncUrl https://beaconstate-mainnet.chainsafe.io\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lodestar on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpointSyncUrl"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"nimbus",children:"Nimbus"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./run-mainnet-beacon-node.sh \\\n --web3-url=http://127.0.0.1:8551 \\\n --jwt-secret=path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Numbus on Mainnet without checkpoint sync. For checkpoint sync, see ",(0,s.jsx)(n.a,{href:"https://nimbus.guide/trusted-node-sync.html",children:"Sync from a trusted node"}),". For other networks, see the ",(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus documentation"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"prysm",children:"Prysm"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./prysm.sh beacon-chain \\\n --mainnet \\\n --execution-endpoint=http://localhost:8551 \\\n --jwt-secret=path/to/jwt.hex \\\n --checkpoint-sync-url=https://beaconstate.ethstaker.cc \\\n --genesis-beacon-api-url=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Prysm on Mainnet. For other networks, replace the ",(0,s.jsx)(n.code,{children:"--mainnet"})," and set ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," and ",(0,s.jsx)(n.code,{children:"--genesis-beacon-api-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"teku",children:"Teku"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"teku \\\n --network=mainnet \\\n --ee-endpoint=http://localhost:8551 \\\n --ee-jwt-secret-file=path/to/jwt.hex \\\n --metrics-enabled=true \\\n --rest-api-enabled=true \\\n --initial-state=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Teku on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--initial-state"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-nethermind",children:"Running Nethermind"}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsx)(n.p,{children:"The consensus client must be running before you start Nethermind."})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Nethermind on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"-c"})," option accordingly. For more info, see ",(0,s.jsx)(n.a,{href:"/1.25.4/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9274],{2842:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>l,frontMatter:()=>o,metadata:()=>c,toc:()=>h});var s=t(4848),i=t(8453);const o={title:"Consensus clients",sidebar_position:3},r=void 0,c={id:"get-started/consensus-clients",title:"Consensus clients",description:"Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.",source:"@site/versioned_docs/version-1.25.4/get-started/consensus-clients.md",sourceDirName:"get-started",slug:"/get-started/consensus-clients",permalink:"/1.25.4/get-started/consensus-clients",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/get-started/consensus-clients.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"Consensus clients",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Installing Nethermind",permalink:"/1.25.4/get-started/installing-nethermind"},next:{title:"Migrating from Geth",permalink:"/1.25.4/get-started/migrating-from-geth"}},a={},h=[{value:"Choosing a consensus client",id:"choosing-a-consensus-client",level:2},{value:"Configuring JSON-RPC interface",id:"configuring-json-rpc-interface",level:2},{value:"Running the consensus client",id:"running-the-consensus-client",level:2},{value:"Lighthouse",id:"lighthouse",level:3},{value:"Lodestar",id:"lodestar",level:3},{value:"Nimbus",id:"nimbus",level:3},{value:"Prysm",id:"prysm",level:3},{value:"Teku",id:"teku",level:3},{value:"Running Nethermind",id:"running-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.\nThe Merge changed how operators run nodes on the Ethereum blockchain. A node now needs two clients that work together as a pair. In addition to the ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#execution-client",children:"execution client"})," (e.g., Nethermind), you need a ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#consensus-client",children:"consensus client"})," that connects to the consensus layer and runs the PoS algorithm. This guide shows how to run an Ethereum node with Nethermind and a consensus client of your choice."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["An easy way to run both consensus and execution clients is with ",(0,s.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"}),". Sedge is a setup tool for PoS validators and nodes that runs on Linux and macOS."]})}),"\n",(0,s.jsx)(n.h2,{id:"choosing-a-consensus-client",children:"Choosing a consensus client"}),"\n",(0,s.jsx)(n.p,{children:"On the consensus layer, there are 5 client implementations to choose from. Though all consensus clients are great, check them out yourself to find the one best suited to your needs."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku"})}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.p,{children:["We urge you to take ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/client-diversity",children:"client diversity"})," into consideration when choosing your consensus client and avoid the majority clients."]})}),"\n",(0,s.jsx)(n.h2,{id:"configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"\n",(0,s.jsxs)(n.p,{children:["Execution and consensus clients communicate via an authenticated endpoint specified in Engine JSON-RPC API. In order to connect to a consensus client, the execution client must generate a ",(0,s.jsx)(n.a,{href:"https://jwt.io",children:"JWT"})," secret at a known path. Although the secret is generated automatically by Nethermind on startup at ",(0,s.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory, in some cases, you might need to do it yourself. You can generate one using ",(0,s.jsx)(n.a,{href:"https://www.openssl.org",children:"OpenSSL"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"openssl rand -hex 32 > path/to/jwt.hex\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"Since the JWT secret is simply a 64-character hex value, there are many other ways of generating it, including online resources. However, for security reasons, we recommend using OpenSSL."})}),"\n",(0,s.jsxs)(n.p,{children:["The generated JWT secret can be specified with the ",(0,s.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option. For more configuration options, see ",(0,s.jsx)(n.a,{href:"/1.25.4/interacting/json-rpc-server#engine-api",children:"Engine API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-the-consensus-client",children:"Running the consensus client"}),"\n",(0,s.jsxs)(n.p,{children:["This step assumes that you have already ",(0,s.jsx)(n.a,{href:"/1.25.4/get-started/installing-nethermind",children:"installed"})," Nethermind, the ",(0,s.jsx)(n.a,{href:"#choosing-a-consensus-client",children:"consensus client"})," of your choice, and, optionally, created the ",(0,s.jsx)(n.a,{href:"#configuring-json-rpc-interface",children:"JWT secret"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["As syncing from the scratch can take a very long time on some networks (up to several days), the commands below optionally use ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/#checkpoint-sync",children:"checkpoint sync"})," to speed up the process."]})}),"\n",(0,s.jsx)(n.h3,{id:"lighthouse",children:"Lighthouse"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lighthouse bn \\\n --network mainnet \\\n --execution-endpoint http://localhost:8551 \\\n --execution-jwt path/to/jwt.hex \\\n --checkpoint-sync-url https://mainnet.checkpoint.sigp.io \\\n --http\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lighthouse on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lodestar",children:"Lodestar"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lodestar beacon \\\n --network mainnet \\\n --jwt-secret path/to/jwt.hex \\\n --checkpointSyncUrl https://beaconstate-mainnet.chainsafe.io\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lodestar on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpointSyncUrl"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"nimbus",children:"Nimbus"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./run-mainnet-beacon-node.sh \\\n --web3-url=http://127.0.0.1:8551 \\\n --jwt-secret=path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Numbus on Mainnet without checkpoint sync. For checkpoint sync, see ",(0,s.jsx)(n.a,{href:"https://nimbus.guide/trusted-node-sync.html",children:"Sync from a trusted node"}),". For other networks, see the ",(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus documentation"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"prysm",children:"Prysm"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./prysm.sh beacon-chain \\\n --mainnet \\\n --execution-endpoint=http://localhost:8551 \\\n --jwt-secret=path/to/jwt.hex \\\n --checkpoint-sync-url=https://beaconstate.ethstaker.cc \\\n --genesis-beacon-api-url=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Prysm on Mainnet. For other networks, replace the ",(0,s.jsx)(n.code,{children:"--mainnet"})," and set ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," and ",(0,s.jsx)(n.code,{children:"--genesis-beacon-api-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"teku",children:"Teku"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"teku \\\n --network=mainnet \\\n --ee-endpoint=http://localhost:8551 \\\n --ee-jwt-secret-file=path/to/jwt.hex \\\n --metrics-enabled=true \\\n --rest-api-enabled=true \\\n --initial-state=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Teku on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--initial-state"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-nethermind",children:"Running Nethermind"}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsx)(n.p,{children:"The consensus client must be running before you start Nethermind."})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Nethermind on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"-c"})," option accordingly. For more info, see ",(0,s.jsx)(n.a,{href:"/1.25.4/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/10b06255.75880b8a.js b/assets/js/10b06255.2e03eaef.js similarity index 99% rename from assets/js/10b06255.75880b8a.js rename to assets/js/10b06255.2e03eaef.js index 2fb58de60..4229bf112 100644 --- a/assets/js/10b06255.75880b8a.js +++ b/assets/js/10b06255.2e03eaef.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8844],{8806:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var r=s(4848),t=s(8453),i=s(1470),l=s(9365);const d={title:"Database",sidebar_position:5},c=void 0,a={id:"fundamentals/database",title:"Database",description:"Nethermind uses the RocksDB database to store the state. By default, the database is located in the",source:"@site/versioned_docs/version-1.26.0/fundamentals/database.md",sourceDirName:"fundamentals",slug:"/fundamentals/database",permalink:"/1.26.0/fundamentals/database",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/database.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:5,frontMatter:{title:"Database",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Logs",permalink:"/1.26.0/fundamentals/logs"},next:{title:"Pruning",permalink:"/1.26.0/fundamentals/pruning"}},o={},h=[{value:"Database directory structure",id:"database-directory-structure",level:2},{value:"Database size",id:"database-size",level:2},{value:"Reducing database size",id:"reducing-database-size",level:2}];function u(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Nethermind uses the ",(0,r.jsx)(n.a,{href:"https://rocksdb.org",children:"RocksDB"})," database to store the state. By default, the database is located in the\nsame directory where the Nethermind executable is. You can change the database location using the ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#basic-options",children:(0,r.jsx)(n.code,{children:"-d, --baseDbPath"})})," command line option."]}),"\n",(0,r.jsx)(n.h2,{id:"database-directory-structure",children:"Database directory structure"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Directory"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blockInfos"}),(0,r.jsx)(n.td,{children:"Information about blocks at each level of the block tree (canonical chain and branches)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blocks"}),(0,r.jsx)(n.td,{children:"Block bodies (block transactions and uncles)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"bloom"}),(0,r.jsx)(n.td,{children:"Bloom indices for fast log searches"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"canonicalHashTrie"}),(0,r.jsx)(n.td,{children:"LES protocol related data"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"code"}),(0,r.jsx)(n.td,{children:"Contract bytecodes"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"discoveryNodes"}),(0,r.jsx)(n.td,{children:"Peers discovered via discovery protocol - used for quick peering after restarts (you can copy this DB between nodes to speed up peering)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"headers"}),(0,r.jsx)(n.td,{children:"Block headers only"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"pendingTx"}),(0,r.jsx)(n.td,{children:"The second level cache of pending transactions/mempool (the first level is in memory). Wiped out on each restart."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"peers"}),(0,r.jsx)(n.td,{children:"Additional sync peers information (like peer reputation) - you can copy this DB between nodes to speed up peering on fresh sync"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"receipts"}),(0,r.jsx)(n.td,{children:"Transaction receipts"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"state"}),(0,r.jsx)(n.td,{children:"Blockchain state including accounts and contract storage (Patricia trie nodes)"})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:["You can use ",(0,r.jsx)(n.code,{children:"rsync"})," between your nodes to clone the database (One of our users copied the entire 4.5TB archive state this\nway while the node was running and only stopped the node for the very last stage of ",(0,r.jsx)(n.code,{children:"rsync"})," ). You can also copy\nthe database between Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h2,{id:"database-size",children:"Database size"}),"\n",(0,r.jsx)(n.p,{children:"Below is a comprehensive list of the supported chains, along with a detailed breakdown of their respective database directories. For reference, the database sizes listed are based on the data from July 2023 and have been determined using the standard configurations provided."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(l.A,{value:"mainnet",label:"Mainnet",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 153 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 196 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 571 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 6.2 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 8.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 4.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.4 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 942 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"sepolia",label:"Sepolia",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 35 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 32 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 218 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 1.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 5.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 925 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 295 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"holesky",label:"Holesky",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 16 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 8.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 44 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 541 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 667 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 376 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.1 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 70 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"gnosis",label:"Gnosis",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 61 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 209 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 188 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 8.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 9.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 669 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 75 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 479 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"chiado",label:"Chiado",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 2.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 1.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 7.7 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 2.7 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 1.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 51 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 2.8 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 20 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"energyweb",label:"Energyweb",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 26 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 4.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 24 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 6.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 13 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 72 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"volta",label:"Volta",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 34 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 8.2 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 32 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 8.7 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 6.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 92 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 91 GB"})}),"\n"]})})]}),"\n",(0,r.jsx)(n.h2,{id:"reducing-database-size",children:"Reducing database size"}),"\n",(0,r.jsx)(n.p,{children:"The Nethermind database can experience substantial growth over time, starting from an initial size of approximately 650\nGB. As a result, many node setups are configured to run on 1 TB disks. However, even with settings\ndesigned to slow the growth rate, these disks may eventually run out of free space."}),"\n",(0,r.jsx)(n.p,{children:"The current options to reduce the database size are as follows:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/sync#resync-a-node-from-scratch",children:"Resyncing database from scratch"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/pruning",children:"Pruning"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The table below presents a short comparison of these methods including possible fine-tuning of each method. Data was\nfetched from a node running on a machine with the below specifications:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Node.js"}),": v1.18.0"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Consensus client"}),": Lighthouse"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"CPU"}),": AMD EPYC 7713 (16 cores allocated for the VM)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"RAM"}),": 64 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk size"}),": 1.2 TB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk IOPS"}),": 70,000 to 80,000"]}),"\n"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Metric"}),(0,r.jsx)(n.th,{children:"Resync"}),(0,r.jsx)(n.th,{children:"Pruning"}),(0,r.jsx)(n.th,{children:"Pruning and memory budget (4 GB)"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Execution time"})}),(0,r.jsx)(n.td,{children:"~4h"}),(0,r.jsx)(n.td,{children:"~24h"}),(0,r.jsx)(n.td,{children:"~12h"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Minimum free disk space"})}),(0,r.jsx)(n.td,{children:"N/A. You can execute resync even if there is 0 free space (avoid such a case)."}),(0,r.jsx)(n.td,{children:"250 GB"}),(0,r.jsx)(n.td,{children:"250 GB"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Attestation rate drop"})}),(0,r.jsx)(n.td,{children:"100%. No attestation rewards during that time or highly reduced."}),(0,r.jsx)(n.td,{children:"5\u201310% during that time"}),(0,r.jsx)(n.td,{children:"N/A"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Average block processing time of new blocks during the process"})}),(0,r.jsx)(n.td,{children:"N/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s."}),(0,r.jsx)(n.td,{children:"0.7s"}),(0,r.jsx)(n.td,{children:"1.0s"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Is the node online during the process?"})}),(0,r.jsx)(n.td,{children:"No, unless the state is synced."}),(0,r.jsx)(n.td,{children:"Yes. The node follows the chain, and all modules are still enabled."}),(0,r.jsx)(n.td,{children:"Yes. The node follows chain and all modules are still enabled."})]})]})]}),"\n",(0,r.jsx)(n.p,{children:"The command used for testing disk IOPS was as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw\n"})})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(4164);const t={tabItem:"tabItem_Ymn6"};var i=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),t=s(4164),i=s(3104),l=s(6347),d=s(205),c=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:t}}=e;return{value:n,label:s,attributes:r,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(t.location.search);n.set(i,e),t.replace({...t.location,search:n.toString()})}),[i,t])]}function b(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,i=u(e),[l,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[a,h]=j({queryString:s,groupId:t}),[b,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,i]=(0,o.Dv)(s);return[t,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:t}),f=(()=>{const e=a??b;return x({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{f&&c(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!x({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),p(e)}),[h,p,i]),tabValues:i}}var p=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=s(4848);function g(e){let{className:n,block:s,selectedValue:r,selectValue:l,tabValues:d}=e;const c=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),t=d[s].value;t!==r&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,m.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:h,onClick:o,...i,className:(0,t.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function B(e){const n=b(e);return(0,m.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,m.jsx)(g,{...n,...e}),(0,m.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,m.jsx)(B,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var r=s(6540);const t={},i=r.createContext(t);function l(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8844],{8806:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var r=s(4848),t=s(8453),i=s(1470),l=s(9365);const d={title:"Database",sidebar_position:5},c=void 0,a={id:"fundamentals/database",title:"Database",description:"Nethermind uses the RocksDB database to store the state. By default, the database is located in the",source:"@site/versioned_docs/version-1.26.0/fundamentals/database.md",sourceDirName:"fundamentals",slug:"/fundamentals/database",permalink:"/1.26.0/fundamentals/database",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/database.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:5,frontMatter:{title:"Database",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Logs",permalink:"/1.26.0/fundamentals/logs"},next:{title:"Pruning",permalink:"/1.26.0/fundamentals/pruning"}},o={},h=[{value:"Database directory structure",id:"database-directory-structure",level:2},{value:"Database size",id:"database-size",level:2},{value:"Reducing database size",id:"reducing-database-size",level:2}];function u(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Nethermind uses the ",(0,r.jsx)(n.a,{href:"https://rocksdb.org",children:"RocksDB"})," database to store the state. By default, the database is located in the\nsame directory where the Nethermind executable is. You can change the database location using the ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#basic-options",children:(0,r.jsx)(n.code,{children:"-d, --baseDbPath"})})," command line option."]}),"\n",(0,r.jsx)(n.h2,{id:"database-directory-structure",children:"Database directory structure"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Directory"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blockInfos"}),(0,r.jsx)(n.td,{children:"Information about blocks at each level of the block tree (canonical chain and branches)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blocks"}),(0,r.jsx)(n.td,{children:"Block bodies (block transactions and uncles)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"bloom"}),(0,r.jsx)(n.td,{children:"Bloom indices for fast log searches"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"canonicalHashTrie"}),(0,r.jsx)(n.td,{children:"LES protocol related data"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"code"}),(0,r.jsx)(n.td,{children:"Contract bytecodes"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"discoveryNodes"}),(0,r.jsx)(n.td,{children:"Peers discovered via discovery protocol - used for quick peering after restarts (you can copy this DB between nodes to speed up peering)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"headers"}),(0,r.jsx)(n.td,{children:"Block headers only"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"pendingTx"}),(0,r.jsx)(n.td,{children:"The second level cache of pending transactions/mempool (the first level is in memory). Wiped out on each restart."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"peers"}),(0,r.jsx)(n.td,{children:"Additional sync peers information (like peer reputation) - you can copy this DB between nodes to speed up peering on fresh sync"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"receipts"}),(0,r.jsx)(n.td,{children:"Transaction receipts"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"state"}),(0,r.jsx)(n.td,{children:"Blockchain state including accounts and contract storage (Patricia trie nodes)"})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:["You can use ",(0,r.jsx)(n.code,{children:"rsync"})," between your nodes to clone the database (One of our users copied the entire 4.5TB archive state this\nway while the node was running and only stopped the node for the very last stage of ",(0,r.jsx)(n.code,{children:"rsync"})," ). You can also copy\nthe database between Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h2,{id:"database-size",children:"Database size"}),"\n",(0,r.jsx)(n.p,{children:"Below is a comprehensive list of the supported chains, along with a detailed breakdown of their respective database directories. For reference, the database sizes listed are based on the data from July 2023 and have been determined using the standard configurations provided."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(l.A,{value:"mainnet",label:"Mainnet",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 153 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 196 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 571 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 6.2 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 8.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 4.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.4 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 942 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"sepolia",label:"Sepolia",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 35 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 32 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 218 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 1.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 5.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 925 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 295 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"holesky",label:"Holesky",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 16 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 8.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 44 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 541 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 667 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 376 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.1 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 70 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"gnosis",label:"Gnosis",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 61 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 209 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 188 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 8.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 9.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 669 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 75 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 479 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"chiado",label:"Chiado",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 2.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 1.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 7.7 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 2.7 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 1.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 51 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 2.8 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 20 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"energyweb",label:"Energyweb",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 26 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 4.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 24 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 6.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 13 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 72 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"volta",label:"Volta",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 34 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 8.2 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 32 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 8.7 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 6.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 92 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 91 GB"})}),"\n"]})})]}),"\n",(0,r.jsx)(n.h2,{id:"reducing-database-size",children:"Reducing database size"}),"\n",(0,r.jsx)(n.p,{children:"The Nethermind database can experience substantial growth over time, starting from an initial size of approximately 650\nGB. As a result, many node setups are configured to run on 1 TB disks. However, even with settings\ndesigned to slow the growth rate, these disks may eventually run out of free space."}),"\n",(0,r.jsx)(n.p,{children:"The current options to reduce the database size are as follows:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/sync#resync-a-node-from-scratch",children:"Resyncing database from scratch"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/pruning",children:"Pruning"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The table below presents a short comparison of these methods including possible fine-tuning of each method. Data was\nfetched from a node running on a machine with the below specifications:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Node.js"}),": v1.18.0"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Consensus client"}),": Lighthouse"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"CPU"}),": AMD EPYC 7713 (16 cores allocated for the VM)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"RAM"}),": 64 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk size"}),": 1.2 TB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk IOPS"}),": 70,000 to 80,000"]}),"\n"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Metric"}),(0,r.jsx)(n.th,{children:"Resync"}),(0,r.jsx)(n.th,{children:"Pruning"}),(0,r.jsx)(n.th,{children:"Pruning and memory budget (4 GB)"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Execution time"})}),(0,r.jsx)(n.td,{children:"~4h"}),(0,r.jsx)(n.td,{children:"~24h"}),(0,r.jsx)(n.td,{children:"~12h"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Minimum free disk space"})}),(0,r.jsx)(n.td,{children:"N/A. You can execute resync even if there is 0 free space (avoid such a case)."}),(0,r.jsx)(n.td,{children:"250 GB"}),(0,r.jsx)(n.td,{children:"250 GB"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Attestation rate drop"})}),(0,r.jsx)(n.td,{children:"100%. No attestation rewards during that time or highly reduced."}),(0,r.jsx)(n.td,{children:"5\u201310% during that time"}),(0,r.jsx)(n.td,{children:"N/A"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Average block processing time of new blocks during the process"})}),(0,r.jsx)(n.td,{children:"N/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s."}),(0,r.jsx)(n.td,{children:"0.7s"}),(0,r.jsx)(n.td,{children:"1.0s"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Is the node online during the process?"})}),(0,r.jsx)(n.td,{children:"No, unless the state is synced."}),(0,r.jsx)(n.td,{children:"Yes. The node follows the chain, and all modules are still enabled."}),(0,r.jsx)(n.td,{children:"Yes. The node follows chain and all modules are still enabled."})]})]})]}),"\n",(0,r.jsx)(n.p,{children:"The command used for testing disk IOPS was as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw\n"})})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(4164);const t={tabItem:"tabItem_Ymn6"};var i=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),t=s(4164),i=s(3104),l=s(6347),d=s(205),c=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:t}}=e;return{value:n,label:s,attributes:r,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(t.location.search);n.set(i,e),t.replace({...t.location,search:n.toString()})}),[i,t])]}function b(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,i=u(e),[l,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[a,h]=j({queryString:s,groupId:t}),[b,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,i]=(0,o.Dv)(s);return[t,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:t}),f=(()=>{const e=a??b;return x({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{f&&c(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!x({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),p(e)}),[h,p,i]),tabValues:i}}var p=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=s(4848);function g(e){let{className:n,block:s,selectedValue:r,selectValue:l,tabValues:d}=e;const c=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),t=d[s].value;t!==r&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,m.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:h,onClick:o,...i,className:(0,t.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function B(e){const n=b(e);return(0,m.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,m.jsx)(g,{...n,...e}),(0,m.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,m.jsx)(B,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var r=s(6540);const t={},i=r.createContext(t);function l(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/129813bf.d5dddde2.js b/assets/js/129813bf.a8569c9f.js similarity index 99% rename from assets/js/129813bf.d5dddde2.js rename to assets/js/129813bf.a8569c9f.js index 832f3558c..68c87ff88 100644 --- a/assets/js/129813bf.d5dddde2.js +++ b/assets/js/129813bf.a8569c9f.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2249],{3107:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=n(4848),o=n(8453);const r={title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},i=void 0,a={id:"fundamentals/private-networks",title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",source:"@site/versioned_docs/version-1.25.4/fundamentals/private-networks.md",sourceDirName:"fundamentals",slug:"/fundamentals/private-networks",permalink:"/1.25.4/fundamentals/private-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/private-networks.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Performance tuning",permalink:"/1.25.4/fundamentals/performance-tuning"},next:{title:"JSON-RPC server",permalink:"/1.25.4/interacting/json-rpc-server"}},c={},d=[{value:"Step 1: Prerequisites",id:"step-1-prerequisites",level:2},{value:"Step 2: Configure your network",id:"step-2-configure-your-network",level:2},{value:"Step 3: Deploy",id:"step-3-deploy",level:2},{value:"Step 4: Optional workflows",id:"step-4-optional-workflows",level:2},{value:"Simulating MEV workflows with mev-boost",id:"simulating-mev-workflows-with-mev-boost",level:3},{value:"Observability tools",id:"observability-tools",level:3},{value:"Deploying on Kubernetes",id:"deploying-on-kubernetes",level:3},{value:"Questions and feedback",id:"questions-and-feedback",level:2}];function l(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["This guide will walk you through using ",(0,s.jsxs)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:["Kurtosis ",(0,s.jsx)(t.code,{children:"ethereum-package"})]})," to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure to simulate MEV workflows."]}),"\n",(0,s.jsx)(t.h2,{id:"step-1-prerequisites",children:"Step 1: Prerequisites"}),"\n",(0,s.jsxs)(t.p,{children:["Before you begin, ensure you have ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/install",children:"Kurtosis CLI"})," and ",(0,s.jsx)(t.a,{href:"https://docs.docker.com/get-docker",children:"Docker"})," installed. The ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:(0,s.jsx)(t.code,{children:"ethereum-package"})})," is a Kurtosis environment definition known as a ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/packages",children:"package"}),". For more info about Kurtosis, see the ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com",children:"Kurtosis docs"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-2-configure-your-network",children:"Step 2: Configure your network"}),"\n",(0,s.jsxs)(t.p,{children:["Next, in your home directory, create a file with the name ",(0,s.jsx)(t.code,{children:"network_params.json"})," and populate it with the following contents:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-json",metastring:'title="network_params.json"',children:'{\n "participants": [\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lighthouse",\n "cl_client_image": "sigp/lighthouse:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "teku",\n "cl_client_image": "consensys/teku:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lodestar",\n "cl_client_image": "chainsafe/lodestar:next",\n "count": 1\n }\n ],\n "mev_type": "None",\n "launch_additional_services": false\n}\n'})}),"\n",(0,s.jsxs)(t.p,{children:["As you can see above, you have effectively created a network configuration file that Kurtosis will use to pass in the necessary parameters at runtime for your network. Notice that the ",(0,s.jsx)(t.code,{children:"participant"})," key describes the execution and consensus client pairing desired for each full node and how many nodes of that type to instantiate."]}),"\n",(0,s.jsxs)(t.p,{children:["There are many other configurations and flags you can use, including metrics and observability tools (e.g., Grafana, Prometheus, etc). For all supported options, see the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package#configuration",children:"configuration"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-3-deploy",children:"Step 3: Deploy"}),"\n",(0,s.jsxs)(t.p,{children:["Finally, once you have saved the ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, it is time to deploy the private net:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'kurtosis run github.com/ethpandaops/ethereum-package "$(cat ~/network_params.json)"\n'})}),"\n",(0,s.jsxs)(t.p,{children:["Kurtosis will use the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," environment definition and your custom network configuration (defined in ",(0,s.jsx)(t.code,{children:"network_params.json"}),") to spin up your network. Kurtosis will first spin up an ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"})," (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 and used to start up the private testnet."]}),"\n",(0,s.jsx)(t.p,{children:"Here is a sample output:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{children:"INFO[2023-09-01T16:10:45-04:00] ====================================================\nINFO[2023-09-01T16:10:45-04:00] || Created enclave: timid-knoll ||\nINFO[2023-09-01T16:10:45-04:00] ====================================================\nName: timid-knoll\nUUID: 939dfb5d59b0\nStatus: RUNNING\nCreation Time: Fri, 01 Sep 2023 16:08:57 EDT\n\n========================================= Files Artifacts =========================================\nUUID Name\na876b06035b7 1-lighthouse-nethermind-0-63\n87955ef69845 2-teku-nethermind-64-127\n4f77377da494 3-lodestar-nethermind-128-191\n9734313101e3 cl-genesis-data\n4164ed5c594c el-genesis-data\na49a3d2774b5 genesis-generation-config-cl\n16fcc4f96236 genesis-generation-config-el\n5fc72346f646 geth-prefunded-keys\n96ae153a0b51 prysm-password\n\n========================================== User Services ==========================================\nUUID Name Ports Status\nf369802ad2ae cl-1-lighthouse-nethermind http: 4000/tcp -> http://127.0.0.1:49894 RUNNING\n metrics: 5054/tcp -> http://127.0.0.1:49892\n tcp-discovery: 9000/tcp -> 127.0.0.1:49893\n udp-discovery: 9000/udp -> 127.0.0.1:64949\n5e14eb26ef45 cl-1-lighthouse-nethermind-validator http: 5042/tcp -> 127.0.0.1:49895 RUNNING\n metrics: 5064/tcp -> http://127.0.0.1:49896\nfed533d0e143 cl-2-teku-nethermind http: 4000/tcp -> 127.0.0.1:49899 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49897\n tcp-discovery: 9000/tcp -> 127.0.0.1:49898\n udp-discovery: 9000/udp -> 127.0.0.1:55521\n69cd832de246 cl-3-lodestar-nethermind http: 4000/tcp -> 127.0.0.1:49903 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49901\n tcp-discovery: 9000/tcp -> 127.0.0.1:49902\n udp-discovery: 9000/udp -> 127.0.0.1:50507\n75e3eec0c7d1 cl-3-lodestar-nethermind-validator metrics: 8008/tcp -> 127.0.0.1:49904 RUNNING\ne10c3f07e0e0 el-1-nethermind-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:49872 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49870\n tcp-discovery: 30303/tcp -> 127.0.0.1:49869\n udp-discovery: 30303/udp -> 127.0.0.1:64508\n ws: 8546/tcp -> 127.0.0.1:49871\nc6a28d3136fe el-2-nethermind-teku engine-rpc: 8551/tcp -> 127.0.0.1:49873 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49875\n tcp-discovery: 30303/tcp -> 127.0.0.1:49874\n udp-discovery: 30303/udp -> 127.0.0.1:52495\n ws: 8546/tcp -> 127.0.0.1:49876\n2fae3b3c41d3 el-3-nethermind-lodestar engine-rpc: 8551/tcp -> 127.0.0.1:49890 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49888\n tcp-discovery: 30303/tcp -> 127.0.0.1:49891\n udp-discovery: 30303/udp -> 127.0.0.1:62119\n ws: 8546/tcp -> 127.0.0.1:49889\n403cafe8416e prelaunch-data-generator-cl-genesis-data RUNNING\nebea71008cf4 prelaunch-data-generator-el-genesis-data RUNNING\n"})}),"\n",(0,s.jsx)(t.p,{children:"And that is it! You now have a 3-node, private Ethereum devnet with Nethermind/Lodestar, Nethermind/Teku, and Nethermind/Lighthouse execution and consensus client combinations."}),"\n",(0,s.jsxs)(t.p,{children:["Notice how, at the end, Kurtosis will print out the contents of your enclave, which includes both the various ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/files-artifacts",children:"files artifacts"})," and services that form your network. Kurtosis also maps the container ports to ephemeral local ports on your machine."]}),"\n",(0,s.jsxs)(t.p,{children:["Genesis data was generated using this ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-genesis-generator",children:"genesis-generator"})," to bootstrap the execution and consensus 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 ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"Kurtosis packages are modular, reproducible, and will work over Docker or Kubernetes. Read on to learn about additional services and configurations you may want to add to your private network."}),"\n",(0,s.jsx)(t.h2,{id:"step-4-optional-workflows",children:"Step 4: Optional workflows"}),"\n",(0,s.jsx)(t.p,{children:"This section briefly covers some optional configurations for your private devnet that are commonly used for validating and testing node-level behavior."}),"\n",(0,s.jsxs)(t.h3,{id:"simulating-mev-workflows-with-mev-boost",children:["Simulating MEV workflows with ",(0,s.jsx)(t.code,{children:"mev-boost"})]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," can simulate out-of-protocol Proposer Builder Separation (PBS) workflows using Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure. With a single flag, you can configure your network's validators to be instantiated with ",(0,s.jsx)(t.code,{children:"mev-boost"})," and be registered with a relayer to receive payloads from builders."]}),"\n",(0,s.jsxs)(t.p,{children:["To enable this in your ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, set ",(0,s.jsx)(t.code,{children:'"mev_type":'})," to ",(0,s.jsx)(t.code,{children:'"full"'})," or ",(0,s.jsx)(t.code,{children:'"mock"'}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["To learn more about how the ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure works with your private network, check out ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/how-to-full-mev-with-ethereum-package",children:"this guide"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"observability-tools",children:"Observability tools"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," comes out of the box with a few observability tools, including:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"A Grafana and Prometheus instance"}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/dapplion/beacon-metrics-gazer",children:"beacon metrics gazer service"})," to collect network-wide participation metrics"]}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/ethDreamer/json_rpc_snoop",children:"JSON-RPC Snooper"})," to log responses & requests between the execution engine API and the consensus client"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["To add your own custom Grafana dashboard template, fork the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," repository and add your configuration ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package/tree/main/static_files/grafana-config/dashboards",children:"here"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"deploying-on-kubernetes",children:"Deploying on Kubernetes"}),"\n",(0,s.jsxs)(t.p,{children:["As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," on Kubernetes, see ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/k8s",children:"Running Kurtosis in Kubernetes"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"questions-and-feedback",children:"Questions and feedback"}),"\n",(0,s.jsxs)(t.p,{children:["If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:"GitHub"})," or ",(0,s.jsx)(t.a,{href:"https://discord.gg/jJFG7XBqcY",children:"Discord"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2249],{3107:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=n(4848),o=n(8453);const r={title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},i=void 0,a={id:"fundamentals/private-networks",title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",source:"@site/versioned_docs/version-1.25.4/fundamentals/private-networks.md",sourceDirName:"fundamentals",slug:"/fundamentals/private-networks",permalink:"/1.25.4/fundamentals/private-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/private-networks.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Performance tuning",permalink:"/1.25.4/fundamentals/performance-tuning"},next:{title:"JSON-RPC server",permalink:"/1.25.4/interacting/json-rpc-server"}},c={},d=[{value:"Step 1: Prerequisites",id:"step-1-prerequisites",level:2},{value:"Step 2: Configure your network",id:"step-2-configure-your-network",level:2},{value:"Step 3: Deploy",id:"step-3-deploy",level:2},{value:"Step 4: Optional workflows",id:"step-4-optional-workflows",level:2},{value:"Simulating MEV workflows with mev-boost",id:"simulating-mev-workflows-with-mev-boost",level:3},{value:"Observability tools",id:"observability-tools",level:3},{value:"Deploying on Kubernetes",id:"deploying-on-kubernetes",level:3},{value:"Questions and feedback",id:"questions-and-feedback",level:2}];function l(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["This guide will walk you through using ",(0,s.jsxs)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:["Kurtosis ",(0,s.jsx)(t.code,{children:"ethereum-package"})]})," to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure to simulate MEV workflows."]}),"\n",(0,s.jsx)(t.h2,{id:"step-1-prerequisites",children:"Step 1: Prerequisites"}),"\n",(0,s.jsxs)(t.p,{children:["Before you begin, ensure you have ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/install",children:"Kurtosis CLI"})," and ",(0,s.jsx)(t.a,{href:"https://docs.docker.com/get-docker",children:"Docker"})," installed. The ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:(0,s.jsx)(t.code,{children:"ethereum-package"})})," is a Kurtosis environment definition known as a ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/packages",children:"package"}),". For more info about Kurtosis, see the ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com",children:"Kurtosis docs"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-2-configure-your-network",children:"Step 2: Configure your network"}),"\n",(0,s.jsxs)(t.p,{children:["Next, in your home directory, create a file with the name ",(0,s.jsx)(t.code,{children:"network_params.json"})," and populate it with the following contents:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-json",metastring:'title="network_params.json"',children:'{\n "participants": [\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lighthouse",\n "cl_client_image": "sigp/lighthouse:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "teku",\n "cl_client_image": "consensys/teku:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lodestar",\n "cl_client_image": "chainsafe/lodestar:next",\n "count": 1\n }\n ],\n "mev_type": "None",\n "launch_additional_services": false\n}\n'})}),"\n",(0,s.jsxs)(t.p,{children:["As you can see above, you have effectively created a network configuration file that Kurtosis will use to pass in the necessary parameters at runtime for your network. Notice that the ",(0,s.jsx)(t.code,{children:"participant"})," key describes the execution and consensus client pairing desired for each full node and how many nodes of that type to instantiate."]}),"\n",(0,s.jsxs)(t.p,{children:["There are many other configurations and flags you can use, including metrics and observability tools (e.g., Grafana, Prometheus, etc). For all supported options, see the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package#configuration",children:"configuration"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-3-deploy",children:"Step 3: Deploy"}),"\n",(0,s.jsxs)(t.p,{children:["Finally, once you have saved the ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, it is time to deploy the private net:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'kurtosis run github.com/ethpandaops/ethereum-package "$(cat ~/network_params.json)"\n'})}),"\n",(0,s.jsxs)(t.p,{children:["Kurtosis will use the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," environment definition and your custom network configuration (defined in ",(0,s.jsx)(t.code,{children:"network_params.json"}),") to spin up your network. Kurtosis will first spin up an ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"})," (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 and used to start up the private testnet."]}),"\n",(0,s.jsx)(t.p,{children:"Here is a sample output:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{children:"INFO[2023-09-01T16:10:45-04:00] ====================================================\nINFO[2023-09-01T16:10:45-04:00] || Created enclave: timid-knoll ||\nINFO[2023-09-01T16:10:45-04:00] ====================================================\nName: timid-knoll\nUUID: 939dfb5d59b0\nStatus: RUNNING\nCreation Time: Fri, 01 Sep 2023 16:08:57 EDT\n\n========================================= Files Artifacts =========================================\nUUID Name\na876b06035b7 1-lighthouse-nethermind-0-63\n87955ef69845 2-teku-nethermind-64-127\n4f77377da494 3-lodestar-nethermind-128-191\n9734313101e3 cl-genesis-data\n4164ed5c594c el-genesis-data\na49a3d2774b5 genesis-generation-config-cl\n16fcc4f96236 genesis-generation-config-el\n5fc72346f646 geth-prefunded-keys\n96ae153a0b51 prysm-password\n\n========================================== User Services ==========================================\nUUID Name Ports Status\nf369802ad2ae cl-1-lighthouse-nethermind http: 4000/tcp -> http://127.0.0.1:49894 RUNNING\n metrics: 5054/tcp -> http://127.0.0.1:49892\n tcp-discovery: 9000/tcp -> 127.0.0.1:49893\n udp-discovery: 9000/udp -> 127.0.0.1:64949\n5e14eb26ef45 cl-1-lighthouse-nethermind-validator http: 5042/tcp -> 127.0.0.1:49895 RUNNING\n metrics: 5064/tcp -> http://127.0.0.1:49896\nfed533d0e143 cl-2-teku-nethermind http: 4000/tcp -> 127.0.0.1:49899 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49897\n tcp-discovery: 9000/tcp -> 127.0.0.1:49898\n udp-discovery: 9000/udp -> 127.0.0.1:55521\n69cd832de246 cl-3-lodestar-nethermind http: 4000/tcp -> 127.0.0.1:49903 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49901\n tcp-discovery: 9000/tcp -> 127.0.0.1:49902\n udp-discovery: 9000/udp -> 127.0.0.1:50507\n75e3eec0c7d1 cl-3-lodestar-nethermind-validator metrics: 8008/tcp -> 127.0.0.1:49904 RUNNING\ne10c3f07e0e0 el-1-nethermind-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:49872 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49870\n tcp-discovery: 30303/tcp -> 127.0.0.1:49869\n udp-discovery: 30303/udp -> 127.0.0.1:64508\n ws: 8546/tcp -> 127.0.0.1:49871\nc6a28d3136fe el-2-nethermind-teku engine-rpc: 8551/tcp -> 127.0.0.1:49873 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49875\n tcp-discovery: 30303/tcp -> 127.0.0.1:49874\n udp-discovery: 30303/udp -> 127.0.0.1:52495\n ws: 8546/tcp -> 127.0.0.1:49876\n2fae3b3c41d3 el-3-nethermind-lodestar engine-rpc: 8551/tcp -> 127.0.0.1:49890 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49888\n tcp-discovery: 30303/tcp -> 127.0.0.1:49891\n udp-discovery: 30303/udp -> 127.0.0.1:62119\n ws: 8546/tcp -> 127.0.0.1:49889\n403cafe8416e prelaunch-data-generator-cl-genesis-data RUNNING\nebea71008cf4 prelaunch-data-generator-el-genesis-data RUNNING\n"})}),"\n",(0,s.jsx)(t.p,{children:"And that is it! You now have a 3-node, private Ethereum devnet with Nethermind/Lodestar, Nethermind/Teku, and Nethermind/Lighthouse execution and consensus client combinations."}),"\n",(0,s.jsxs)(t.p,{children:["Notice how, at the end, Kurtosis will print out the contents of your enclave, which includes both the various ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/files-artifacts",children:"files artifacts"})," and services that form your network. Kurtosis also maps the container ports to ephemeral local ports on your machine."]}),"\n",(0,s.jsxs)(t.p,{children:["Genesis data was generated using this ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-genesis-generator",children:"genesis-generator"})," to bootstrap the execution and consensus 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 ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"Kurtosis packages are modular, reproducible, and will work over Docker or Kubernetes. Read on to learn about additional services and configurations you may want to add to your private network."}),"\n",(0,s.jsx)(t.h2,{id:"step-4-optional-workflows",children:"Step 4: Optional workflows"}),"\n",(0,s.jsx)(t.p,{children:"This section briefly covers some optional configurations for your private devnet that are commonly used for validating and testing node-level behavior."}),"\n",(0,s.jsxs)(t.h3,{id:"simulating-mev-workflows-with-mev-boost",children:["Simulating MEV workflows with ",(0,s.jsx)(t.code,{children:"mev-boost"})]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," can simulate out-of-protocol Proposer Builder Separation (PBS) workflows using Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure. With a single flag, you can configure your network's validators to be instantiated with ",(0,s.jsx)(t.code,{children:"mev-boost"})," and be registered with a relayer to receive payloads from builders."]}),"\n",(0,s.jsxs)(t.p,{children:["To enable this in your ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, set ",(0,s.jsx)(t.code,{children:'"mev_type":'})," to ",(0,s.jsx)(t.code,{children:'"full"'})," or ",(0,s.jsx)(t.code,{children:'"mock"'}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["To learn more about how the ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure works with your private network, check out ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/how-to-full-mev-with-ethereum-package",children:"this guide"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"observability-tools",children:"Observability tools"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," comes out of the box with a few observability tools, including:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"A Grafana and Prometheus instance"}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/dapplion/beacon-metrics-gazer",children:"beacon metrics gazer service"})," to collect network-wide participation metrics"]}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/ethDreamer/json_rpc_snoop",children:"JSON-RPC Snooper"})," to log responses & requests between the execution engine API and the consensus client"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["To add your own custom Grafana dashboard template, fork the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," repository and add your configuration ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package/tree/main/static_files/grafana-config/dashboards",children:"here"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"deploying-on-kubernetes",children:"Deploying on Kubernetes"}),"\n",(0,s.jsxs)(t.p,{children:["As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," on Kubernetes, see ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/k8s",children:"Running Kurtosis in Kubernetes"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"questions-and-feedback",children:"Questions and feedback"}),"\n",(0,s.jsxs)(t.p,{children:["If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:"GitHub"})," or ",(0,s.jsx)(t.a,{href:"https://discord.gg/jJFG7XBqcY",children:"Discord"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/140ee29f.34536d61.js b/assets/js/140ee29f.8ec7e32d.js similarity index 99% rename from assets/js/140ee29f.34536d61.js rename to assets/js/140ee29f.8ec7e32d.js index fff3aba92..fe1140183 100644 --- a/assets/js/140ee29f.34536d61.js +++ b/assets/js/140ee29f.8ec7e32d.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7697],{2491:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>a,contentTitle:()=>c,default:()=>j,frontMatter:()=>l,metadata:()=>h,toc:()=>o});var t=r(4848),n=r(8453),d=r(1470),i=r(9365);const l={title:"Database",sidebar_position:5},c=void 0,h={id:"fundamentals/database",title:"Database",description:"Nethermind uses the RocksDB database to store the state. By default, the database is located in the",source:"@site/versioned_docs/version-1.25.4/fundamentals/database.md",sourceDirName:"fundamentals",slug:"/fundamentals/database",permalink:"/1.25.4/fundamentals/database",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/database.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:5,frontMatter:{title:"Database",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Logs",permalink:"/1.25.4/fundamentals/logs"},next:{title:"Pruning",permalink:"/1.25.4/fundamentals/pruning"}},a={},o=[{value:"Database directory structure",id:"database-directory-structure",level:2},{value:"Database size",id:"database-size",level:2},{value:"Database size in details",id:"database-size-in-details",level:3},{value:"Reducing database size",id:"reducing-database-size",level:2}];function x(e){const s={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.p,{children:["Nethermind uses the ",(0,t.jsx)(s.a,{href:"https://rocksdb.org",children:"RocksDB"})," database to store the state. By default, the database is located in the\nsame directory where the Nethermind executable is. You can change the database location using the ",(0,t.jsx)(s.a,{href:"/1.25.4/fundamentals/configuration#basic-options",children:(0,t.jsx)(s.code,{children:"-d, --baseDbPath"})})," command line option."]}),"\n",(0,t.jsx)(s.h2,{id:"database-directory-structure",children:"Database directory structure"}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Directory"}),(0,t.jsx)(s.th,{children:"Description"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blockInfos"}),(0,t.jsx)(s.td,{children:"Information about blocks at each level of the block tree (canonical chain and branches)"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blocks"}),(0,t.jsx)(s.td,{children:"Block bodies (block transactions and uncles)"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"bloom"}),(0,t.jsx)(s.td,{children:"Bloom indices for fast log searches"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"canonicalHashTrie"}),(0,t.jsx)(s.td,{children:"LES protocol related data"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"code"}),(0,t.jsx)(s.td,{children:"Contract bytecodes"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"discoveryNodes"}),(0,t.jsx)(s.td,{children:"Peers discovered via discovery protocol - used for quick peering after restarts (you can copy this DB between nodes to speed up peering)"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"headers"}),(0,t.jsx)(s.td,{children:"Block headers only"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"pendingTx"}),(0,t.jsx)(s.td,{children:"The second level cache of pending transactions/mempool (the first level is in memory). Wiped out on each restart."})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"peers"}),(0,t.jsx)(s.td,{children:"Additional sync peers information (like peer reputation) - you can copy this DB between nodes to speed up peering on fresh sync"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"receipts"}),(0,t.jsx)(s.td,{children:"Transaction receipts"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"state"}),(0,t.jsx)(s.td,{children:"Blockchain state including accounts and contract storage (Patricia trie nodes)"})]})]})]}),"\n",(0,t.jsxs)(s.p,{children:["You can use ",(0,t.jsx)(s.code,{children:"rsync"})," between your nodes to clone the database (One of our users copied the entire 4.5TB archive state this\nway while the node was running and only stopped the node for the very last stage of ",(0,t.jsx)(s.code,{children:"rsync"})," ). You can also copy\nthe database between Linux, Windows, and macOS."]}),"\n",(0,t.jsx)(s.h2,{id:"database-size",children:"Database size"}),"\n",(0,t.jsx)(s.p,{children:"The table below presents the Nethermind database size after fresh sync with different configurations and networks (as of\nMay 2023)."}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Network/configuration"}),(0,t.jsx)(s.th,{children:"Database size after fresh sync"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Mainnet (default)"}),(0,t.jsx)(s.td,{children:"898 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Mainnet with ancient barriers"}),(0,t.jsx)(s.td,{children:"738 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Mainnet archive"}),(0,t.jsx)(s.td,{children:"14 TB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Mainnet without old bodies and receipts"}),(0,t.jsx)(s.td,{children:"178 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Gnosis"}),(0,t.jsx)(s.td,{children:"112 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Goerli"}),(0,t.jsx)(s.td,{children:"240 GB"})]})]})]}),"\n",(0,t.jsx)(s.h3,{id:"database-size-in-details",children:"Database size in details"}),"\n",(0,t.jsx)(s.p,{children:"Below is a comprehensive list of the supported chains, along with a detailed breakdown of their respective database directories. For reference, the database sizes listed are based on the data from July 2023 and have been determined using the standard configurations provided."}),"\n",(0,t.jsxs)(d.A,{children:[(0,t.jsx)(i.A,{value:"mainnet",label:"Mainnet",children:(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Database"}),(0,t.jsx)(s.th,{children:"Mainnet"}),(0,t.jsx)(s.th,{children:"Mainnet with ancient barriers"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"State"}),(0,t.jsx)(s.td,{children:"181 GB"}),(0,t.jsx)(s.td,{children:"181 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Receipts"}),(0,t.jsx)(s.td,{children:"203 GB"}),(0,t.jsx)(s.td,{children:"155 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Blocks"}),(0,t.jsx)(s.td,{children:"497 GB"}),(0,t.jsx)(s.td,{children:"385 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Bloom"}),(0,t.jsx)(s.td,{children:"5.9 GB"}),(0,t.jsx)(s.td,{children:"5.9 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Headers"}),(0,t.jsx)(s.td,{children:"8.1 GB"}),(0,t.jsx)(s.td,{children:"8.1 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Code"}),(0,t.jsx)(s.td,{children:"3.9 GB"}),(0,t.jsx)(s.td,{children:"3.9 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Other"}),(0,t.jsx)(s.td,{children:"..."}),(0,t.jsx)(s.td,{children:"..."})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"Total"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"898 GB"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"738 GB"})})]})]})]})}),(0,t.jsx)(i.A,{value:"goerli",label:"Goerli",children:(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Directory"}),(0,t.jsx)(s.th,{children:"Size"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"state"}),(0,t.jsx)(s.td,{children:"51 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"receipts"}),(0,t.jsx)(s.td,{children:"35 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blocks"}),(0,t.jsx)(s.td,{children:"185 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"code"}),(0,t.jsx)(s.td,{children:"7.4 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"peers"}),(0,t.jsx)(s.td,{children:"8 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"witness"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blockInfos"}),(0,t.jsx)(s.td,{children:"417 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"bloom"}),(0,t.jsx)(s.td,{children:"2.5 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"headers"}),(0,t.jsx)(s.td,{children:"3.5 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"canonicalHashTrie"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"metadata"}),(0,t.jsx)(s.td,{children:"4.4 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"discoveryNodes"}),(0,t.jsx)(s.td,{children:"1.5 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"TOTAL"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"283 GB"})})]})]})]})}),(0,t.jsx)(i.A,{value:"sepolia",label:"Sepolia",children:(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Directory"}),(0,t.jsx)(s.th,{children:"Size"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"state"}),(0,t.jsx)(s.td,{children:"8.5 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"receipts"}),(0,t.jsx)(s.td,{children:"8.2 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blocks"}),(0,t.jsx)(s.td,{children:"36 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"code"}),(0,t.jsx)(s.td,{children:"1.5 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"peers"}),(0,t.jsx)(s.td,{children:"8 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"witness"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blockInfos"}),(0,t.jsx)(s.td,{children:"177 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"bloom"}),(0,t.jsx)(s.td,{children:"1.3 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"headers"}),(0,t.jsx)(s.td,{children:"1.2 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"canonicalHashTrie"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"metadata"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"discoveryNodes"}),(0,t.jsx)(s.td,{children:"1.7 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"TOTAL"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"56 GB"})})]})]})]})}),(0,t.jsx)(i.A,{value:"gnosis",label:"Gnosis",children:(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Directory"}),(0,t.jsx)(s.th,{children:"Size"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"state"}),(0,t.jsx)(s.td,{children:"40 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"receipts"}),(0,t.jsx)(s.td,{children:"21 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blocks"}),(0,t.jsx)(s.td,{children:"43 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"code"}),(0,t.jsx)(s.td,{children:"350 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"peers"}),(0,t.jsx)(s.td,{children:"8 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"witness"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blockInfos"}),(0,t.jsx)(s.td,{children:"1.5 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"bloom"}),(0,t.jsx)(s.td,{children:"7.5 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"headers"}),(0,t.jsx)(s.td,{children:"9.4 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"canonicalHashTrie"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"metadata"}),(0,t.jsx)(s.td,{children:"4.2 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"discoveryNodes"}),(0,t.jsx)(s.td,{children:"1.8 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"TOTAL"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"121 GB"})})]})]})]})}),(0,t.jsx)(i.A,{value:"chiado",label:"Chiado",children:(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Directory"}),(0,t.jsx)(s.th,{children:"Size"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"state"}),(0,t.jsx)(s.td,{children:"1.6 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"receipts"}),(0,t.jsx)(s.td,{children:"646 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blocks"}),(0,t.jsx)(s.td,{children:"2.3 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"code"}),(0,t.jsx)(s.td,{children:"22 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"peers"}),(0,t.jsx)(s.td,{children:"8 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"witness"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blockInfos"}),(0,t.jsx)(s.td,{children:"224 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"bloom"}),(0,t.jsx)(s.td,{children:"1.4 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"headers"}),(0,t.jsx)(s.td,{children:"1.1 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"canonicalHashTrie"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"metadata"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"discoveryNodes"}),(0,t.jsx)(s.td,{children:"1.7 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"TOTAL"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"7.1 GB"})})]})]})]})}),(0,t.jsx)(i.A,{value:"energyweb",label:"Energy Web",children:(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Directory"}),(0,t.jsx)(s.th,{children:"Size"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"state"}),(0,t.jsx)(s.td,{children:"31.13 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"receipts"}),(0,t.jsx)(s.td,{children:"5.13 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blocks"}),(0,t.jsx)(s.td,{children:"15.55 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"code"}),(0,t.jsx)(s.td,{children:"7.20 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"peers"}),(0,t.jsx)(s.td,{children:"311 B"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"witness"}),(0,t.jsx)(s.td,{children:"103.11 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blockInfos"}),(0,t.jsx)(s.td,{children:"1.22 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"bloom"}),(0,t.jsx)(s.td,{children:"7.78 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"headers"}),(0,t.jsx)(s.td,{children:"6.70 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"canonicalHashTrie"}),(0,t.jsx)(s.td,{children:"103.35 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"metadata"}),(0,t.jsx)(s.td,{children:"103.31 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"discoveryNodes"}),(0,t.jsx)(s.td,{children:"1.68 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"TOTAL"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"67.52 GB"})})]})]})]})}),(0,t.jsx)(i.A,{value:"volta",label:"Volta",children:(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Directory"}),(0,t.jsx)(s.th,{children:"Size"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"state"}),(0,t.jsx)(s.td,{children:"35.71 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"receipts"}),(0,t.jsx)(s.td,{children:"7.67 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blocks"}),(0,t.jsx)(s.td,{children:"25.11 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"code"}),(0,t.jsx)(s.td,{children:"75.14 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"peers"}),(0,t.jsx)(s.td,{children:"616 B"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"witness"}),(0,t.jsx)(s.td,{children:"119.95 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blockInfos"}),(0,t.jsx)(s.td,{children:"1.15 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"bloom"}),(0,t.jsx)(s.td,{children:"7.40 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"headers"}),(0,t.jsx)(s.td,{children:"6.94 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"canonicalHashTrie"}),(0,t.jsx)(s.td,{children:"120.00 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"metadata"}),(0,t.jsx)(s.td,{children:"119.97 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"discoveryNodes"}),(0,t.jsx)(s.td,{children:"1.55 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"TOTAL"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"84.06 GB"})})]})]})]})})]}),"\n",(0,t.jsx)(s.h2,{id:"reducing-database-size",children:"Reducing database size"}),"\n",(0,t.jsx)(s.p,{children:"The Nethermind database can experience substantial growth over time, starting from an initial size of approximately 650\nGB. As a result, many node setups are configured to run on 1 TB disks. However, even with settings\ndesigned to slow the growth rate, these disks may eventually run out of free space."}),"\n",(0,t.jsx)(s.p,{children:"The current options to reduce the database size are as follows:"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"/1.25.4/fundamentals/sync#resync-a-node-from-scratch",children:"Resyncing database from scratch"})}),"\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"/1.25.4/fundamentals/pruning",children:"Pruning"})}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:"The table below presents a short comparison of these methods including possible fine-tuning of each method. Data was\nfetched from a node running on a machine with the below specifications:"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"Node.js"}),": v1.18.0"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"Consensus client"}),": Lighthouse"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"CPU"}),": AMD EPYC 7713 (16 cores allocated for the VM)"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"RAM"}),": 64 GB"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"Disk size"}),": 1.2 TB"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"Disk IOPS"}),": 70,000 to 80,000"]}),"\n"]}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Metric"}),(0,t.jsx)(s.th,{children:"Resync"}),(0,t.jsx)(s.th,{children:"Pruning"}),(0,t.jsx)(s.th,{children:"Pruning and memory budget (4 GB)"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"Execution time"})}),(0,t.jsx)(s.td,{children:"~4h"}),(0,t.jsx)(s.td,{children:"~24h"}),(0,t.jsx)(s.td,{children:"~12h"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"Minimum free disk space"})}),(0,t.jsx)(s.td,{children:"N/A. You can execute resync even if there is 0 free space (avoid such a case)."}),(0,t.jsx)(s.td,{children:"250 GB"}),(0,t.jsx)(s.td,{children:"250 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"Attestation rate drop"})}),(0,t.jsx)(s.td,{children:"100%. No attestation rewards during that time or highly reduced."}),(0,t.jsx)(s.td,{children:"5\u201310% during that time"}),(0,t.jsx)(s.td,{children:"N/A"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"Average block processing time of new blocks during the process"})}),(0,t.jsx)(s.td,{children:"N/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s."}),(0,t.jsx)(s.td,{children:"0.7s"}),(0,t.jsx)(s.td,{children:"1.0s"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"Is the node online during the process?"})}),(0,t.jsx)(s.td,{children:"No, unless the state is synced."}),(0,t.jsx)(s.td,{children:"Yes. The node follows the chain, and all modules are still enabled."}),(0,t.jsx)(s.td,{children:"Yes. The node follows chain and all modules are still enabled."})]})]})]}),"\n",(0,t.jsx)(s.p,{children:"The command used for testing disk IOPS was as follows:"}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-bash",children:"fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw\n"})})]})}function j(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(x,{...e})}):x(e)}},9365:(e,s,r)=>{r.d(s,{A:()=>i});r(6540);var t=r(4164);const n={tabItem:"tabItem_Ymn6"};var d=r(4848);function i(e){let{children:s,hidden:r,className:i}=e;return(0,d.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,i),hidden:r,children:s})}},1470:(e,s,r)=>{r.d(s,{A:()=>y});var t=r(6540),n=r(4164),d=r(3104),i=r(6347),l=r(205),c=r(7485),h=r(1682),a=r(679);function o(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:s}=e;return!!s&&"object"==typeof s&&"value"in s}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:s,children:r}=e;return(0,t.useMemo)((()=>{const e=s??function(e){return o(e).map((e=>{let{props:{value:s,label:r,attributes:t,default:n}}=e;return{value:s,label:r,attributes:t,default:n}}))}(r);return function(e){const s=(0,h.XI)(e,((e,s)=>e.value===s.value));if(s.length>0)throw new Error(`Docusaurus error: Duplicate values "${s.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[s,r])}function j(e){let{value:s,tabValues:r}=e;return r.some((e=>e.value===s))}function u(e){let{queryString:s=!1,groupId:r}=e;const n=(0,i.W6)(),d=function(e){let{queryString:s=!1,groupId:r}=e;if("string"==typeof s)return s;if(!1===s)return null;if(!0===s&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:s,groupId:r});return[(0,c.aZ)(d),(0,t.useCallback)((e=>{if(!d)return;const s=new URLSearchParams(n.location.search);s.set(d,e),n.replace({...n.location,search:s.toString()})}),[d,n])]}function b(e){const{defaultValue:s,queryString:r=!1,groupId:n}=e,d=x(e),[i,c]=(0,t.useState)((()=>function(e){let{defaultValue:s,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(s){if(!j({value:s,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${s}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return s}const t=r.find((e=>e.default))??r[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:s,tabValues:d}))),[h,o]=u({queryString:r,groupId:n}),[b,p]=function(e){let{groupId:s}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(s),[n,d]=(0,a.Dv)(r);return[n,(0,t.useCallback)((e=>{r&&d.set(e)}),[r,d])]}({groupId:n}),f=(()=>{const e=h??b;return j({value:e,tabValues:d})?e:null})();(0,l.A)((()=>{f&&c(f)}),[f]);return{selectedValue:i,selectValue:(0,t.useCallback)((e=>{if(!j({value:e,tabValues:d}))throw new Error(`Can't select invalid tab value=${e}`);c(e),o(e),p(e)}),[o,p,d]),tabValues:d}}var p=r(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=r(4848);function g(e){let{className:s,block:r,selectedValue:t,selectValue:i,tabValues:l}=e;const c=[],{blockElementScrollPositionUntilNextRender:h}=(0,d.a_)(),a=e=>{const s=e.currentTarget,r=c.indexOf(s),n=l[r].value;n!==t&&(h(s),i(n))},o=e=>{let s=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const r=c.indexOf(e.currentTarget)+1;s=c[r]??c[0];break}case"ArrowLeft":{const r=c.indexOf(e.currentTarget)-1;s=c[r]??c[c.length-1];break}}s?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":r},s),children:l.map((e=>{let{value:s,label:r,attributes:d}=e;return(0,m.jsx)("li",{role:"tab",tabIndex:t===s?0:-1,"aria-selected":t===s,ref:e=>c.push(e),onKeyDown:o,onClick:a,...d,className:(0,n.A)("tabs__item",f.tabItem,d?.className,{"tabs__item--active":t===s}),children:r??s},s)}))})}function B(e){let{lazy:s,children:r,selectedValue:d}=e;const i=(Array.isArray(r)?r:[r]).filter(Boolean);if(s){const e=i.find((e=>e.props.value===d));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:i.map(((e,s)=>(0,t.cloneElement)(e,{key:s,hidden:e.props.value!==d})))})}function v(e){const s=b(e);return(0,m.jsxs)("div",{className:(0,n.A)("tabs-container",f.tabList),children:[(0,m.jsx)(g,{...s,...e}),(0,m.jsx)(B,{...s,...e})]})}function y(e){const s=(0,p.A)();return(0,m.jsx)(v,{...e,children:o(e.children)},String(s))}},8453:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>l});var t=r(6540);const n={},d=t.createContext(n);function i(e){const s=t.useContext(d);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),t.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7697],{2491:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>a,contentTitle:()=>c,default:()=>j,frontMatter:()=>l,metadata:()=>h,toc:()=>o});var t=r(4848),n=r(8453),d=r(1470),i=r(9365);const l={title:"Database",sidebar_position:5},c=void 0,h={id:"fundamentals/database",title:"Database",description:"Nethermind uses the RocksDB database to store the state. By default, the database is located in the",source:"@site/versioned_docs/version-1.25.4/fundamentals/database.md",sourceDirName:"fundamentals",slug:"/fundamentals/database",permalink:"/1.25.4/fundamentals/database",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/database.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:5,frontMatter:{title:"Database",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Logs",permalink:"/1.25.4/fundamentals/logs"},next:{title:"Pruning",permalink:"/1.25.4/fundamentals/pruning"}},a={},o=[{value:"Database directory structure",id:"database-directory-structure",level:2},{value:"Database size",id:"database-size",level:2},{value:"Database size in details",id:"database-size-in-details",level:3},{value:"Reducing database size",id:"reducing-database-size",level:2}];function x(e){const s={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.p,{children:["Nethermind uses the ",(0,t.jsx)(s.a,{href:"https://rocksdb.org",children:"RocksDB"})," database to store the state. By default, the database is located in the\nsame directory where the Nethermind executable is. You can change the database location using the ",(0,t.jsx)(s.a,{href:"/1.25.4/fundamentals/configuration#basic-options",children:(0,t.jsx)(s.code,{children:"-d, --baseDbPath"})})," command line option."]}),"\n",(0,t.jsx)(s.h2,{id:"database-directory-structure",children:"Database directory structure"}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Directory"}),(0,t.jsx)(s.th,{children:"Description"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blockInfos"}),(0,t.jsx)(s.td,{children:"Information about blocks at each level of the block tree (canonical chain and branches)"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blocks"}),(0,t.jsx)(s.td,{children:"Block bodies (block transactions and uncles)"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"bloom"}),(0,t.jsx)(s.td,{children:"Bloom indices for fast log searches"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"canonicalHashTrie"}),(0,t.jsx)(s.td,{children:"LES protocol related data"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"code"}),(0,t.jsx)(s.td,{children:"Contract bytecodes"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"discoveryNodes"}),(0,t.jsx)(s.td,{children:"Peers discovered via discovery protocol - used for quick peering after restarts (you can copy this DB between nodes to speed up peering)"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"headers"}),(0,t.jsx)(s.td,{children:"Block headers only"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"pendingTx"}),(0,t.jsx)(s.td,{children:"The second level cache of pending transactions/mempool (the first level is in memory). Wiped out on each restart."})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"peers"}),(0,t.jsx)(s.td,{children:"Additional sync peers information (like peer reputation) - you can copy this DB between nodes to speed up peering on fresh sync"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"receipts"}),(0,t.jsx)(s.td,{children:"Transaction receipts"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"state"}),(0,t.jsx)(s.td,{children:"Blockchain state including accounts and contract storage (Patricia trie nodes)"})]})]})]}),"\n",(0,t.jsxs)(s.p,{children:["You can use ",(0,t.jsx)(s.code,{children:"rsync"})," between your nodes to clone the database (One of our users copied the entire 4.5TB archive state this\nway while the node was running and only stopped the node for the very last stage of ",(0,t.jsx)(s.code,{children:"rsync"})," ). You can also copy\nthe database between Linux, Windows, and macOS."]}),"\n",(0,t.jsx)(s.h2,{id:"database-size",children:"Database size"}),"\n",(0,t.jsx)(s.p,{children:"The table below presents the Nethermind database size after fresh sync with different configurations and networks (as of\nMay 2023)."}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Network/configuration"}),(0,t.jsx)(s.th,{children:"Database size after fresh sync"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Mainnet (default)"}),(0,t.jsx)(s.td,{children:"898 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Mainnet with ancient barriers"}),(0,t.jsx)(s.td,{children:"738 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Mainnet archive"}),(0,t.jsx)(s.td,{children:"14 TB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Mainnet without old bodies and receipts"}),(0,t.jsx)(s.td,{children:"178 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Gnosis"}),(0,t.jsx)(s.td,{children:"112 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Goerli"}),(0,t.jsx)(s.td,{children:"240 GB"})]})]})]}),"\n",(0,t.jsx)(s.h3,{id:"database-size-in-details",children:"Database size in details"}),"\n",(0,t.jsx)(s.p,{children:"Below is a comprehensive list of the supported chains, along with a detailed breakdown of their respective database directories. For reference, the database sizes listed are based on the data from July 2023 and have been determined using the standard configurations provided."}),"\n",(0,t.jsxs)(d.A,{children:[(0,t.jsx)(i.A,{value:"mainnet",label:"Mainnet",children:(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Database"}),(0,t.jsx)(s.th,{children:"Mainnet"}),(0,t.jsx)(s.th,{children:"Mainnet with ancient barriers"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"State"}),(0,t.jsx)(s.td,{children:"181 GB"}),(0,t.jsx)(s.td,{children:"181 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Receipts"}),(0,t.jsx)(s.td,{children:"203 GB"}),(0,t.jsx)(s.td,{children:"155 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Blocks"}),(0,t.jsx)(s.td,{children:"497 GB"}),(0,t.jsx)(s.td,{children:"385 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Bloom"}),(0,t.jsx)(s.td,{children:"5.9 GB"}),(0,t.jsx)(s.td,{children:"5.9 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Headers"}),(0,t.jsx)(s.td,{children:"8.1 GB"}),(0,t.jsx)(s.td,{children:"8.1 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Code"}),(0,t.jsx)(s.td,{children:"3.9 GB"}),(0,t.jsx)(s.td,{children:"3.9 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Other"}),(0,t.jsx)(s.td,{children:"..."}),(0,t.jsx)(s.td,{children:"..."})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"Total"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"898 GB"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"738 GB"})})]})]})]})}),(0,t.jsx)(i.A,{value:"goerli",label:"Goerli",children:(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Directory"}),(0,t.jsx)(s.th,{children:"Size"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"state"}),(0,t.jsx)(s.td,{children:"51 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"receipts"}),(0,t.jsx)(s.td,{children:"35 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blocks"}),(0,t.jsx)(s.td,{children:"185 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"code"}),(0,t.jsx)(s.td,{children:"7.4 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"peers"}),(0,t.jsx)(s.td,{children:"8 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"witness"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blockInfos"}),(0,t.jsx)(s.td,{children:"417 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"bloom"}),(0,t.jsx)(s.td,{children:"2.5 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"headers"}),(0,t.jsx)(s.td,{children:"3.5 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"canonicalHashTrie"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"metadata"}),(0,t.jsx)(s.td,{children:"4.4 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"discoveryNodes"}),(0,t.jsx)(s.td,{children:"1.5 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"TOTAL"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"283 GB"})})]})]})]})}),(0,t.jsx)(i.A,{value:"sepolia",label:"Sepolia",children:(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Directory"}),(0,t.jsx)(s.th,{children:"Size"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"state"}),(0,t.jsx)(s.td,{children:"8.5 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"receipts"}),(0,t.jsx)(s.td,{children:"8.2 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blocks"}),(0,t.jsx)(s.td,{children:"36 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"code"}),(0,t.jsx)(s.td,{children:"1.5 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"peers"}),(0,t.jsx)(s.td,{children:"8 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"witness"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blockInfos"}),(0,t.jsx)(s.td,{children:"177 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"bloom"}),(0,t.jsx)(s.td,{children:"1.3 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"headers"}),(0,t.jsx)(s.td,{children:"1.2 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"canonicalHashTrie"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"metadata"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"discoveryNodes"}),(0,t.jsx)(s.td,{children:"1.7 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"TOTAL"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"56 GB"})})]})]})]})}),(0,t.jsx)(i.A,{value:"gnosis",label:"Gnosis",children:(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Directory"}),(0,t.jsx)(s.th,{children:"Size"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"state"}),(0,t.jsx)(s.td,{children:"40 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"receipts"}),(0,t.jsx)(s.td,{children:"21 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blocks"}),(0,t.jsx)(s.td,{children:"43 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"code"}),(0,t.jsx)(s.td,{children:"350 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"peers"}),(0,t.jsx)(s.td,{children:"8 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"witness"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blockInfos"}),(0,t.jsx)(s.td,{children:"1.5 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"bloom"}),(0,t.jsx)(s.td,{children:"7.5 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"headers"}),(0,t.jsx)(s.td,{children:"9.4 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"canonicalHashTrie"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"metadata"}),(0,t.jsx)(s.td,{children:"4.2 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"discoveryNodes"}),(0,t.jsx)(s.td,{children:"1.8 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"TOTAL"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"121 GB"})})]})]})]})}),(0,t.jsx)(i.A,{value:"chiado",label:"Chiado",children:(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Directory"}),(0,t.jsx)(s.th,{children:"Size"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"state"}),(0,t.jsx)(s.td,{children:"1.6 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"receipts"}),(0,t.jsx)(s.td,{children:"646 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blocks"}),(0,t.jsx)(s.td,{children:"2.3 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"code"}),(0,t.jsx)(s.td,{children:"22 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"peers"}),(0,t.jsx)(s.td,{children:"8 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"witness"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blockInfos"}),(0,t.jsx)(s.td,{children:"224 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"bloom"}),(0,t.jsx)(s.td,{children:"1.4 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"headers"}),(0,t.jsx)(s.td,{children:"1.1 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"canonicalHashTrie"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"metadata"}),(0,t.jsx)(s.td,{children:"4.1 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"discoveryNodes"}),(0,t.jsx)(s.td,{children:"1.7 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"TOTAL"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"7.1 GB"})})]})]})]})}),(0,t.jsx)(i.A,{value:"energyweb",label:"Energy Web",children:(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Directory"}),(0,t.jsx)(s.th,{children:"Size"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"state"}),(0,t.jsx)(s.td,{children:"31.13 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"receipts"}),(0,t.jsx)(s.td,{children:"5.13 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blocks"}),(0,t.jsx)(s.td,{children:"15.55 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"code"}),(0,t.jsx)(s.td,{children:"7.20 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"peers"}),(0,t.jsx)(s.td,{children:"311 B"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"witness"}),(0,t.jsx)(s.td,{children:"103.11 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blockInfos"}),(0,t.jsx)(s.td,{children:"1.22 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"bloom"}),(0,t.jsx)(s.td,{children:"7.78 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"headers"}),(0,t.jsx)(s.td,{children:"6.70 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"canonicalHashTrie"}),(0,t.jsx)(s.td,{children:"103.35 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"metadata"}),(0,t.jsx)(s.td,{children:"103.31 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"discoveryNodes"}),(0,t.jsx)(s.td,{children:"1.68 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"TOTAL"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"67.52 GB"})})]})]})]})}),(0,t.jsx)(i.A,{value:"volta",label:"Volta",children:(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Directory"}),(0,t.jsx)(s.th,{children:"Size"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"state"}),(0,t.jsx)(s.td,{children:"35.71 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"receipts"}),(0,t.jsx)(s.td,{children:"7.67 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blocks"}),(0,t.jsx)(s.td,{children:"25.11 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"code"}),(0,t.jsx)(s.td,{children:"75.14 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"peers"}),(0,t.jsx)(s.td,{children:"616 B"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"witness"}),(0,t.jsx)(s.td,{children:"119.95 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"blockInfos"}),(0,t.jsx)(s.td,{children:"1.15 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"bloom"}),(0,t.jsx)(s.td,{children:"7.40 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"headers"}),(0,t.jsx)(s.td,{children:"6.94 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"canonicalHashTrie"}),(0,t.jsx)(s.td,{children:"120.00 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"metadata"}),(0,t.jsx)(s.td,{children:"119.97 KB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"discoveryNodes"}),(0,t.jsx)(s.td,{children:"1.55 MB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"TOTAL"})}),(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"84.06 GB"})})]})]})]})})]}),"\n",(0,t.jsx)(s.h2,{id:"reducing-database-size",children:"Reducing database size"}),"\n",(0,t.jsx)(s.p,{children:"The Nethermind database can experience substantial growth over time, starting from an initial size of approximately 650\nGB. As a result, many node setups are configured to run on 1 TB disks. However, even with settings\ndesigned to slow the growth rate, these disks may eventually run out of free space."}),"\n",(0,t.jsx)(s.p,{children:"The current options to reduce the database size are as follows:"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"/1.25.4/fundamentals/sync#resync-a-node-from-scratch",children:"Resyncing database from scratch"})}),"\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"/1.25.4/fundamentals/pruning",children:"Pruning"})}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:"The table below presents a short comparison of these methods including possible fine-tuning of each method. Data was\nfetched from a node running on a machine with the below specifications:"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"Node.js"}),": v1.18.0"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"Consensus client"}),": Lighthouse"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"CPU"}),": AMD EPYC 7713 (16 cores allocated for the VM)"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"RAM"}),": 64 GB"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"Disk size"}),": 1.2 TB"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"Disk IOPS"}),": 70,000 to 80,000"]}),"\n"]}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Metric"}),(0,t.jsx)(s.th,{children:"Resync"}),(0,t.jsx)(s.th,{children:"Pruning"}),(0,t.jsx)(s.th,{children:"Pruning and memory budget (4 GB)"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"Execution time"})}),(0,t.jsx)(s.td,{children:"~4h"}),(0,t.jsx)(s.td,{children:"~24h"}),(0,t.jsx)(s.td,{children:"~12h"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"Minimum free disk space"})}),(0,t.jsx)(s.td,{children:"N/A. You can execute resync even if there is 0 free space (avoid such a case)."}),(0,t.jsx)(s.td,{children:"250 GB"}),(0,t.jsx)(s.td,{children:"250 GB"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"Attestation rate drop"})}),(0,t.jsx)(s.td,{children:"100%. No attestation rewards during that time or highly reduced."}),(0,t.jsx)(s.td,{children:"5\u201310% during that time"}),(0,t.jsx)(s.td,{children:"N/A"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"Average block processing time of new blocks during the process"})}),(0,t.jsx)(s.td,{children:"N/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s."}),(0,t.jsx)(s.td,{children:"0.7s"}),(0,t.jsx)(s.td,{children:"1.0s"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:(0,t.jsx)(s.strong,{children:"Is the node online during the process?"})}),(0,t.jsx)(s.td,{children:"No, unless the state is synced."}),(0,t.jsx)(s.td,{children:"Yes. The node follows the chain, and all modules are still enabled."}),(0,t.jsx)(s.td,{children:"Yes. The node follows chain and all modules are still enabled."})]})]})]}),"\n",(0,t.jsx)(s.p,{children:"The command used for testing disk IOPS was as follows:"}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-bash",children:"fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw\n"})})]})}function j(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(x,{...e})}):x(e)}},9365:(e,s,r)=>{r.d(s,{A:()=>i});r(6540);var t=r(4164);const n={tabItem:"tabItem_Ymn6"};var d=r(4848);function i(e){let{children:s,hidden:r,className:i}=e;return(0,d.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,i),hidden:r,children:s})}},1470:(e,s,r)=>{r.d(s,{A:()=>y});var t=r(6540),n=r(4164),d=r(3104),i=r(6347),l=r(205),c=r(7485),h=r(1682),a=r(679);function o(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:s}=e;return!!s&&"object"==typeof s&&"value"in s}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:s,children:r}=e;return(0,t.useMemo)((()=>{const e=s??function(e){return o(e).map((e=>{let{props:{value:s,label:r,attributes:t,default:n}}=e;return{value:s,label:r,attributes:t,default:n}}))}(r);return function(e){const s=(0,h.XI)(e,((e,s)=>e.value===s.value));if(s.length>0)throw new Error(`Docusaurus error: Duplicate values "${s.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[s,r])}function j(e){let{value:s,tabValues:r}=e;return r.some((e=>e.value===s))}function u(e){let{queryString:s=!1,groupId:r}=e;const n=(0,i.W6)(),d=function(e){let{queryString:s=!1,groupId:r}=e;if("string"==typeof s)return s;if(!1===s)return null;if(!0===s&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:s,groupId:r});return[(0,c.aZ)(d),(0,t.useCallback)((e=>{if(!d)return;const s=new URLSearchParams(n.location.search);s.set(d,e),n.replace({...n.location,search:s.toString()})}),[d,n])]}function b(e){const{defaultValue:s,queryString:r=!1,groupId:n}=e,d=x(e),[i,c]=(0,t.useState)((()=>function(e){let{defaultValue:s,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(s){if(!j({value:s,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${s}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return s}const t=r.find((e=>e.default))??r[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:s,tabValues:d}))),[h,o]=u({queryString:r,groupId:n}),[b,p]=function(e){let{groupId:s}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(s),[n,d]=(0,a.Dv)(r);return[n,(0,t.useCallback)((e=>{r&&d.set(e)}),[r,d])]}({groupId:n}),f=(()=>{const e=h??b;return j({value:e,tabValues:d})?e:null})();(0,l.A)((()=>{f&&c(f)}),[f]);return{selectedValue:i,selectValue:(0,t.useCallback)((e=>{if(!j({value:e,tabValues:d}))throw new Error(`Can't select invalid tab value=${e}`);c(e),o(e),p(e)}),[o,p,d]),tabValues:d}}var p=r(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=r(4848);function g(e){let{className:s,block:r,selectedValue:t,selectValue:i,tabValues:l}=e;const c=[],{blockElementScrollPositionUntilNextRender:h}=(0,d.a_)(),a=e=>{const s=e.currentTarget,r=c.indexOf(s),n=l[r].value;n!==t&&(h(s),i(n))},o=e=>{let s=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const r=c.indexOf(e.currentTarget)+1;s=c[r]??c[0];break}case"ArrowLeft":{const r=c.indexOf(e.currentTarget)-1;s=c[r]??c[c.length-1];break}}s?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":r},s),children:l.map((e=>{let{value:s,label:r,attributes:d}=e;return(0,m.jsx)("li",{role:"tab",tabIndex:t===s?0:-1,"aria-selected":t===s,ref:e=>c.push(e),onKeyDown:o,onClick:a,...d,className:(0,n.A)("tabs__item",f.tabItem,d?.className,{"tabs__item--active":t===s}),children:r??s},s)}))})}function B(e){let{lazy:s,children:r,selectedValue:d}=e;const i=(Array.isArray(r)?r:[r]).filter(Boolean);if(s){const e=i.find((e=>e.props.value===d));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:i.map(((e,s)=>(0,t.cloneElement)(e,{key:s,hidden:e.props.value!==d})))})}function v(e){const s=b(e);return(0,m.jsxs)("div",{className:(0,n.A)("tabs-container",f.tabList),children:[(0,m.jsx)(g,{...s,...e}),(0,m.jsx)(B,{...s,...e})]})}function y(e){const s=(0,p.A)();return(0,m.jsx)(v,{...e,children:o(e.children)},String(s))}},8453:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>l});var t=r(6540);const n={},d=t.createContext(n);function i(e){const s=t.useContext(d);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),t.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1539e79d.2e238d93.js b/assets/js/1539e79d.6bde55ad.js similarity index 99% rename from assets/js/1539e79d.2e238d93.js rename to assets/js/1539e79d.6bde55ad.js index bc9090313..511613328 100644 --- a/assets/js/1539e79d.2e238d93.js +++ b/assets/js/1539e79d.6bde55ad.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5846],{258:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=s(4848),l=s(8453),i=s(1470),t=s(9365);const a={title:"admin namespace",sidebar_label:"admin",sidebar_position:0},d=void 0,c={id:"interacting/json-rpc-ns/admin",title:"admin namespace",description:"admin_addPeer",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/admin.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/admin",permalink:"/interacting/json-rpc-ns/admin",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/admin.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"admin namespace",sidebar_label:"admin",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"JSON-RPC server",permalink:"/interacting/json-rpc-server"},next:{title:"clique",permalink:"/interacting/json-rpc-ns/clique"}},o={},u=[{value:"admin_addPeer",id:"admin_addpeer",level:3},{value:"admin_nodeInfo",id:"admin_nodeinfo",level:3},{value:"admin_peers",id:"admin_peers",level:3},{value:"admin_prune",id:"admin_prune",level:3},{value:"admin_removePeer",id:"admin_removepeer",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"admin_addpeer",children:"admin_addPeer"}),"\n",(0,r.jsx)(n.p,{children:"Adds given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"addToStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_addPeer",\n "params": [enode, addToStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Added node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_nodeinfo",children:"admin_nodeInfo"}),"\n",(0,r.jsx)(n.p,{children:"Displays relevant information about this node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_nodeInfo",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Information about this node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ip"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listenAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ports"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"discovery"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listener"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"genesisHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"newtorkId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_peers",children:"admin_peers"}),"\n",(0,r.jsxs)(n.p,{children:["Displays a list of connected peers including information about them (",(0,r.jsx)(n.code,{children:"clientId"}),", ",(0,r.jsx)(n.code,{children:"host"}),", ",(0,r.jsx)(n.code,{children:"port"}),", ",(0,r.jsx)(n.code,{children:"address"}),", ",(0,r.jsx)(n.code,{children:"isBootnode"}),", ",(0,r.jsx)(n.code,{children:"isStatic"}),", ",(0,r.jsx)(n.code,{children:"enode"}),")."]}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeDetails"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_peers",\n "params": [includeDetails]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"List of connected peers including information"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ethDetails"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"host"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isBootnode"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isStatic"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isTrusted"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"lastSignal"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"port"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_prune",children:"admin_prune"}),"\n",(0,r.jsx)(n.p,{children:"Runs full pruning if enabled."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_prune",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"integer"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_removepeer",children:"admin_removePeer"}),"\n",(0,r.jsx)(n.p,{children:"Removes given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"removeFromStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_removePeer",\n "params": [enode, removeFromStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Removed node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var i=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),l=s(4164),i=s(3104),t=s(6347),a=s(205),d=s(7485),c=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function x(e){let{queryString:n=!1,groupId:s}=e;const l=(0,t.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(l.location.search);n.set(i,e),l.replace({...l.location,search:n.toString()})}),[i,l])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,i=h(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[c,u]=x({queryString:s,groupId:l}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,i]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:l}),b=(()=>{const e=c??m;return j({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{b&&d(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),p(e)}),[u,p,i]),tabValues:i}}var p=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:a}=e;const d=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),l=a[s].value;l!==r&&(c(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:a.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:u,onClick:o,...i,className:(0,l.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function _(e){const n=m(e);return(0,g.jsxs)("div",{className:(0,l.A)("tabs-container",b.tabList),children:[(0,g.jsx)(f,{...n,...e}),(0,g.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,g.jsx)(_,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const l={},i=r.createContext(l);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5846],{258:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=s(4848),l=s(8453),i=s(1470),t=s(9365);const a={title:"admin namespace",sidebar_label:"admin",sidebar_position:0},d=void 0,c={id:"interacting/json-rpc-ns/admin",title:"admin namespace",description:"admin_addPeer",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/admin.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/admin",permalink:"/interacting/json-rpc-ns/admin",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/admin.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"admin namespace",sidebar_label:"admin",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"JSON-RPC server",permalink:"/interacting/json-rpc-server"},next:{title:"clique",permalink:"/interacting/json-rpc-ns/clique"}},o={},u=[{value:"admin_addPeer",id:"admin_addpeer",level:3},{value:"admin_nodeInfo",id:"admin_nodeinfo",level:3},{value:"admin_peers",id:"admin_peers",level:3},{value:"admin_prune",id:"admin_prune",level:3},{value:"admin_removePeer",id:"admin_removepeer",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"admin_addpeer",children:"admin_addPeer"}),"\n",(0,r.jsx)(n.p,{children:"Adds given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"addToStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_addPeer",\n "params": [enode, addToStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Added node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_nodeinfo",children:"admin_nodeInfo"}),"\n",(0,r.jsx)(n.p,{children:"Displays relevant information about this node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_nodeInfo",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Information about this node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ip"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listenAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ports"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"discovery"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listener"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"genesisHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"newtorkId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_peers",children:"admin_peers"}),"\n",(0,r.jsxs)(n.p,{children:["Displays a list of connected peers including information about them (",(0,r.jsx)(n.code,{children:"clientId"}),", ",(0,r.jsx)(n.code,{children:"host"}),", ",(0,r.jsx)(n.code,{children:"port"}),", ",(0,r.jsx)(n.code,{children:"address"}),", ",(0,r.jsx)(n.code,{children:"isBootnode"}),", ",(0,r.jsx)(n.code,{children:"isStatic"}),", ",(0,r.jsx)(n.code,{children:"enode"}),")."]}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeDetails"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_peers",\n "params": [includeDetails]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"List of connected peers including information"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ethDetails"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"host"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isBootnode"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isStatic"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isTrusted"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"lastSignal"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"port"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_prune",children:"admin_prune"}),"\n",(0,r.jsx)(n.p,{children:"Runs full pruning if enabled."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_prune",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"integer"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_removepeer",children:"admin_removePeer"}),"\n",(0,r.jsx)(n.p,{children:"Removes given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"removeFromStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_removePeer",\n "params": [enode, removeFromStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Removed node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var i=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),l=s(4164),i=s(3104),t=s(6347),a=s(205),d=s(7485),c=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function x(e){let{queryString:n=!1,groupId:s}=e;const l=(0,t.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(l.location.search);n.set(i,e),l.replace({...l.location,search:n.toString()})}),[i,l])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,i=h(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[c,u]=x({queryString:s,groupId:l}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,i]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:l}),b=(()=>{const e=c??m;return j({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{b&&d(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),p(e)}),[u,p,i]),tabValues:i}}var p=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:a}=e;const d=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),l=a[s].value;l!==r&&(c(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:a.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:u,onClick:o,...i,className:(0,l.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function _(e){const n=m(e);return(0,g.jsxs)("div",{className:(0,l.A)("tabs-container",b.tabList),children:[(0,g.jsx)(f,{...n,...e}),(0,g.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,g.jsx)(_,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const l={},i=r.createContext(l);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/16649b4c.3a22c921.js b/assets/js/16649b4c.bebbbc6a.js similarity index 99% rename from assets/js/16649b4c.3a22c921.js rename to assets/js/16649b4c.bebbbc6a.js index 7dfe8ada7..0a8eac130 100644 --- a/assets/js/16649b4c.3a22c921.js +++ b/assets/js/16649b4c.bebbbc6a.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8338],{4332:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var r=n(4848),s=n(8453),a=n(1470),o=n(9365);const i={title:"Troubleshooting",sidebar_position:8},l=void 0,c={id:"troubleshooting",title:"Troubleshooting",description:"File descriptor limits",source:"@site/versioned_docs/version-1.26.0/troubleshooting.md",sourceDirName:".",slug:"/troubleshooting",permalink:"/1.26.0/troubleshooting",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/troubleshooting.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"Troubleshooting",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"FAQ",permalink:"/1.26.0/faq"}},u={},d=[{value:"File descriptor limits",id:"file-descriptor-limits",level:2},{value:"Database corruption issues",id:"database-corruption-issues",level:2},{value:"Issues with lock files",id:"issues-with-lock-files",level:2},{value:"Block checksum mismatch",id:"block-checksum-mismatch",level:2}];function h(e){const t={a:"a",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"file-descriptor-limits",children:"File descriptor limits"}),"\n",(0,r.jsx)(t.p,{children:'In some cases, file descriptor limits may cause errors like "Too many open files". To solve that, see the instructions for your platform below.'}),"\n",(0,r.jsxs)(a.A,{groupId:"os",children:[(0,r.jsxs)(o.A,{value:"linux",label:"Linux",children:[(0,r.jsxs)(t.p,{children:["To increase the limits for the user running Nethermind (given the process name of ",(0,r.jsx)(t.code,{children:"nethermind"}),"), run:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:'sudo echo "nethermind soft nofile 100000" > /etc/security/limits.d/nethermind.conf\nsudo echo "nethermind hard nofile 100000" >> /etc/security/limits.d/nethermind.conf\n'})})]}),(0,r.jsxs)(o.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(t.p,{children:"To increase the limits, run:"}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"ulimit -n 10000\n"})}),(0,r.jsxs)(t.p,{children:["If you run into issues with the above command, see the ",(0,r.jsx)(t.a,{href:"https://developer.apple.com/forums/thread/735798?answerId=762679022#762679022",children:"workaround"}),"."]}),(0,r.jsxs)(t.p,{children:["Note that the changes above are temporary and will be reset after the system reboot. To make them permanent, you can add them to your ",(0,r.jsx)(t.code,{children:"~/.bashrc"})," or ",(0,r.jsx)(t.code,{children:"~/.bash_profile"})," shell configuration file."]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"database-corruption-issues",children:"Database corruption issues"}),"\n",(0,r.jsx)(t.p,{children:"Database corruption is one of the issues that happen now and then; it has many possible causes among them:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Hardware failures: disk failures, memory errors, hardware overheating, etc."}),"\n",(0,r.jsx)(t.li,{children:"Power cuts and abrupt shutdowns"}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["There's no shortcut in such situations, and ",(0,r.jsx)(t.a,{href:"/1.26.0/fundamentals/sync#resync-a-node-from-scratch",children:"resyncing Nethermind from scratch"})," is the recommended remedy."]}),"\n",(0,r.jsx)(t.h2,{id:"issues-with-lock-files",children:"Issues with lock files"}),"\n",(0,r.jsx)(t.p,{children:"If Nethermind complains about the lock files, it perhaps because of one of the following:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Another Nethermind process is running using the same database"}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The database has not been appropriately closed on the last run.",(0,r.jsx)(t.br,{}),"\n","In this case, run the following command from the Nethermind database directory:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"find . -type f -name 'LOCK' -delete\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"block-checksum-mismatch",children:"Block checksum mismatch"}),"\n",(0,r.jsx)(t.p,{children:"Sometimes Nethermind may fail with an error similar the following:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"Corruption: block checksum mismatch: expected 2087346143, got 2983326672 in... \n"})}),"\n",(0,r.jsxs)(t.p,{children:["This tends to happen on XFS file systems under very high memory pressure. The issue can be mitigated by using the ",(0,r.jsx)(t.code,{children:"--Db.UseDirectIoForFlushAndCompactions true"})," option although at the cost of performance."]}),"\n",(0,r.jsx)(t.p,{children:"However, quite often, this is because of memory module issues."})]})}function m(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>o});n(6540);var r=n(4164);const s={tabItem:"tabItem_Ymn6"};var a=n(4848);function o(e){let{children:t,hidden:n,className:o}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,o),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(4164),a=n(3104),o=n(6347),i=n(205),l=n(7485),c=n(1682),u=n(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const s=(0,o.W6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(s.location.search);t.set(a,e),s.replace({...s.location,search:t.toString()})}),[a,s])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,a=h(e),[o,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:a}))),[c,d]=p({queryString:n,groupId:s}),[f,b]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,a]=(0,u.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:s}),v=(()=>{const e=c??f;return m({value:e,tabValues:a})?e:null})();(0,i.A)((()=>{v&&l(v)}),[v]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=n(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=n(4848);function g(e){let{className:t,block:n,selectedValue:r,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const t=e.currentTarget,n=l.indexOf(t),s=i[n].value;s!==r&&(c(t),o(s))},d=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:i.map((e=>{let{value:t,label:n,attributes:a}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>l.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",v.tabItem,a?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function j(e){let{lazy:t,children:n,selectedValue:a}=e;const o=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:o.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a})))})}function y(e){const t=f(e);return(0,x.jsxs)("div",{className:(0,s.A)("tabs-container",v.tabList),children:[(0,x.jsx)(g,{...t,...e}),(0,x.jsx)(j,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,x.jsx)(y,{...e,children:d(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>i});var r=n(6540);const s={},a=r.createContext(s);function o(e){const t=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8338],{4332:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var r=n(4848),s=n(8453),a=n(1470),o=n(9365);const i={title:"Troubleshooting",sidebar_position:8},l=void 0,c={id:"troubleshooting",title:"Troubleshooting",description:"File descriptor limits",source:"@site/versioned_docs/version-1.26.0/troubleshooting.md",sourceDirName:".",slug:"/troubleshooting",permalink:"/1.26.0/troubleshooting",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/troubleshooting.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"Troubleshooting",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"FAQ",permalink:"/1.26.0/faq"}},u={},d=[{value:"File descriptor limits",id:"file-descriptor-limits",level:2},{value:"Database corruption issues",id:"database-corruption-issues",level:2},{value:"Issues with lock files",id:"issues-with-lock-files",level:2},{value:"Block checksum mismatch",id:"block-checksum-mismatch",level:2}];function h(e){const t={a:"a",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"file-descriptor-limits",children:"File descriptor limits"}),"\n",(0,r.jsx)(t.p,{children:'In some cases, file descriptor limits may cause errors like "Too many open files". To solve that, see the instructions for your platform below.'}),"\n",(0,r.jsxs)(a.A,{groupId:"os",children:[(0,r.jsxs)(o.A,{value:"linux",label:"Linux",children:[(0,r.jsxs)(t.p,{children:["To increase the limits for the user running Nethermind (given the process name of ",(0,r.jsx)(t.code,{children:"nethermind"}),"), run:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:'sudo echo "nethermind soft nofile 100000" > /etc/security/limits.d/nethermind.conf\nsudo echo "nethermind hard nofile 100000" >> /etc/security/limits.d/nethermind.conf\n'})})]}),(0,r.jsxs)(o.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(t.p,{children:"To increase the limits, run:"}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"ulimit -n 10000\n"})}),(0,r.jsxs)(t.p,{children:["If you run into issues with the above command, see the ",(0,r.jsx)(t.a,{href:"https://developer.apple.com/forums/thread/735798?answerId=762679022#762679022",children:"workaround"}),"."]}),(0,r.jsxs)(t.p,{children:["Note that the changes above are temporary and will be reset after the system reboot. To make them permanent, you can add them to your ",(0,r.jsx)(t.code,{children:"~/.bashrc"})," or ",(0,r.jsx)(t.code,{children:"~/.bash_profile"})," shell configuration file."]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"database-corruption-issues",children:"Database corruption issues"}),"\n",(0,r.jsx)(t.p,{children:"Database corruption is one of the issues that happen now and then; it has many possible causes among them:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Hardware failures: disk failures, memory errors, hardware overheating, etc."}),"\n",(0,r.jsx)(t.li,{children:"Power cuts and abrupt shutdowns"}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["There's no shortcut in such situations, and ",(0,r.jsx)(t.a,{href:"/1.26.0/fundamentals/sync#resync-a-node-from-scratch",children:"resyncing Nethermind from scratch"})," is the recommended remedy."]}),"\n",(0,r.jsx)(t.h2,{id:"issues-with-lock-files",children:"Issues with lock files"}),"\n",(0,r.jsx)(t.p,{children:"If Nethermind complains about the lock files, it perhaps because of one of the following:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Another Nethermind process is running using the same database"}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The database has not been appropriately closed on the last run.",(0,r.jsx)(t.br,{}),"\n","In this case, run the following command from the Nethermind database directory:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"find . -type f -name 'LOCK' -delete\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"block-checksum-mismatch",children:"Block checksum mismatch"}),"\n",(0,r.jsx)(t.p,{children:"Sometimes Nethermind may fail with an error similar the following:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"Corruption: block checksum mismatch: expected 2087346143, got 2983326672 in... \n"})}),"\n",(0,r.jsxs)(t.p,{children:["This tends to happen on XFS file systems under very high memory pressure. The issue can be mitigated by using the ",(0,r.jsx)(t.code,{children:"--Db.UseDirectIoForFlushAndCompactions true"})," option although at the cost of performance."]}),"\n",(0,r.jsx)(t.p,{children:"However, quite often, this is because of memory module issues."})]})}function m(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>o});n(6540);var r=n(4164);const s={tabItem:"tabItem_Ymn6"};var a=n(4848);function o(e){let{children:t,hidden:n,className:o}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,o),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(4164),a=n(3104),o=n(6347),i=n(205),l=n(7485),c=n(1682),u=n(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const s=(0,o.W6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(s.location.search);t.set(a,e),s.replace({...s.location,search:t.toString()})}),[a,s])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,a=h(e),[o,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:a}))),[c,d]=p({queryString:n,groupId:s}),[f,b]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,a]=(0,u.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:s}),v=(()=>{const e=c??f;return m({value:e,tabValues:a})?e:null})();(0,i.A)((()=>{v&&l(v)}),[v]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=n(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=n(4848);function g(e){let{className:t,block:n,selectedValue:r,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const t=e.currentTarget,n=l.indexOf(t),s=i[n].value;s!==r&&(c(t),o(s))},d=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:i.map((e=>{let{value:t,label:n,attributes:a}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>l.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",v.tabItem,a?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function j(e){let{lazy:t,children:n,selectedValue:a}=e;const o=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:o.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a})))})}function y(e){const t=f(e);return(0,x.jsxs)("div",{className:(0,s.A)("tabs-container",v.tabList),children:[(0,x.jsx)(g,{...t,...e}),(0,x.jsx)(j,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,x.jsx)(y,{...e,children:d(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>i});var r=n(6540);const s={},a=r.createContext(s);function o(e){const t=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/181ca382.b5869571.js b/assets/js/181ca382.10379fd4.js similarity index 99% rename from assets/js/181ca382.b5869571.js rename to assets/js/181ca382.10379fd4.js index 2969228f0..efda8c53a 100644 --- a/assets/js/181ca382.b5869571.js +++ b/assets/js/181ca382.10379fd4.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9582],{5004:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const o={title:"Aura-based validators",sidebar_position:0},s=void 0,a={id:"validators/aura",title:"Aura-based validators",description:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.",source:"@site/versioned_docs/version-1.25.4/validators/aura.md",sourceDirName:"validators",slug:"/validators/aura",permalink:"/1.25.4/validators/aura",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/validators/aura.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Aura-based validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Validators",permalink:"/1.25.4/validators/"},next:{title:"Building from source",permalink:"/1.25.4/developers/building-from-source"}},c={},d=[{value:"Configuring a Docker container",id:"configuring-a-docker-container",level:2},{value:"Configuring keyfile",id:"configuring-keyfile",level:2},{value:"Configuration settings",id:"configuration-settings",level:2},{value:"Running the validator",id:"running-the-validator",level:2}];function l(e){const n={admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Your machine's clock has to be synchronized. Otherwise, you might miss block sealing. By default, the block time is set to 5 seconds."})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-a-docker-container",children:"Configuring a Docker container"}),"\n",(0,r.jsx)(n.p,{children:"The example below shows how to configure a Docker container for an Aura-based validator on the Energy Web chain:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n nethermind-validator:\n image: nethermind/nethermind:latest\n container_name: nethermind-validator\n restart: unless-stopped\n ports:\n - 8545:8545\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n environment:\n - NETHERMIND_CONFIG=energyweb\n volumes:\n - ${PWD}/keystore:/nethermind/keystore\n - ${PWD}/logs:/nethermind/logs\n - ${PWD}/nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-keyfile",children:"Configuring keyfile"}),"\n",(0,r.jsxs)(n.p,{children:["Make sure that the keyfile name contains the public key (address). Otherwise, Nethermind doesn't recognize it as such.\nFor instance, a keyfile can be named ",(0,r.jsx)(n.code,{children:"key-0x1234567890123456789012345678901234567890"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The keyfile must be stored in the ",(0,r.jsx)(n.code,{children:"keystore"})," directory located in the Nethermind base data directory."]}),"\n",(0,r.jsx)(n.h2,{id:"configuration-settings",children:"Configuration settings"}),"\n",(0,r.jsx)(n.p,{children:"Here is an example of recommended settings for a validator. The most convenient way to configure these settings is either defining them in the configuration file or passing them as environment variables."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.IsMining"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.MemoryHint"}),": Can be left unspecified. It's recommended to configure it accordingly to the machine specification(for Eneergy Web, 768000000 is enough)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"EthStats"})," namespace parameters if you want to report node status to Ethstats for your network."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Metrics"})," namespace parameters to enable node monitoring."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.PasswordFiles"}),": The path to the file containing the password for the mining private key."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.UnlockAccounts"}),": An array of accounts. Provide the miner public address here."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"}),": The miner public address should be provided here as well."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Aura.ForceSealing"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Merge.Enabled"}),": ",(0,r.jsx)(n.code,{children:"false"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Here's an example of above settings in the Energy Web configuration file:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",metastring:'title="energyweb.cfg"',children:'{\n "Init": {\n "ChainSpecPath": "chainspec/energyweb.json",\n "GenesisHash": "0x0b6d3e680af2fc525392c720666cce58e3d8e6fe75ba4b48cb36bcc69039229b",\n "BaseDbPath": "nethermind_db/energyweb",\n "LogFileName": "energyweb.log",\n "MemoryHint": 768000000\n },\n "Sync": {\n "FastSync": true,\n "PivotNumber": 26940000,\n "PivotHash": "0x8835983de9578a4355313afd2a43d8eada6f2a4ddbd9c51da103e0d5f53c4d8b",\n "PivotTotalDifficulty": "9167206964850082205703311924211835616257898274",\n "FastBlocks": true,\n "UseGethLimitsInFastBlocks": false,\n "FastSyncCatchUpHeightDelta": 10000000000\n },\n "EthStats": {\n "Enabled": true,\n "Name": "Nethermind Energy Web",\n "Secret": "secret...",\n "Url": "ws://localhost:3000/api"\n },\n "Metrics": {\n "Enabled": true,\n "NodeName": "Energy Web",\n "PushGatewayUrl": "http://localhost:9091/metrics"\n },\n "Mining": {\n "MinGasPrice": 1\n },\n "Merge": {\n "Enabled": false\n },\n "Aura": {\n "ForceSealing": true\n },\n "KeyStore": {\n "PasswordFiles": ["keystore/password"],\n "UnlockAccounts": ["0x..."],\n "BlockAuthorAccount": "0x..." \n },\n}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"running-the-validator",children:"Running the validator"}),"\n",(0,r.jsxs)(n.p,{children:["The above Docker Compose file can be run from the directory the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," is located in as follows:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker-compose up -d\n"})}),"\n",(0,r.jsx)(n.p,{children:"To check the logs and verify the sealing of blocks, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker-compose logs -f nethermind-validator\n"})})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>a});var r=i(6540);const t={},o=r.createContext(t);function s(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9582],{5004:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const o={title:"Aura-based validators",sidebar_position:0},s=void 0,a={id:"validators/aura",title:"Aura-based validators",description:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.",source:"@site/versioned_docs/version-1.25.4/validators/aura.md",sourceDirName:"validators",slug:"/validators/aura",permalink:"/1.25.4/validators/aura",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/validators/aura.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Aura-based validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Validators",permalink:"/1.25.4/validators/"},next:{title:"Building from source",permalink:"/1.25.4/developers/building-from-source"}},c={},d=[{value:"Configuring a Docker container",id:"configuring-a-docker-container",level:2},{value:"Configuring keyfile",id:"configuring-keyfile",level:2},{value:"Configuration settings",id:"configuration-settings",level:2},{value:"Running the validator",id:"running-the-validator",level:2}];function l(e){const n={admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Your machine's clock has to be synchronized. Otherwise, you might miss block sealing. By default, the block time is set to 5 seconds."})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-a-docker-container",children:"Configuring a Docker container"}),"\n",(0,r.jsx)(n.p,{children:"The example below shows how to configure a Docker container for an Aura-based validator on the Energy Web chain:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n nethermind-validator:\n image: nethermind/nethermind:latest\n container_name: nethermind-validator\n restart: unless-stopped\n ports:\n - 8545:8545\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n environment:\n - NETHERMIND_CONFIG=energyweb\n volumes:\n - ${PWD}/keystore:/nethermind/keystore\n - ${PWD}/logs:/nethermind/logs\n - ${PWD}/nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-keyfile",children:"Configuring keyfile"}),"\n",(0,r.jsxs)(n.p,{children:["Make sure that the keyfile name contains the public key (address). Otherwise, Nethermind doesn't recognize it as such.\nFor instance, a keyfile can be named ",(0,r.jsx)(n.code,{children:"key-0x1234567890123456789012345678901234567890"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The keyfile must be stored in the ",(0,r.jsx)(n.code,{children:"keystore"})," directory located in the Nethermind base data directory."]}),"\n",(0,r.jsx)(n.h2,{id:"configuration-settings",children:"Configuration settings"}),"\n",(0,r.jsx)(n.p,{children:"Here is an example of recommended settings for a validator. The most convenient way to configure these settings is either defining them in the configuration file or passing them as environment variables."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.IsMining"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.MemoryHint"}),": Can be left unspecified. It's recommended to configure it accordingly to the machine specification(for Eneergy Web, 768000000 is enough)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"EthStats"})," namespace parameters if you want to report node status to Ethstats for your network."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Metrics"})," namespace parameters to enable node monitoring."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.PasswordFiles"}),": The path to the file containing the password for the mining private key."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.UnlockAccounts"}),": An array of accounts. Provide the miner public address here."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"}),": The miner public address should be provided here as well."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Aura.ForceSealing"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Merge.Enabled"}),": ",(0,r.jsx)(n.code,{children:"false"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Here's an example of above settings in the Energy Web configuration file:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",metastring:'title="energyweb.cfg"',children:'{\n "Init": {\n "ChainSpecPath": "chainspec/energyweb.json",\n "GenesisHash": "0x0b6d3e680af2fc525392c720666cce58e3d8e6fe75ba4b48cb36bcc69039229b",\n "BaseDbPath": "nethermind_db/energyweb",\n "LogFileName": "energyweb.log",\n "MemoryHint": 768000000\n },\n "Sync": {\n "FastSync": true,\n "PivotNumber": 26940000,\n "PivotHash": "0x8835983de9578a4355313afd2a43d8eada6f2a4ddbd9c51da103e0d5f53c4d8b",\n "PivotTotalDifficulty": "9167206964850082205703311924211835616257898274",\n "FastBlocks": true,\n "UseGethLimitsInFastBlocks": false,\n "FastSyncCatchUpHeightDelta": 10000000000\n },\n "EthStats": {\n "Enabled": true,\n "Name": "Nethermind Energy Web",\n "Secret": "secret...",\n "Url": "ws://localhost:3000/api"\n },\n "Metrics": {\n "Enabled": true,\n "NodeName": "Energy Web",\n "PushGatewayUrl": "http://localhost:9091/metrics"\n },\n "Mining": {\n "MinGasPrice": 1\n },\n "Merge": {\n "Enabled": false\n },\n "Aura": {\n "ForceSealing": true\n },\n "KeyStore": {\n "PasswordFiles": ["keystore/password"],\n "UnlockAccounts": ["0x..."],\n "BlockAuthorAccount": "0x..." \n },\n}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"running-the-validator",children:"Running the validator"}),"\n",(0,r.jsxs)(n.p,{children:["The above Docker Compose file can be run from the directory the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," is located in as follows:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker-compose up -d\n"})}),"\n",(0,r.jsx)(n.p,{children:"To check the logs and verify the sealing of blocks, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker-compose logs -f nethermind-validator\n"})})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>a});var r=i(6540);const t={},o=r.createContext(t);function s(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/18c15ca9.3c054a0b.js b/assets/js/18c15ca9.f116eaf2.js similarity index 99% rename from assets/js/18c15ca9.3c054a0b.js rename to assets/js/18c15ca9.f116eaf2.js index 3b3f4a8e6..879921116 100644 --- a/assets/js/18c15ca9.3c054a0b.js +++ b/assets/js/18c15ca9.f116eaf2.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2154],{7105:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>d,toc:()=>c});var i=t(4848),s=t(8453);const r={title:"Running a node",sidebar_position:0},o=void 0,d={id:"get-started/running-node/running-node",title:"Running a node",description:"- Ensure Nethermind is installed according to the installation guide.",source:"@site/versioned_docs/version-1.29.0/get-started/running-node/running-node.md",sourceDirName:"get-started/running-node",slug:"/get-started/running-node/",permalink:"/get-started/running-node/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/get-started/running-node/running-node.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Running a node",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Installing Nethermind",permalink:"/get-started/installing-nethermind"},next:{title:"Consensus clients",permalink:"/get-started/running-node/consensus-clients"}},a={},c=[{value:"Ethereum",id:"ethereum",level:2},{value:"OP Stack",id:"op-stack",level:2},{value:"Gnosis Chain",id:"gnosis-chain",level:2},{value:"Energy Web Chain",id:"energy-web-chain",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{title:"Before you begin",type:"info",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Ensure Nethermind is installed according to the ",(0,i.jsx)(n.a,{href:"/get-started/installing-nethermind",children:"installation guide"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["Check out the ",(0,i.jsx)(n.a,{href:"/fundamentals/security",children:"security considerations"})," before using Nethermind for critical operations."]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["In addition to the foundational Layer 1 networks, Nethermind supports various Layer 2 networks and sidechains out of the box. Running Nethermind on a supported network is as simple as specifying the respective ",(0,i.jsx)(n.a,{href:"/fundamentals/configuration#configuration-file",children:"configuration file"})," with the ",(0,i.jsx)(n.a,{href:"/fundamentals/configuration#config",children:(0,i.jsx)(n.code,{children:"-c, --config"})})," option."]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["We urge you to always ",(0,i.jsx)(n.a,{href:"/fundamentals/configuration#datadir",children:"explicitly specify"})," Nethermind's data directory outside of the Nethermind installation directory to avoid data loss during upgrades or reinstallation. The data directory must be on a disk with sufficient space and read/write permissions."]})}),"\n",(0,i.jsx)(n.h2,{id:"ethereum",children:"Ethereum"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#ethereum-mainnet",children:"Mainnet"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://github.com/eth-clients/holesky",children:"Holesky"})," (testnet)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://github.com/eth-clients/sepolia",children:"Sepolia"})," (testnet)"]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["We highly recommend checking out the ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/run-a-node/",children:"Spin up your own Ethereum node"})," guide by the Ethereum Foundation."]})}),"\n",(0,i.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,i.jsxs)(n.p,{children:["A ",(0,i.jsx)(n.a,{href:"/get-started/running-node/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,i.jsx)(n.p,{children:"For instance, to launch the client with the default configuration for the Mainnet and custom data directory, run:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,i.jsxs)(n.p,{children:["For more info about configuring the JWT secret, see ",(0,i.jsx)(n.a,{href:"/get-started/running-node/consensus-clients#configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["For archive (aka full) nodes, Nethermind provides separate configuration files prefixed with ",(0,i.jsx)(n.code,{children:"_archive"}),". Thus, to run Nethermind on the Mainnet as an archive node, simply change ",(0,i.jsx)(n.code,{children:"mainnet"})," to ",(0,i.jsx)(n.code,{children:"mainnet_archive"})," in the above command as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet_archive \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Archive nodes are generally more resource-demanding. If you intend to run one, we recommend checking out the ",(0,i.jsx)(n.a,{href:"/get-started/system-requirements#hardware-requirements",children:"hardware requirements"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"op-stack",children:"OP Stack"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Optimism","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.optimism.io/chain/networks#op-mainnet",children:"OP Mainnet"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://docs.optimism.io/chain/networks#op-sepolia",children:"OP Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["Base","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-mainnet",children:"Base Mainnet"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-testnet-sepolia",children:"Base Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To run Nethermind on an OP Stack network, see ",(0,i.jsx)(n.a,{href:"/get-started/running-node/l2-networks#op-stack",children:"Layer 2 networks"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"gnosis-chain",children:"Gnosis Chain"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/about/networks/mainnet",children:"Gnosis"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/about/networks/chiado",children:"Chiado"})," (testnet)"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To run Nethermind on the Gnosis Chain, see the ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node",children:"Gnosis Chain documentation"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"energy-web-chain",children:"Energy Web Chain"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain",children:"Energy Web"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/testnet-and-mainnet#developing-on-volta-test-network",children:"Volta"})," (testnet)"]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsx)(n.p,{children:"As the Energy Web Chain is an Aura-based network, running a node does not require a consensus client."})}),"\n",(0,i.jsxs)(n.p,{children:["To run Nethermind on the Energy Web Chain, see the ",(0,i.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/running-a-local-node",children:"Energy Web Chain documentation"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var i=t(6540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2154],{7105:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>d,toc:()=>c});var i=t(4848),s=t(8453);const r={title:"Running a node",sidebar_position:0},o=void 0,d={id:"get-started/running-node/running-node",title:"Running a node",description:"- Ensure Nethermind is installed according to the installation guide.",source:"@site/versioned_docs/version-1.29.0/get-started/running-node/running-node.md",sourceDirName:"get-started/running-node",slug:"/get-started/running-node/",permalink:"/get-started/running-node/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/get-started/running-node/running-node.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Running a node",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Installing Nethermind",permalink:"/get-started/installing-nethermind"},next:{title:"Consensus clients",permalink:"/get-started/running-node/consensus-clients"}},a={},c=[{value:"Ethereum",id:"ethereum",level:2},{value:"OP Stack",id:"op-stack",level:2},{value:"Gnosis Chain",id:"gnosis-chain",level:2},{value:"Energy Web Chain",id:"energy-web-chain",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{title:"Before you begin",type:"info",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Ensure Nethermind is installed according to the ",(0,i.jsx)(n.a,{href:"/get-started/installing-nethermind",children:"installation guide"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["Check out the ",(0,i.jsx)(n.a,{href:"/fundamentals/security",children:"security considerations"})," before using Nethermind for critical operations."]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["In addition to the foundational Layer 1 networks, Nethermind supports various Layer 2 networks and sidechains out of the box. Running Nethermind on a supported network is as simple as specifying the respective ",(0,i.jsx)(n.a,{href:"/fundamentals/configuration#configuration-file",children:"configuration file"})," with the ",(0,i.jsx)(n.a,{href:"/fundamentals/configuration#config",children:(0,i.jsx)(n.code,{children:"-c, --config"})})," option."]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["We urge you to always ",(0,i.jsx)(n.a,{href:"/fundamentals/configuration#datadir",children:"explicitly specify"})," Nethermind's data directory outside of the Nethermind installation directory to avoid data loss during upgrades or reinstallation. The data directory must be on a disk with sufficient space and read/write permissions."]})}),"\n",(0,i.jsx)(n.h2,{id:"ethereum",children:"Ethereum"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#ethereum-mainnet",children:"Mainnet"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://github.com/eth-clients/holesky",children:"Holesky"})," (testnet)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://github.com/eth-clients/sepolia",children:"Sepolia"})," (testnet)"]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["We highly recommend checking out the ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/run-a-node/",children:"Spin up your own Ethereum node"})," guide by the Ethereum Foundation."]})}),"\n",(0,i.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,i.jsxs)(n.p,{children:["A ",(0,i.jsx)(n.a,{href:"/get-started/running-node/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,i.jsx)(n.p,{children:"For instance, to launch the client with the default configuration for the Mainnet and custom data directory, run:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,i.jsxs)(n.p,{children:["For more info about configuring the JWT secret, see ",(0,i.jsx)(n.a,{href:"/get-started/running-node/consensus-clients#configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["For archive (aka full) nodes, Nethermind provides separate configuration files prefixed with ",(0,i.jsx)(n.code,{children:"_archive"}),". Thus, to run Nethermind on the Mainnet as an archive node, simply change ",(0,i.jsx)(n.code,{children:"mainnet"})," to ",(0,i.jsx)(n.code,{children:"mainnet_archive"})," in the above command as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet_archive \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Archive nodes are generally more resource-demanding. If you intend to run one, we recommend checking out the ",(0,i.jsx)(n.a,{href:"/get-started/system-requirements#hardware-requirements",children:"hardware requirements"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"op-stack",children:"OP Stack"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Optimism","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.optimism.io/chain/networks#op-mainnet",children:"OP Mainnet"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://docs.optimism.io/chain/networks#op-sepolia",children:"OP Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["Base","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-mainnet",children:"Base Mainnet"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-testnet-sepolia",children:"Base Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To run Nethermind on an OP Stack network, see ",(0,i.jsx)(n.a,{href:"/get-started/running-node/l2-networks#op-stack",children:"Layer 2 networks"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"gnosis-chain",children:"Gnosis Chain"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/about/networks/mainnet",children:"Gnosis"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/about/networks/chiado",children:"Chiado"})," (testnet)"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To run Nethermind on the Gnosis Chain, see the ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node",children:"Gnosis Chain documentation"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"energy-web-chain",children:"Energy Web Chain"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain",children:"Energy Web"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/testnet-and-mainnet#developing-on-volta-test-network",children:"Volta"})," (testnet)"]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsx)(n.p,{children:"As the Energy Web Chain is an Aura-based network, running a node does not require a consensus client."})}),"\n",(0,i.jsxs)(n.p,{children:["To run Nethermind on the Energy Web Chain, see the ",(0,i.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/running-a-local-node",children:"Energy Web Chain documentation"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var i=t(6540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/19d0da70.e3847deb.js b/assets/js/19d0da70.6a0db82f.js similarity index 99% rename from assets/js/19d0da70.e3847deb.js rename to assets/js/19d0da70.6a0db82f.js index bdd3622c6..9c5d82777 100644 --- a/assets/js/19d0da70.e3847deb.js +++ b/assets/js/19d0da70.6a0db82f.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3753],{5247:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const s={title:"Pruning",sidebar_position:6},o=void 0,a={id:"fundamentals/pruning",title:"Pruning",description:"Overview",source:"@site/versioned_docs/version-1.29.0/fundamentals/pruning.md",sourceDirName:"fundamentals",slug:"/fundamentals/pruning",permalink:"/fundamentals/pruning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/pruning.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:6,frontMatter:{title:"Pruning",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Database",permalink:"/fundamentals/database"},next:{title:"Performance tuning",permalink:"/fundamentals/performance-tuning"}},l={},d=[{value:"Overview",id:"overview",level:2},{value:"How it works",id:"how-it-works",level:2},{value:"Preparation for full pruning",id:"preparation-for-full-pruning",level:2},{value:"Configuring full pruning",id:"configuring-full-pruning",level:2},{value:"Manual",id:"manual",level:3},{value:"State database size threshold",id:"state-db-threshold",level:3},{value:"Remaining storage space threshold",id:"storage-left-threshold",level:3},{value:"Monitoring progress",id:"monitoring-progress",level:2},{value:"Additional settings",id:"additional-settings",level:2},{value:"Memory budget",id:"memory-budget",level:3},{value:"Pruning completion behavior",id:"pruning-completion-behavior",level:3},{value:"Number of pruning concurrent tasks",id:"number-of-pruning-concurrent-tasks",level:3},{value:"In-memory cache size",id:"in-memory-cache-size",level:3},{value:"Side notes",id:"side-notes",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsx)(n.p,{children:"Pruning pertains to eliminating or cleaning obsolete historical data to optimize disk space. Clients are responsible for maintaining the world state, which comprises a database that portrays the current Ethereum network status. The world state encompasses accounts, contracts, and other information."}),"\n",(0,r.jsxs)(n.p,{children:["Pruning aims to reduce disk requirements by storing only the current world state and removing historical data. This differs from archive nodes that retain complete transaction and state history. Pruning is helpful for users who don't require historical data and prefer to interact solely with the current state of the network. However, pruning may limit the client's ability to fulfill requests that depend on historical information. Nethermind provides two kinds of pruning \u2013 ",(0,r.jsx)(n.em,{children:"full pruning"})," and ",(0,r.jsx)(n.em,{children:"in-memory pruning"}),"; both are enabled by default, also called ",(0,r.jsx)(n.em,{children:"hybrid pruning"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,r.jsxs)(n.p,{children:["During synchronization using the snap sync method, Nethermind produces a local copy of the Ethereum network state. Although this size increases by around 30 GB each week, specific historical data is retained that is not necessary for node operation or to maintain the current Ethereum state. For a detailed description of the disk usage usage, check out the ",(0,r.jsx)(n.a,{href:"/fundamentals/database#database-size",children:"database size"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is activated and initiated, a thorough examination of the entire state tree is conducted to determine which data is no longer required and can be treated as historical. It then determines which information corresponds to the current state and duplicates it alongside the existing version. During verification of each node in the state, the new pruned state replaces the previous one. Once the verifier confirms everything is functioning correctly, the old state database is eliminated, resulting in significant savings in disk space. As a result, the size of the database will be close to its initial size again."}),"\n",(0,r.jsx)(n.p,{children:"In-memory pruning is a continuous process that occurs under regular operation. Instead of saving a new state on each block, Nethermind will keep it in memory until a certain threshold is reached. At that point, Nethermind will only store data required by the newer state and discard unnecessary ones. This significantly reduces the total amount of data written while improving block processing performance. In-memory pruning is independent of full pruning."}),"\n",(0,r.jsx)(n.h2,{id:"preparation-for-full-pruning",children:"Preparation for full pruning"}),"\n",(0,r.jsx)(n.p,{children:"Because full pruning is executed while the node is connected to the network, it can affect the node's performance.\nThe process can consume significant memory, CPU, and disk resources, impacting block processing time.\nThis, in turn, can lead to reduced rewards for validator setups, particularly for proof-of-stake chains."}),"\n",(0,r.jsx)(n.p,{children:"Currently, full pruning takes between 20 to 30 hours to complete, although the duration may vary based on the hardware configuration. At least 200 GB of storage is required to ensure pruning runs smoothly. Nevertheless, it's recommended to have 300 GB or more."}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["Do not turn on full pruning on an archive node, as these are two opposing features. Archive nodes are designed to store\ncomplete historical data, whereas full pruning eliminates it. Use the option ",(0,r.jsx)(n.code,{children:"--Pruning.Mode None"})," to ensure that pruning is turned off completely."]})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-full-pruning",children:"Configuring full pruning"}),"\n",(0,r.jsxs)(n.p,{children:["As a very first point, check out the ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#pruning",children:"pruning configuration options"}),".",(0,r.jsx)(n.br,{}),"\n","To activate full pruning, use either the ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," or ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Full"})," command line options."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Setting ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," enables both ",(0,r.jsx)(n.code,{children:"InMemory"})," and ",(0,r.jsx)(n.code,{children:"Full"})," modes. The ",(0,r.jsx)(n.code,{children:"InMemory"})," mode helps the node storage grow slower than the ",(0,r.jsx)(n.code,{children:"Full"})," mode. Because of this, full pruning is executed less frequently, promoting\nhealthier disk operation. Since full pruning is hardware-intensive, this configuration also benefits attestation results."]})}),"\n",(0,r.jsx)(n.p,{children:"The next step is to determine the trigger conditions for full pruning. Currently, there are 3 options available:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#manual",children:"Manual"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#state-db-threshold",children:"State database size threshold"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#storage-left-threshold",children:"Remaining storage space threshold"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"manual",children:"Manual"}),"\n",(0,r.jsxs)(n.p,{children:["Manual mode triggers full pruning only upon request, providing complete control. To configure this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger Manual"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Pruning can also be triggered using the ",(0,r.jsx)(n.a,{href:"/interacting/json-rpc-ns/admin#admin_prune",children:(0,r.jsx)(n.code,{children:"admin_prune"})})," JSON-RPC method. Here's how to configure it:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Add the ",(0,r.jsx)(n.code,{children:"admin"})," namespace to ",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"}),". For instance,",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules [eth,net,...,admin]"})]}),"\n",(0,r.jsxs)(n.li,{children:["Create a separate port for ",(0,r.jsx)(n.code,{children:"admin"})," namespace only:",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls http://localhost:8555|http|admin"})]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Restart the client, and if everything is configured correctly, you should be able to call the ",(0,r.jsx)(n.code,{children:"admin_prune"})," method, and full pruning should start."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"One potential disadvantage of the manual mode is that if full pruning is not triggered on time, it cannot be performed later because of insufficient disk space. In such cases, the only option to free up the disk space is to resync the node from scratch."})}),"\n",(0,r.jsx)(n.h3,{id:"state-db-threshold",children:"State database size threshold"}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning automatically when the state database reaches the specified size.\nTo enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger StateDbSize --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning automatically whenever the state database size exceeds 256,000\nMB (250 GB). Assuming the state database has initially around 160 GB, pruning will be triggered when the database size grows by more than 90 GB."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"To avoid unexpected behavior and ensure that full pruning can be completed in full, it's recommended to set the threshold value to trigger pruning before the free disk space drops below 250 GB as a minimum. This ensures that sufficient free disk space is available for the pruning process."})}),"\n",(0,r.jsx)(n.h3,{id:"storage-left-threshold",children:"Remaining storage space threshold"}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsx)(n.p,{children:"This is the recommended approach as it ensures that pruning is executed on time."})}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning when the storage space reaches the specified minimum. To enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger VolumeFreeSpace --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements. However, it should not be set below the default value of ",(0,r.jsx)(n.code,{children:"256000"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning whenever free disk space drops to 256,000 MB (250 GB) or below. This ensures that pruning is invoked as infrequently as possible while also ensuring that sufficient free storage is always available to trigger it."}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsx)(n.p,{children:"It's recommended not to set the value below 250 GB for stability reasons. In reality, full pruning should require approximately the same amount of storage as a fresh state database (around 160 GB). Still, it also needs a threshold for processing and other operations since it creates a copy of the existing state database. Therefore, it's essential to maintain a minimum amount of storage to ensure a robust pruning performance."})}),"\n",(0,r.jsx)(n.h2,{id:"monitoring-progress",children:"Monitoring progress"}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is triggered correctly, the corresponding messages appear in the Nethermind logs."}),"\n",(0,r.jsx)(n.p,{children:"The very first ones should be:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Ready to start: pruning garbage before state with root .\nWARN: Full Pruning Started on root hash : do not close the node until finished or progress will be lost.\n"})}),"\n",(0,r.jsx)(n.p,{children:"From that moment, ensure that no restarts will be performed on Nethermind to ensure that full pruning runs correctly.\nAfter a few minutes first logs with progress would start to appear. For instance:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning In Progress: 00:00:57.0603307 1.00 mln nodes mirrored.\nFull Pruning In Progress: 00:01:40.3677103 2.00 mln nodes mirrored.\nFull Pruning In Progress: 00:02:25.6437030 3.00 mln nodes mirrored.\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Pruning may take even ",(0,r.jsx)(n.em,{children:"more than 30 hours"}),", depending on hardware configuration."]}),"\n",(0,r.jsx)(n.p,{children:"When pruning is completed, there is a log message similar the following:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Finished: 15:25:59.1620756 1,560.29 mln nodes mirrored.\n"})}),"\n",(0,r.jsx)(n.p,{children:"As you may notice, it took around 15 hours in this example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Since the amount of mirrored nodes is not a static value, providing a simple progress indicator in percentage is impossible. Therefore, the approximate value given should be used to determine when full pruning is expected to be completed."})}),"\n",(0,r.jsx)(n.h2,{id:"additional-settings",children:"Additional settings"}),"\n",(0,r.jsx)(n.h3,{id:"memory-budget",children:"Memory budget"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," configuration option controls the memory budget allocated for the trie visit during\nthe full pruning process. During pruning, pending nodes are queued to a pool of nodes whose size is determined by this value. This allows multiple nodes to share a single I/O. By increasing this value, the required read IOP per second can be significantly reduced, resulting in a faster full pruning operation. However, this improvement comes at the expense of increased memory usage."]}),"\n",(0,r.jsxs)(n.p,{children:["Assuming your system has 64GB of RAM, with Nethermind, the consensus client, and system expenses consuming 20GB,\nyou need to determine the maximum value for ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," while ensuring the system remains stable and respects the given limit. In this case, you have 44 GB (64 GB - 20 GB) of available memory for increasing the ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," value. To calculate the maximum value in MB, multiply the available memory by 1024: ",(0,r.jsx)(n.code,{children:"44 GB * 1024 = 45,056 MB"})]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Because of the workload on Ethereum Mainnet, setting the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," higher than 16 GB may not provide any additional performance benefits."]})}),"\n",(0,r.jsx)(n.p,{children:"Please note that this example assumes the remaining 44 GB of memory is sufficient for the full pruning memory budget.\nDepending on the specific use case and system requirements, it may be necessary to adjust the value further to optimize performance and resource usage."}),"\n",(0,r.jsx)(n.h3,{id:"pruning-completion-behavior",children:"Pruning completion behavior"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})," configuration option determines Nethermind's behavior after full pruning is completed. By default, Nethermind will continue to progress as usual. However, if a user wishes to shut down the node after pruning, there are three options available:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"None"}),": No action taken"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Nethermind shuts down if pruning succeeds"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"AlwaysShutdown"}),": Nethermind shuts down once pruning completes, regardless of whether it succeeds or fails"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"number-of-pruning-concurrent-tasks",children:"Number of pruning concurrent tasks"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})," configuration option determines the number of parallel tasks/threads that can be used by pruning:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"-1"}),": uses the number of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"0"}),": uses 25% of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"1"}),": runs on a single thread"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The recommended value depends on the type of node being used. If the node needs to be responsive (e.g., RPC or validator), using a value below the number of logical processors is recommended. The default value is recommended if the node doesn't have many other responsibilities but needs to follow the chain without delays and produce live logs reliably. If the node doesn't need to be responsive, has very fast I/O (such as NVMe), and the shortest pruning time\nis desired, this can be set to 2\u20133 times the number of logical processors."}),"\n",(0,r.jsx)(n.h3,{id:"in-memory-cache-size",children:"In-memory cache size"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.CacheMb"})," configuration option determines the size, in MB, of the memory pool of nodes used for in-memory pruning. The default value is 1024. Increasing this value can help reduce the rate at which the state database grows."]}),"\n",(0,r.jsx)(n.h2,{id:"side-notes",children:"Side notes"}),"\n",(0,r.jsx)(n.p,{children:"For pruning, keep in mind the following:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Full pruning is a cumbersome task, but it's performed in the background, so the node continues progressing and following the chain."}),"\n",(0,r.jsx)(n.li,{children:"The process' heaviness may affect the effectiveness of the validator rewards. Still, since it's executed only once every few months, it shouldn't have a significant impact on overall results (we've xperienced approximately 5\u201310% loss of rewards during full pruning)."}),"\n",(0,r.jsx)(n.li,{children:"Ensure that your storage has at least 250 GB of free space after syncing the node. Otherwise, full pruning will never complete successfully."}),"\n",(0,r.jsxs)(n.li,{children:["Several things can be done to reduce the size of the database after syncing: setting ",(0,r.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})," and ",(0,r.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})," to a proper value higher than 0, using a consensus client that requires less storage, and setting logs to the lowest level to avoid log spamming."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>a});var r=i(6540);const t={},s=r.createContext(t);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3753],{5247:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const s={title:"Pruning",sidebar_position:6},o=void 0,a={id:"fundamentals/pruning",title:"Pruning",description:"Overview",source:"@site/versioned_docs/version-1.29.0/fundamentals/pruning.md",sourceDirName:"fundamentals",slug:"/fundamentals/pruning",permalink:"/fundamentals/pruning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/pruning.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:6,frontMatter:{title:"Pruning",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Database",permalink:"/fundamentals/database"},next:{title:"Performance tuning",permalink:"/fundamentals/performance-tuning"}},l={},d=[{value:"Overview",id:"overview",level:2},{value:"How it works",id:"how-it-works",level:2},{value:"Preparation for full pruning",id:"preparation-for-full-pruning",level:2},{value:"Configuring full pruning",id:"configuring-full-pruning",level:2},{value:"Manual",id:"manual",level:3},{value:"State database size threshold",id:"state-db-threshold",level:3},{value:"Remaining storage space threshold",id:"storage-left-threshold",level:3},{value:"Monitoring progress",id:"monitoring-progress",level:2},{value:"Additional settings",id:"additional-settings",level:2},{value:"Memory budget",id:"memory-budget",level:3},{value:"Pruning completion behavior",id:"pruning-completion-behavior",level:3},{value:"Number of pruning concurrent tasks",id:"number-of-pruning-concurrent-tasks",level:3},{value:"In-memory cache size",id:"in-memory-cache-size",level:3},{value:"Side notes",id:"side-notes",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsx)(n.p,{children:"Pruning pertains to eliminating or cleaning obsolete historical data to optimize disk space. Clients are responsible for maintaining the world state, which comprises a database that portrays the current Ethereum network status. The world state encompasses accounts, contracts, and other information."}),"\n",(0,r.jsxs)(n.p,{children:["Pruning aims to reduce disk requirements by storing only the current world state and removing historical data. This differs from archive nodes that retain complete transaction and state history. Pruning is helpful for users who don't require historical data and prefer to interact solely with the current state of the network. However, pruning may limit the client's ability to fulfill requests that depend on historical information. Nethermind provides two kinds of pruning \u2013 ",(0,r.jsx)(n.em,{children:"full pruning"})," and ",(0,r.jsx)(n.em,{children:"in-memory pruning"}),"; both are enabled by default, also called ",(0,r.jsx)(n.em,{children:"hybrid pruning"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,r.jsxs)(n.p,{children:["During synchronization using the snap sync method, Nethermind produces a local copy of the Ethereum network state. Although this size increases by around 30 GB each week, specific historical data is retained that is not necessary for node operation or to maintain the current Ethereum state. For a detailed description of the disk usage usage, check out the ",(0,r.jsx)(n.a,{href:"/fundamentals/database#database-size",children:"database size"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is activated and initiated, a thorough examination of the entire state tree is conducted to determine which data is no longer required and can be treated as historical. It then determines which information corresponds to the current state and duplicates it alongside the existing version. During verification of each node in the state, the new pruned state replaces the previous one. Once the verifier confirms everything is functioning correctly, the old state database is eliminated, resulting in significant savings in disk space. As a result, the size of the database will be close to its initial size again."}),"\n",(0,r.jsx)(n.p,{children:"In-memory pruning is a continuous process that occurs under regular operation. Instead of saving a new state on each block, Nethermind will keep it in memory until a certain threshold is reached. At that point, Nethermind will only store data required by the newer state and discard unnecessary ones. This significantly reduces the total amount of data written while improving block processing performance. In-memory pruning is independent of full pruning."}),"\n",(0,r.jsx)(n.h2,{id:"preparation-for-full-pruning",children:"Preparation for full pruning"}),"\n",(0,r.jsx)(n.p,{children:"Because full pruning is executed while the node is connected to the network, it can affect the node's performance.\nThe process can consume significant memory, CPU, and disk resources, impacting block processing time.\nThis, in turn, can lead to reduced rewards for validator setups, particularly for proof-of-stake chains."}),"\n",(0,r.jsx)(n.p,{children:"Currently, full pruning takes between 20 to 30 hours to complete, although the duration may vary based on the hardware configuration. At least 200 GB of storage is required to ensure pruning runs smoothly. Nevertheless, it's recommended to have 300 GB or more."}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["Do not turn on full pruning on an archive node, as these are two opposing features. Archive nodes are designed to store\ncomplete historical data, whereas full pruning eliminates it. Use the option ",(0,r.jsx)(n.code,{children:"--Pruning.Mode None"})," to ensure that pruning is turned off completely."]})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-full-pruning",children:"Configuring full pruning"}),"\n",(0,r.jsxs)(n.p,{children:["As a very first point, check out the ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#pruning",children:"pruning configuration options"}),".",(0,r.jsx)(n.br,{}),"\n","To activate full pruning, use either the ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," or ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Full"})," command line options."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Setting ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," enables both ",(0,r.jsx)(n.code,{children:"InMemory"})," and ",(0,r.jsx)(n.code,{children:"Full"})," modes. The ",(0,r.jsx)(n.code,{children:"InMemory"})," mode helps the node storage grow slower than the ",(0,r.jsx)(n.code,{children:"Full"})," mode. Because of this, full pruning is executed less frequently, promoting\nhealthier disk operation. Since full pruning is hardware-intensive, this configuration also benefits attestation results."]})}),"\n",(0,r.jsx)(n.p,{children:"The next step is to determine the trigger conditions for full pruning. Currently, there are 3 options available:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#manual",children:"Manual"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#state-db-threshold",children:"State database size threshold"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#storage-left-threshold",children:"Remaining storage space threshold"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"manual",children:"Manual"}),"\n",(0,r.jsxs)(n.p,{children:["Manual mode triggers full pruning only upon request, providing complete control. To configure this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger Manual"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Pruning can also be triggered using the ",(0,r.jsx)(n.a,{href:"/interacting/json-rpc-ns/admin#admin_prune",children:(0,r.jsx)(n.code,{children:"admin_prune"})})," JSON-RPC method. Here's how to configure it:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Add the ",(0,r.jsx)(n.code,{children:"admin"})," namespace to ",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"}),". For instance,",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules [eth,net,...,admin]"})]}),"\n",(0,r.jsxs)(n.li,{children:["Create a separate port for ",(0,r.jsx)(n.code,{children:"admin"})," namespace only:",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls http://localhost:8555|http|admin"})]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Restart the client, and if everything is configured correctly, you should be able to call the ",(0,r.jsx)(n.code,{children:"admin_prune"})," method, and full pruning should start."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"One potential disadvantage of the manual mode is that if full pruning is not triggered on time, it cannot be performed later because of insufficient disk space. In such cases, the only option to free up the disk space is to resync the node from scratch."})}),"\n",(0,r.jsx)(n.h3,{id:"state-db-threshold",children:"State database size threshold"}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning automatically when the state database reaches the specified size.\nTo enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger StateDbSize --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning automatically whenever the state database size exceeds 256,000\nMB (250 GB). Assuming the state database has initially around 160 GB, pruning will be triggered when the database size grows by more than 90 GB."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"To avoid unexpected behavior and ensure that full pruning can be completed in full, it's recommended to set the threshold value to trigger pruning before the free disk space drops below 250 GB as a minimum. This ensures that sufficient free disk space is available for the pruning process."})}),"\n",(0,r.jsx)(n.h3,{id:"storage-left-threshold",children:"Remaining storage space threshold"}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsx)(n.p,{children:"This is the recommended approach as it ensures that pruning is executed on time."})}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning when the storage space reaches the specified minimum. To enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger VolumeFreeSpace --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements. However, it should not be set below the default value of ",(0,r.jsx)(n.code,{children:"256000"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning whenever free disk space drops to 256,000 MB (250 GB) or below. This ensures that pruning is invoked as infrequently as possible while also ensuring that sufficient free storage is always available to trigger it."}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsx)(n.p,{children:"It's recommended not to set the value below 250 GB for stability reasons. In reality, full pruning should require approximately the same amount of storage as a fresh state database (around 160 GB). Still, it also needs a threshold for processing and other operations since it creates a copy of the existing state database. Therefore, it's essential to maintain a minimum amount of storage to ensure a robust pruning performance."})}),"\n",(0,r.jsx)(n.h2,{id:"monitoring-progress",children:"Monitoring progress"}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is triggered correctly, the corresponding messages appear in the Nethermind logs."}),"\n",(0,r.jsx)(n.p,{children:"The very first ones should be:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Ready to start: pruning garbage before state with root .\nWARN: Full Pruning Started on root hash : do not close the node until finished or progress will be lost.\n"})}),"\n",(0,r.jsx)(n.p,{children:"From that moment, ensure that no restarts will be performed on Nethermind to ensure that full pruning runs correctly.\nAfter a few minutes first logs with progress would start to appear. For instance:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning In Progress: 00:00:57.0603307 1.00 mln nodes mirrored.\nFull Pruning In Progress: 00:01:40.3677103 2.00 mln nodes mirrored.\nFull Pruning In Progress: 00:02:25.6437030 3.00 mln nodes mirrored.\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Pruning may take even ",(0,r.jsx)(n.em,{children:"more than 30 hours"}),", depending on hardware configuration."]}),"\n",(0,r.jsx)(n.p,{children:"When pruning is completed, there is a log message similar the following:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Finished: 15:25:59.1620756 1,560.29 mln nodes mirrored.\n"})}),"\n",(0,r.jsx)(n.p,{children:"As you may notice, it took around 15 hours in this example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Since the amount of mirrored nodes is not a static value, providing a simple progress indicator in percentage is impossible. Therefore, the approximate value given should be used to determine when full pruning is expected to be completed."})}),"\n",(0,r.jsx)(n.h2,{id:"additional-settings",children:"Additional settings"}),"\n",(0,r.jsx)(n.h3,{id:"memory-budget",children:"Memory budget"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," configuration option controls the memory budget allocated for the trie visit during\nthe full pruning process. During pruning, pending nodes are queued to a pool of nodes whose size is determined by this value. This allows multiple nodes to share a single I/O. By increasing this value, the required read IOP per second can be significantly reduced, resulting in a faster full pruning operation. However, this improvement comes at the expense of increased memory usage."]}),"\n",(0,r.jsxs)(n.p,{children:["Assuming your system has 64GB of RAM, with Nethermind, the consensus client, and system expenses consuming 20GB,\nyou need to determine the maximum value for ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," while ensuring the system remains stable and respects the given limit. In this case, you have 44 GB (64 GB - 20 GB) of available memory for increasing the ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," value. To calculate the maximum value in MB, multiply the available memory by 1024: ",(0,r.jsx)(n.code,{children:"44 GB * 1024 = 45,056 MB"})]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Because of the workload on Ethereum Mainnet, setting the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," higher than 16 GB may not provide any additional performance benefits."]})}),"\n",(0,r.jsx)(n.p,{children:"Please note that this example assumes the remaining 44 GB of memory is sufficient for the full pruning memory budget.\nDepending on the specific use case and system requirements, it may be necessary to adjust the value further to optimize performance and resource usage."}),"\n",(0,r.jsx)(n.h3,{id:"pruning-completion-behavior",children:"Pruning completion behavior"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})," configuration option determines Nethermind's behavior after full pruning is completed. By default, Nethermind will continue to progress as usual. However, if a user wishes to shut down the node after pruning, there are three options available:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"None"}),": No action taken"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Nethermind shuts down if pruning succeeds"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"AlwaysShutdown"}),": Nethermind shuts down once pruning completes, regardless of whether it succeeds or fails"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"number-of-pruning-concurrent-tasks",children:"Number of pruning concurrent tasks"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})," configuration option determines the number of parallel tasks/threads that can be used by pruning:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"-1"}),": uses the number of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"0"}),": uses 25% of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"1"}),": runs on a single thread"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The recommended value depends on the type of node being used. If the node needs to be responsive (e.g., RPC or validator), using a value below the number of logical processors is recommended. The default value is recommended if the node doesn't have many other responsibilities but needs to follow the chain without delays and produce live logs reliably. If the node doesn't need to be responsive, has very fast I/O (such as NVMe), and the shortest pruning time\nis desired, this can be set to 2\u20133 times the number of logical processors."}),"\n",(0,r.jsx)(n.h3,{id:"in-memory-cache-size",children:"In-memory cache size"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.CacheMb"})," configuration option determines the size, in MB, of the memory pool of nodes used for in-memory pruning. The default value is 1024. Increasing this value can help reduce the rate at which the state database grows."]}),"\n",(0,r.jsx)(n.h2,{id:"side-notes",children:"Side notes"}),"\n",(0,r.jsx)(n.p,{children:"For pruning, keep in mind the following:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Full pruning is a cumbersome task, but it's performed in the background, so the node continues progressing and following the chain."}),"\n",(0,r.jsx)(n.li,{children:"The process' heaviness may affect the effectiveness of the validator rewards. Still, since it's executed only once every few months, it shouldn't have a significant impact on overall results (we've xperienced approximately 5\u201310% loss of rewards during full pruning)."}),"\n",(0,r.jsx)(n.li,{children:"Ensure that your storage has at least 250 GB of free space after syncing the node. Otherwise, full pruning will never complete successfully."}),"\n",(0,r.jsxs)(n.li,{children:["Several things can be done to reduce the size of the database after syncing: setting ",(0,r.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})," and ",(0,r.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})," to a proper value higher than 0, using a consensus client that requires less storage, and setting logs to the lowest level to avoid log spamming."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>a});var r=i(6540);const t={},s=r.createContext(t);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1d144641.8adc4840.js b/assets/js/1d144641.711002af.js similarity index 99% rename from assets/js/1d144641.8adc4840.js rename to assets/js/1d144641.711002af.js index 210ed0c97..2113e0967 100644 --- a/assets/js/1d144641.8adc4840.js +++ b/assets/js/1d144641.711002af.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2344],{6714:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const t={title:"parity namespace",sidebar_label:"parity",sidebar_position:5},d=void 0,a={id:"interacting/json-rpc-ns/parity",title:"parity namespace",description:"parity_clearEngineSigner",source:"@site/docs/interacting/json-rpc-ns/parity.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/parity",permalink:"/next/interacting/json-rpc-ns/parity",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/parity.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:5,frontMatter:{title:"parity namespace",sidebar_label:"parity",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"net",permalink:"/next/interacting/json-rpc-ns/net"},next:{title:"personal",permalink:"/next/interacting/json-rpc-ns/personal"}},o={},h=[{value:"parity_clearEngineSigner",id:"parity_clearenginesigner",level:3},{value:"parity_enode",id:"parity_enode",level:3},{value:"parity_getBlockReceipts",id:"parity_getblockreceipts",level:3},{value:"parity_netPeers",id:"parity_netpeers",level:3},{value:"parity_pendingTransactions",id:"parity_pendingtransactions",level:3},{value:"parity_setEngineSigner",id:"parity_setenginesigner",level:3},{value:"parity_setEngineSignerSecret",id:"parity_setenginesignersecret",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"parity_clearenginesigner",children:"parity_clearEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_clearEngineSigner",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_enode",children:"parity_enode"}),"\n",(0,r.jsx)(n.p,{children:"Returns the node enode URI."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_enode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_getblockreceipts",children:"parity_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_netpeers",children:"parity_netPeers"}),"\n",(0,r.jsx)(n.p,{children:"Returns connected peers. Peers with non-empty protocols have completed handshake."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_netPeers",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"active"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"connected"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"max"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"peers"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"caps"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"network"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"localAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"remoteAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"version"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_pendingtransactions",children:"parity_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given sender address."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_pendingTransactions",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"condition"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creates"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"publicKey"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prefixedBytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"raw"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"standardV"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesigner",children:"parity_setEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"password"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSigner",\n "params": [address, password]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesignersecret",children:"parity_setEngineSignerSecret"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"privateKey"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSignerSecret",\n "params": [privateKey]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),t=s(205),d=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function p(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[c,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:s,groupId:i}),[p,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),m=(()=>{const e=a??p;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{m&&d(m)}),[m]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,l]),tabValues:l}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),i=t[s].value;i!==r&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",m.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=p(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",m.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function _(e){const n=(0,g.A)();return(0,b.jsx)(v,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>t});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2344],{6714:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const t={title:"parity namespace",sidebar_label:"parity",sidebar_position:5},d=void 0,a={id:"interacting/json-rpc-ns/parity",title:"parity namespace",description:"parity_clearEngineSigner",source:"@site/docs/interacting/json-rpc-ns/parity.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/parity",permalink:"/next/interacting/json-rpc-ns/parity",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/parity.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:5,frontMatter:{title:"parity namespace",sidebar_label:"parity",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"net",permalink:"/next/interacting/json-rpc-ns/net"},next:{title:"personal",permalink:"/next/interacting/json-rpc-ns/personal"}},o={},h=[{value:"parity_clearEngineSigner",id:"parity_clearenginesigner",level:3},{value:"parity_enode",id:"parity_enode",level:3},{value:"parity_getBlockReceipts",id:"parity_getblockreceipts",level:3},{value:"parity_netPeers",id:"parity_netpeers",level:3},{value:"parity_pendingTransactions",id:"parity_pendingtransactions",level:3},{value:"parity_setEngineSigner",id:"parity_setenginesigner",level:3},{value:"parity_setEngineSignerSecret",id:"parity_setenginesignersecret",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"parity_clearenginesigner",children:"parity_clearEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_clearEngineSigner",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_enode",children:"parity_enode"}),"\n",(0,r.jsx)(n.p,{children:"Returns the node enode URI."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_enode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_getblockreceipts",children:"parity_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_netpeers",children:"parity_netPeers"}),"\n",(0,r.jsx)(n.p,{children:"Returns connected peers. Peers with non-empty protocols have completed handshake."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_netPeers",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"active"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"connected"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"max"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"peers"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"caps"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"network"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"localAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"remoteAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"version"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_pendingtransactions",children:"parity_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given sender address."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_pendingTransactions",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"condition"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creates"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"publicKey"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prefixedBytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"raw"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"standardV"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesigner",children:"parity_setEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"password"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSigner",\n "params": [address, password]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesignersecret",children:"parity_setEngineSignerSecret"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"privateKey"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSignerSecret",\n "params": [privateKey]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),t=s(205),d=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function p(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[c,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:s,groupId:i}),[p,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),m=(()=>{const e=a??p;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{m&&d(m)}),[m]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,l]),tabValues:l}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),i=t[s].value;i!==r&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",m.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=p(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",m.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function _(e){const n=(0,g.A)();return(0,b.jsx)(v,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>t});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1db1931a.1533a9c8.js b/assets/js/1db1931a.d2f4c55e.js similarity index 99% rename from assets/js/1db1931a.1533a9c8.js rename to assets/js/1db1931a.d2f4c55e.js index 5a3188b70..596858dab 100644 --- a/assets/js/1db1931a.1533a9c8.js +++ b/assets/js/1db1931a.d2f4c55e.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5373],{6327:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var a=t(4848),s=t(8453),r=t(1470),l=t(9365);const i={title:"Health check",sidebar_position:1},o=void 0,c={id:"monitoring/health-check",title:"Health check",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.25.4/monitoring/health-check.md",sourceDirName:"monitoring",slug:"/monitoring/health-check",permalink:"/1.25.4/monitoring/health-check",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/monitoring/health-check.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Health check",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"dotnet-counters",permalink:"/1.25.4/monitoring/metrics/dotnet-counters"},next:{title:"Validators",permalink:"/1.25.4/validators/"}},h={},d=[{value:"Enabling and configuring Health Checks",id:"enabling-and-configuring-health-checks",level:2},{value:"Enabling Health Checks without UI ",id:"enabling-health-checks-without-ui-",level:4},{value:"Enabling Health Checks UI",id:"enabling-health-checks-ui",level:4},{value:"Enabling Slack reports",id:"enabling-slack-reports",level:4},{value:"Consensus Client health",id:"consensus-client-health",level:4},{value:"health_nodeStatus",id:"health_nodestatus",level:4},{value:"Monitoring available storage space",id:"monitoring-available-storage-space",level:4},{value:"HealthChecks for producing and processing blocks",id:"healthchecks-for-producing-and-processing-blocks",level:4}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h4:"h4",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n","\n",(0,a.jsxs)(n.p,{children:["Nethermind has a pre-packed ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"})," plugin that allows you to monitor your Nethermind node better.\nIt leverages the power\nof ",(0,a.jsx)(n.a,{href:"https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks",children:"AspNetCore.Diagnostics.HealthChecks"}),". It simply adds\nan",(0,a.jsx)(n.code,{children:"/health"}),"endpoint to the JSON RPC service which can be used to check the Nethermind's ",(0,a.jsxs)(n.em,{children:[(0,a.jsx)(n.strong,{children:"liveness"})," -"]})," verify if the\nnode is ",(0,a.jsx)(n.strong,{children:"synced"})," and has ",(0,a.jsx)(n.strong,{children:"at least one peer."})," Useful when you don't want to query the node before it's able to\nprovide you data available only for fully synced nodes like ",(0,a.jsx)(n.code,{children:"eth_getBalance"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"}),"plugin will be automatically loaded on Nethermind start."]}),"\n",(0,a.jsx)(n.h2,{id:"enabling-and-configuring-health-checks",children:"Enabling and configuring Health Checks"}),"\n",(0,a.jsxs)(n.p,{children:["The health checks need to be additionally enabled which can be done either through ",(0,a.jsx)(n.code,{children:"--HealthChecks.*"})," flags or by adding\na ",(0,a.jsx)(n.code,{children:'"HealthChecks"'})," section to the config file. "]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:' "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "WebhooksUri": "https://slack.webhook",\n "UIEnabled": true,\n "PollingInterval": 10,\n "Slug": "/api/health"\n }\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"danger",children:(0,a.jsxs)(n.p,{children:["JSON RPC Service needs to be enabled in order for health checks to work ",(0,a.jsx)(n.code,{children:"--JsonRpc.Enabled true"})]})}),"\n",(0,a.jsxs)(n.p,{children:["Each configuration option is described ",(0,a.jsx)(n.a,{href:"../fundamentals/configuration#healthchecks",children:"here"}),"."]}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-without-ui-",children:"Enabling Health Checks without UI "}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"health"})," endpoint is now available at ",(0,a.jsx)(n.code,{children:"localhost:8545/health"})," by default (if your ",(0,a.jsx)(n.code,{children:"--JsonRpc.Port"})," is ",(0,a.jsx)(n.code,{children:"8545"}),").\nThe ",(0,a.jsx)(n.code,{children:"health"})," endpoint can be configured via ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug"})," parameter e.g. ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug /api/health"}),". We\ncan if it is working with ",(0,a.jsx)(n.code,{children:"curl"}),":"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'// Request\ncurl localhost:8545/health\n\n// Example of response for Unhealthy node\n{"status":"Unhealthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node has 0 peers connected","duration":"00:00:00.0003881","status":"Unhealthy","tags":[]}}}\n\n// Example of response for Healthy node\n{"status":"Healthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node is now fully synced with a network, number of peers: 99","duration":"00:00:00.0003881","status":"Healthy","tags":[]}}}\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Unhealthy"})," returns ",(0,a.jsx)(n.strong,{children:"503"})," (Service Unavailable) status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Healthy"})," returns ",(0,a.jsx)(n.strong,{children:"200"})," status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-ui",children:"Enabling Health Checks UI"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true --HealthChecks.UIEnabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Enabling UI will expose an additional endpoint ",(0,a.jsx)(n.code,{children:"/healthchecks-ui"}),"and will allow seeing node's health on a nice UI. To\nview the UI simply go to ",(0,a.jsx)(n.code,{children:"http://localhost:8545/healthchecks-ui"}),"."]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy status reported on UI page",src:t(5218).A+"",width:"1187",height:"418"})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-slack-reports",children:"Enabling Slack reports"}),"\n",(0,a.jsxs)(n.p,{children:["We may also add Slack Webhook endpoint to which our node's health will be reported. We need to pass\nthe ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled true"})," and add the ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksUri"})," which can be found in your Slack app\nconfiguration."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.Enabled true --HealthChecks.UIEnabled true --HealthChecks.WebhooksEnabled true --HealthChecks.WebhooksUri https://hooks.slack.com/\n"})}),"\n",(0,a.jsxs)(n.p,{children:["If your node will be ",(0,a.jsx)(n.strong,{children:"Unhealthy"})," you should receive a message similar to this:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy",src:t(9953).A+"",width:"690",height:"240"})}),"\n",(0,a.jsxs)(n.p,{children:["with description of why the node is unhealthy, node's name and information about the machine on which the node is\nrunning.",(0,a.jsx)(n.br,{}),"\n","When it becomes ",(0,a.jsx)(n.strong,{children:"Healthy"})," (",(0,a.jsx)(n.strong,{children:"synced"})," and with ",(0,a.jsx)(n.strong,{children:"peers"}),") you should receive:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Healthy",src:t(5725).A+"",width:"492",height:"118"})}),"\n",(0,a.jsx)(n.h4,{id:"consensus-client-health",children:"Consensus Client health"}),"\n",(0,a.jsxs)(n.p,{children:["This check verifies if the client receives messages from the CL. If you see this warning in your logs, it means that\nthere is something wrong with CL/Nethermind communication. Check more about setting up Nethermind and\nCL ",(0,a.jsx)(n.a,{href:"/1.25.4/get-started/consensus-clients",children:"here"}),"."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"No incoming messages from Consensus Client. Consensus Client is required to sync the node. Please make sure that it's working properly.\n"})}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"Note that Consensus Client is required for normal node operations."})}),"\n",(0,a.jsx)(n.h4,{id:"health_nodestatus",children:"health_nodeStatus"}),"\n",(0,a.jsxs)(n.p,{children:["Health checks via JSON RPC requests were introduced in version v.1.10.18. For that, ",(0,a.jsx)(n.code,{children:"HealthChecks.Enabled"})," should be\nset to true."]}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsx)(l.A,{value:"request",label:"Request",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{ "jsonrpc":"2.0","method":"health_nodeStatus","params":[],"id":67 }\n'})})}),(0,a.jsx)(l.A,{label:"Response",value:"response",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{\n "jsonrpc": "2.0",\n "result": {\n "healthy": false,\n "messages": [\n "Sync degraded",\n "No messages from CL"\n ],\n "errors": [\n "SyncDegraded",\n "ClUnavailable"\n ],\n "isSyncing": true\n },\n "id": 67\n}\n'})})})]}),"\n",(0,a.jsx)(n.h4,{id:"monitoring-available-storage-space",children:"Monitoring available storage space"}),"\n",(0,a.jsx)(n.p,{children:"Feature which is helping to track free disk space is enabled by default and monitors a drive which has been used to\nconfigure database location. There are two new configuration options available:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold"})," - Percentage of free disk space below which a warning will be\ndisplayed. If Health Checks UI is enabled, it will also be reported under node's health. Default value is 5 - meaning\n5% of free disk space."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold"})," - Percentage of available disk space below which node will shutdown\nto avoid database corruption. Default value is 1 - meaning 1% of free disk space."]}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.LowStorageSpaceWarningThreshold 5 --HealthChecks.LowStorageSpaceShutdownThreshold 1\n"})}),"\n",(0,a.jsx)(n.h4,{id:"healthchecks-for-producing-and-processing-blocks",children:"HealthChecks for producing and processing blocks"}),"\n",(0,a.jsx)(n.p,{children:"There are two fields for HealthChecks config: MaxIntervalWithoutProcessedBlock and MaxIntervalWithoutProducedBlock. The\nnode will return unhealthy status if the interval elapsed without processing or producing a block. Let's use the below\nconfig as an example. If the node doesn't process a block for 15 seconds, we will return unhealthy status. Analogically,\nwe will be waiting 45 seconds for a newly produced block."}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:'\n "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "UIEnabled": true,\n "Slug": "/api/health",\n "MaxIntervalWithoutProcessedBlock ": 15,\n "MaxIntervalWithoutProducedBlock": 45\n }\n'})}),"\n",(0,a.jsx)(n.p,{children:"If those fields are not set in a config, application will try to use them based on seal engine specification. If there\nis infinite time, unhealthy status can still be reported if processing or producing threads stopped."})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var a=t(4164);const s={tabItem:"tabItem_Ymn6"};var r=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var a=t(6540),s=t(4164),r=t(3104),l=t(6347),i=t(205),o=t(7485),c=t(1682),h=t(679);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:s}}=e;return{value:n,label:t,attributes:a,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,o.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(s.location.search);n.set(r,e),s.replace({...s.location,search:n.toString()})}),[r,s])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=u(e),[l,o]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,d]=g({queryString:t,groupId:s}),[b,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,r]=(0,h.Dv)(t);return[s,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:s}),f=(()=>{const e=c??b;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&o(f)}),[f]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),d(e),m(e)}),[d,m,r]),tabValues:r}}var m=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(4848);function j(e){let{className:n,block:t,selectedValue:a,selectValue:l,tabValues:i}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),h=e=>{const n=e.currentTarget,t=o.indexOf(n),s=i[t].value;s!==a&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>o.push(e),onKeyDown:d,onClick:h,...r,className:(0,s.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function k(e){let{lazy:n,children:t,selectedValue:r}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=b(e);return(0,x.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,x.jsx)(j,{...n,...e}),(0,x.jsx)(k,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,x.jsx)(v,{...e,children:d(e.children)},String(n))}},5725:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(46)-5eaf72852b3e686e71865323e9801102.png"},5218:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(76)-09c7ba2b07d07480a303268d261ffd16.png"},9953:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/unhealthy-98cb6ab004e2ecb6edcbec2e6d03edea.png"},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>i});var a=t(6540);const s={},r=a.createContext(s);function l(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5373],{6327:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var a=t(4848),s=t(8453),r=t(1470),l=t(9365);const i={title:"Health check",sidebar_position:1},o=void 0,c={id:"monitoring/health-check",title:"Health check",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.25.4/monitoring/health-check.md",sourceDirName:"monitoring",slug:"/monitoring/health-check",permalink:"/1.25.4/monitoring/health-check",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/monitoring/health-check.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Health check",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"dotnet-counters",permalink:"/1.25.4/monitoring/metrics/dotnet-counters"},next:{title:"Validators",permalink:"/1.25.4/validators/"}},h={},d=[{value:"Enabling and configuring Health Checks",id:"enabling-and-configuring-health-checks",level:2},{value:"Enabling Health Checks without UI ",id:"enabling-health-checks-without-ui-",level:4},{value:"Enabling Health Checks UI",id:"enabling-health-checks-ui",level:4},{value:"Enabling Slack reports",id:"enabling-slack-reports",level:4},{value:"Consensus Client health",id:"consensus-client-health",level:4},{value:"health_nodeStatus",id:"health_nodestatus",level:4},{value:"Monitoring available storage space",id:"monitoring-available-storage-space",level:4},{value:"HealthChecks for producing and processing blocks",id:"healthchecks-for-producing-and-processing-blocks",level:4}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h4:"h4",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n","\n",(0,a.jsxs)(n.p,{children:["Nethermind has a pre-packed ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"})," plugin that allows you to monitor your Nethermind node better.\nIt leverages the power\nof ",(0,a.jsx)(n.a,{href:"https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks",children:"AspNetCore.Diagnostics.HealthChecks"}),". It simply adds\nan",(0,a.jsx)(n.code,{children:"/health"}),"endpoint to the JSON RPC service which can be used to check the Nethermind's ",(0,a.jsxs)(n.em,{children:[(0,a.jsx)(n.strong,{children:"liveness"})," -"]})," verify if the\nnode is ",(0,a.jsx)(n.strong,{children:"synced"})," and has ",(0,a.jsx)(n.strong,{children:"at least one peer."})," Useful when you don't want to query the node before it's able to\nprovide you data available only for fully synced nodes like ",(0,a.jsx)(n.code,{children:"eth_getBalance"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"}),"plugin will be automatically loaded on Nethermind start."]}),"\n",(0,a.jsx)(n.h2,{id:"enabling-and-configuring-health-checks",children:"Enabling and configuring Health Checks"}),"\n",(0,a.jsxs)(n.p,{children:["The health checks need to be additionally enabled which can be done either through ",(0,a.jsx)(n.code,{children:"--HealthChecks.*"})," flags or by adding\na ",(0,a.jsx)(n.code,{children:'"HealthChecks"'})," section to the config file. "]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:' "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "WebhooksUri": "https://slack.webhook",\n "UIEnabled": true,\n "PollingInterval": 10,\n "Slug": "/api/health"\n }\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"danger",children:(0,a.jsxs)(n.p,{children:["JSON RPC Service needs to be enabled in order for health checks to work ",(0,a.jsx)(n.code,{children:"--JsonRpc.Enabled true"})]})}),"\n",(0,a.jsxs)(n.p,{children:["Each configuration option is described ",(0,a.jsx)(n.a,{href:"../fundamentals/configuration#healthchecks",children:"here"}),"."]}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-without-ui-",children:"Enabling Health Checks without UI "}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"health"})," endpoint is now available at ",(0,a.jsx)(n.code,{children:"localhost:8545/health"})," by default (if your ",(0,a.jsx)(n.code,{children:"--JsonRpc.Port"})," is ",(0,a.jsx)(n.code,{children:"8545"}),").\nThe ",(0,a.jsx)(n.code,{children:"health"})," endpoint can be configured via ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug"})," parameter e.g. ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug /api/health"}),". We\ncan if it is working with ",(0,a.jsx)(n.code,{children:"curl"}),":"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'// Request\ncurl localhost:8545/health\n\n// Example of response for Unhealthy node\n{"status":"Unhealthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node has 0 peers connected","duration":"00:00:00.0003881","status":"Unhealthy","tags":[]}}}\n\n// Example of response for Healthy node\n{"status":"Healthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node is now fully synced with a network, number of peers: 99","duration":"00:00:00.0003881","status":"Healthy","tags":[]}}}\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Unhealthy"})," returns ",(0,a.jsx)(n.strong,{children:"503"})," (Service Unavailable) status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Healthy"})," returns ",(0,a.jsx)(n.strong,{children:"200"})," status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-ui",children:"Enabling Health Checks UI"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true --HealthChecks.UIEnabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Enabling UI will expose an additional endpoint ",(0,a.jsx)(n.code,{children:"/healthchecks-ui"}),"and will allow seeing node's health on a nice UI. To\nview the UI simply go to ",(0,a.jsx)(n.code,{children:"http://localhost:8545/healthchecks-ui"}),"."]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy status reported on UI page",src:t(5218).A+"",width:"1187",height:"418"})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-slack-reports",children:"Enabling Slack reports"}),"\n",(0,a.jsxs)(n.p,{children:["We may also add Slack Webhook endpoint to which our node's health will be reported. We need to pass\nthe ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled true"})," and add the ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksUri"})," which can be found in your Slack app\nconfiguration."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.Enabled true --HealthChecks.UIEnabled true --HealthChecks.WebhooksEnabled true --HealthChecks.WebhooksUri https://hooks.slack.com/\n"})}),"\n",(0,a.jsxs)(n.p,{children:["If your node will be ",(0,a.jsx)(n.strong,{children:"Unhealthy"})," you should receive a message similar to this:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy",src:t(9953).A+"",width:"690",height:"240"})}),"\n",(0,a.jsxs)(n.p,{children:["with description of why the node is unhealthy, node's name and information about the machine on which the node is\nrunning.",(0,a.jsx)(n.br,{}),"\n","When it becomes ",(0,a.jsx)(n.strong,{children:"Healthy"})," (",(0,a.jsx)(n.strong,{children:"synced"})," and with ",(0,a.jsx)(n.strong,{children:"peers"}),") you should receive:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Healthy",src:t(5725).A+"",width:"492",height:"118"})}),"\n",(0,a.jsx)(n.h4,{id:"consensus-client-health",children:"Consensus Client health"}),"\n",(0,a.jsxs)(n.p,{children:["This check verifies if the client receives messages from the CL. If you see this warning in your logs, it means that\nthere is something wrong with CL/Nethermind communication. Check more about setting up Nethermind and\nCL ",(0,a.jsx)(n.a,{href:"/1.25.4/get-started/consensus-clients",children:"here"}),"."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"No incoming messages from Consensus Client. Consensus Client is required to sync the node. Please make sure that it's working properly.\n"})}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"Note that Consensus Client is required for normal node operations."})}),"\n",(0,a.jsx)(n.h4,{id:"health_nodestatus",children:"health_nodeStatus"}),"\n",(0,a.jsxs)(n.p,{children:["Health checks via JSON RPC requests were introduced in version v.1.10.18. For that, ",(0,a.jsx)(n.code,{children:"HealthChecks.Enabled"})," should be\nset to true."]}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsx)(l.A,{value:"request",label:"Request",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{ "jsonrpc":"2.0","method":"health_nodeStatus","params":[],"id":67 }\n'})})}),(0,a.jsx)(l.A,{label:"Response",value:"response",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{\n "jsonrpc": "2.0",\n "result": {\n "healthy": false,\n "messages": [\n "Sync degraded",\n "No messages from CL"\n ],\n "errors": [\n "SyncDegraded",\n "ClUnavailable"\n ],\n "isSyncing": true\n },\n "id": 67\n}\n'})})})]}),"\n",(0,a.jsx)(n.h4,{id:"monitoring-available-storage-space",children:"Monitoring available storage space"}),"\n",(0,a.jsx)(n.p,{children:"Feature which is helping to track free disk space is enabled by default and monitors a drive which has been used to\nconfigure database location. There are two new configuration options available:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold"})," - Percentage of free disk space below which a warning will be\ndisplayed. If Health Checks UI is enabled, it will also be reported under node's health. Default value is 5 - meaning\n5% of free disk space."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold"})," - Percentage of available disk space below which node will shutdown\nto avoid database corruption. Default value is 1 - meaning 1% of free disk space."]}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.LowStorageSpaceWarningThreshold 5 --HealthChecks.LowStorageSpaceShutdownThreshold 1\n"})}),"\n",(0,a.jsx)(n.h4,{id:"healthchecks-for-producing-and-processing-blocks",children:"HealthChecks for producing and processing blocks"}),"\n",(0,a.jsx)(n.p,{children:"There are two fields for HealthChecks config: MaxIntervalWithoutProcessedBlock and MaxIntervalWithoutProducedBlock. The\nnode will return unhealthy status if the interval elapsed without processing or producing a block. Let's use the below\nconfig as an example. If the node doesn't process a block for 15 seconds, we will return unhealthy status. Analogically,\nwe will be waiting 45 seconds for a newly produced block."}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:'\n "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "UIEnabled": true,\n "Slug": "/api/health",\n "MaxIntervalWithoutProcessedBlock ": 15,\n "MaxIntervalWithoutProducedBlock": 45\n }\n'})}),"\n",(0,a.jsx)(n.p,{children:"If those fields are not set in a config, application will try to use them based on seal engine specification. If there\nis infinite time, unhealthy status can still be reported if processing or producing threads stopped."})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var a=t(4164);const s={tabItem:"tabItem_Ymn6"};var r=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var a=t(6540),s=t(4164),r=t(3104),l=t(6347),i=t(205),o=t(7485),c=t(1682),h=t(679);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:s}}=e;return{value:n,label:t,attributes:a,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,o.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(s.location.search);n.set(r,e),s.replace({...s.location,search:n.toString()})}),[r,s])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=u(e),[l,o]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,d]=g({queryString:t,groupId:s}),[b,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,r]=(0,h.Dv)(t);return[s,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:s}),f=(()=>{const e=c??b;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&o(f)}),[f]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),d(e),m(e)}),[d,m,r]),tabValues:r}}var m=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(4848);function j(e){let{className:n,block:t,selectedValue:a,selectValue:l,tabValues:i}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),h=e=>{const n=e.currentTarget,t=o.indexOf(n),s=i[t].value;s!==a&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>o.push(e),onKeyDown:d,onClick:h,...r,className:(0,s.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function k(e){let{lazy:n,children:t,selectedValue:r}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=b(e);return(0,x.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,x.jsx)(j,{...n,...e}),(0,x.jsx)(k,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,x.jsx)(v,{...e,children:d(e.children)},String(n))}},5725:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(46)-5eaf72852b3e686e71865323e9801102.png"},5218:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(76)-09c7ba2b07d07480a303268d261ffd16.png"},9953:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/unhealthy-98cb6ab004e2ecb6edcbec2e6d03edea.png"},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>i});var a=t(6540);const s={},r=a.createContext(s);function l(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1f310fdc.bb56817e.js b/assets/js/1f310fdc.4f16e938.js similarity index 99% rename from assets/js/1f310fdc.bb56817e.js rename to assets/js/1f310fdc.4f16e938.js index df92abb21..220c9ddc4 100644 --- a/assets/js/1f310fdc.bb56817e.js +++ b/assets/js/1f310fdc.4f16e938.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1431],{2120:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>j,frontMatter:()=>t,metadata:()=>d,toc:()=>u});var r=s(4848),l=s(8453),a=s(1470),i=s(9365);const t={title:"clique namespace",sidebar_label:"clique",sidebar_position:1},c=void 0,d={id:"interacting/json-rpc-ns/clique",title:"clique namespace",description:"clique_discard",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/clique.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/clique",permalink:"/1.27.0/interacting/json-rpc-ns/clique",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/clique.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"clique namespace",sidebar_label:"clique",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"admin",permalink:"/1.27.0/interacting/json-rpc-ns/admin"},next:{title:"debug",permalink:"/1.27.0/interacting/json-rpc-ns/debug"}},o={},u=[{value:"clique_discard",id:"clique_discard",level:3},{value:"clique_getBlockSigner",id:"clique_getblocksigner",level:3},{value:"clique_getSigners",id:"clique_getsigners",level:3},{value:"clique_getSignersAnnotated",id:"clique_getsignersannotated",level:3},{value:"clique_getSignersAtHash",id:"clique_getsignersathash",level:3},{value:"clique_getSignersAtHashAnnotated",id:"clique_getsignersathashannotated",level:3},{value:"clique_getSignersAtNumber",id:"clique_getsignersatnumber",level:3},{value:"clique_getSnapshot",id:"clique_getsnapshot",level:3},{value:"clique_getSnapshotAtHash",id:"clique_getsnapshotathash",level:3},{value:"clique_produceBlock",id:"clique_produceblock",level:3},{value:"clique_propose",id:"clique_propose",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"clique_discard",children:"clique_discard"}),"\n",(0,r.jsx)(n.p,{children:"This method drops a currently running proposal. The signer will not cast further votes (either for or against) the address."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_discard",\n "params": [signer]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getblocksigner",children:"clique_getBlockSigner"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getBlockSigner",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsigners",children:"clique_getSigners"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSigners",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersannotated",children:"clique_getSignersAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAnnotated",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathash",children:"clique_getSignersAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathashannotated",children:"clique_getSignersAtHashAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHashAnnotated",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersatnumber",children:"clique_getSignersAtNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by block number."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtNumber",\n "params": [number]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshot",children:"clique_getSnapshot"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a snapshot of all clique state at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshot",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshotathash",children:"clique_getSnapshotAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the state snapshot at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshotAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_produceblock",children:"clique_produceBlock"}),"\n",(0,r.jsx)(n.p,{children:"Forces Clique block producer to produce a new block"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_produceBlock",\n "params": [parentHash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_propose",children:"clique_propose"}),"\n",(0,r.jsxs)(n.p,{children:["Adds a new authorization proposal that the signer will attempt to push through. If the ",(0,r.jsx)(n.code,{children:"vote"})," parameter is true, the local signer votes for the given address to be included in the set of authorized signers. With ",(0,r.jsx)(n.code,{children:"vote"})," set to false, the signer is against the address."]}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"vote"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_propose",\n "params": [signer, vote]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>i});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var a=s(4848);function i(e){let{children:n,hidden:s,className:i}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,i),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>A});var r=s(6540),l=s(4164),a=s(3104),i=s(6347),t=s(205),c=s(7485),d=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const l=(0,i.W6)(),a=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(l.location.search);n.set(a,e),l.replace({...l.location,search:n.toString()})}),[a,l])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,a=h(e),[i,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[d,u]=p({queryString:s,groupId:l}),[x,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,a]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&a.set(e)}),[s,a])]}({groupId:l}),m=(()=>{const e=d??x;return j({value:e,tabValues:a})?e:null})();(0,t.A)((()=>{m&&c(m)}),[m]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),g(e)}),[u,g,a]),tabValues:a}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:i,tabValues:t}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),l=t[s].value;l!==r&&(d(n),i(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:a}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:u,onClick:o,...a,className:(0,l.A)("tabs__item",m.tabItem,a?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:a}=e;const i=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=i.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function q(e){const n=x(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",m.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(f,{...n,...e})]})}function A(e){const n=(0,g.A)();return(0,b.jsx)(q,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>t});var r=s(6540);const l={},a=r.createContext(l);function i(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:i(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1431],{2120:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>j,frontMatter:()=>t,metadata:()=>d,toc:()=>u});var r=s(4848),l=s(8453),a=s(1470),i=s(9365);const t={title:"clique namespace",sidebar_label:"clique",sidebar_position:1},c=void 0,d={id:"interacting/json-rpc-ns/clique",title:"clique namespace",description:"clique_discard",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/clique.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/clique",permalink:"/1.27.0/interacting/json-rpc-ns/clique",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/clique.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"clique namespace",sidebar_label:"clique",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"admin",permalink:"/1.27.0/interacting/json-rpc-ns/admin"},next:{title:"debug",permalink:"/1.27.0/interacting/json-rpc-ns/debug"}},o={},u=[{value:"clique_discard",id:"clique_discard",level:3},{value:"clique_getBlockSigner",id:"clique_getblocksigner",level:3},{value:"clique_getSigners",id:"clique_getsigners",level:3},{value:"clique_getSignersAnnotated",id:"clique_getsignersannotated",level:3},{value:"clique_getSignersAtHash",id:"clique_getsignersathash",level:3},{value:"clique_getSignersAtHashAnnotated",id:"clique_getsignersathashannotated",level:3},{value:"clique_getSignersAtNumber",id:"clique_getsignersatnumber",level:3},{value:"clique_getSnapshot",id:"clique_getsnapshot",level:3},{value:"clique_getSnapshotAtHash",id:"clique_getsnapshotathash",level:3},{value:"clique_produceBlock",id:"clique_produceblock",level:3},{value:"clique_propose",id:"clique_propose",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"clique_discard",children:"clique_discard"}),"\n",(0,r.jsx)(n.p,{children:"This method drops a currently running proposal. The signer will not cast further votes (either for or against) the address."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_discard",\n "params": [signer]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getblocksigner",children:"clique_getBlockSigner"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getBlockSigner",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsigners",children:"clique_getSigners"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSigners",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersannotated",children:"clique_getSignersAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAnnotated",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathash",children:"clique_getSignersAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathashannotated",children:"clique_getSignersAtHashAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHashAnnotated",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersatnumber",children:"clique_getSignersAtNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by block number."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtNumber",\n "params": [number]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshot",children:"clique_getSnapshot"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a snapshot of all clique state at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshot",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshotathash",children:"clique_getSnapshotAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the state snapshot at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshotAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_produceblock",children:"clique_produceBlock"}),"\n",(0,r.jsx)(n.p,{children:"Forces Clique block producer to produce a new block"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_produceBlock",\n "params": [parentHash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_propose",children:"clique_propose"}),"\n",(0,r.jsxs)(n.p,{children:["Adds a new authorization proposal that the signer will attempt to push through. If the ",(0,r.jsx)(n.code,{children:"vote"})," parameter is true, the local signer votes for the given address to be included in the set of authorized signers. With ",(0,r.jsx)(n.code,{children:"vote"})," set to false, the signer is against the address."]}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"vote"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_propose",\n "params": [signer, vote]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>i});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var a=s(4848);function i(e){let{children:n,hidden:s,className:i}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,i),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>A});var r=s(6540),l=s(4164),a=s(3104),i=s(6347),t=s(205),c=s(7485),d=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const l=(0,i.W6)(),a=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(l.location.search);n.set(a,e),l.replace({...l.location,search:n.toString()})}),[a,l])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,a=h(e),[i,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[d,u]=p({queryString:s,groupId:l}),[x,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,a]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&a.set(e)}),[s,a])]}({groupId:l}),m=(()=>{const e=d??x;return j({value:e,tabValues:a})?e:null})();(0,t.A)((()=>{m&&c(m)}),[m]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),g(e)}),[u,g,a]),tabValues:a}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:i,tabValues:t}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),l=t[s].value;l!==r&&(d(n),i(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:a}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:u,onClick:o,...a,className:(0,l.A)("tabs__item",m.tabItem,a?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:a}=e;const i=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=i.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function q(e){const n=x(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",m.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(f,{...n,...e})]})}function A(e){const n=(0,g.A)();return(0,b.jsx)(q,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>t});var r=s(6540);const l={},a=r.createContext(l);function i(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:i(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/21146002.add686aa.js b/assets/js/21146002.d1ca4729.js similarity index 99% rename from assets/js/21146002.add686aa.js rename to assets/js/21146002.d1ca4729.js index 0336b5a8a..c0e1ad31c 100644 --- a/assets/js/21146002.add686aa.js +++ b/assets/js/21146002.d1ca4729.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1711],{1041:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});var i=s(4848),r=s(8453);const o={title:"Logs",sidebar_position:4},d=void 0,t={id:"fundamentals/logs",title:"Logs",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.25.4/fundamentals/logs.md",sourceDirName:"fundamentals",slug:"/fundamentals/logs",permalink:"/1.25.4/fundamentals/logs",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/logs.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"Logs",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Security",permalink:"/1.25.4/fundamentals/security"},next:{title:"Database",permalink:"/1.25.4/fundamentals/database"}},l={},c=[{value:"Log config file location",id:"log-config-file-location",level:2},{value:"Log config file syntax",id:"log-config-file-syntax",level:2},{value:"Config or CLI log rules",id:"config-or-cli-log-rules",level:2},{value:"Global logging override",id:"global-logging-override",level:2},{value:"JSON RPC logging level",id:"json-rpc-logging-level",level:2},{value:"Enterprise Logging",id:"enterprise-logging",level:2},{value:"Explaining Nethermind logs",id:"explaining-nethermind-logs",level:2}];function a(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-location",children:"Log config file location"}),"\n",(0,i.jsx)(n.p,{children:"Logging in Nethermind is done via NLog library that can be configured by editing the NLog.config file."}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Environment Type"}),(0,i.jsx)(n.th,{children:"NLog.config location"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Debug mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Debug\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Release mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Release\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"PPA"}),(0,i.jsx)(n.td,{children:"/usr/share/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Docker"}),(0,i.jsx)(n.td,{children:"/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub releases page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"dAppNode"}),(0,i.jsx)(n.td,{children:"? [to be documented]"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-syntax",children:"Log config file syntax"}),"\n",(0,i.jsxs)(n.p,{children:["Detailed NLog configuration options can be found\nhere: ",(0,i.jsx)(n.a,{href:"https://nlog-project.org/config/",children:"https://nlog-project.org/config/"})]}),"\n",(0,i.jsx)(n.h2,{id:"config-or-cli-log-rules",children:"Config or CLI log rules"}),"\n",(0,i.jsx)(n.p,{children:"Simple logging rules can be added through configuration file or command line argument."}),"\n",(0,i.jsxs)(n.p,{children:["For example this would add ",(0,i.jsx)(n.code,{children:"Trace"})," level logs to any logger under ",(0,i.jsx)(n.code,{children:"Synchronization"})," module and ",(0,i.jsx)(n.code,{children:"Debug"})," level logs\nfor ",(0,i.jsx)(n.code,{children:"BlockTree"})," from ",(0,i.jsx)(n.code,{children:"Blockchain"})," module:",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.code,{children:"--Init.LogRules Synchronization.*:Trace;Blockchain.BlockTree:Debug"})]}),"\n",(0,i.jsx)(n.h2,{id:"global-logging-override",children:"Global logging override"}),"\n",(0,i.jsx)(n.p,{children:"Additionally there are global logging override that you can use temporarily:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Command line override"}),(0,i.jsx)(n.th,{children:"Log level"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log TRACE"}),(0,i.jsx)(n.td,{children:"TRACE"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log DEBUG"}),(0,i.jsx)(n.td,{children:"DEBUG"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log INFO"}),(0,i.jsx)(n.td,{children:"INFO"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log WARN"}),(0,i.jsx)(n.td,{children:"WARN"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log ERROR"}),(0,i.jsx)(n.td,{children:"ERROR"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"json-rpc-logging-level",children:"JSON RPC logging level"}),"\n",(0,i.jsx)(n.p,{children:"This can be done by including these lines in the logging configuration file:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\n\n\n'})}),"\n",(0,i.jsx)(n.h2,{id:"enterprise-logging",children:"Enterprise Logging"}),"\n",(0,i.jsxs)(n.p,{children:["See how to configure Seq ",(0,i.jsx)(n.a,{href:"https://docs.nethermind.io/nethermind/enterprise/seq",children:"here"})]}),"\n",(0,i.jsx)(n.h2,{id:"explaining-nethermind-logs",children:"Explaining Nethermind logs"}),"\n",(0,i.jsxs)(n.p,{children:["You can check the supported operating systems, architectures and hardware requirements\nhere: ",(0,i.jsx)(n.a,{href:"/1.25.4/get-started/system-requirements",children:"system-requirements.md"})]}),"\n",(0,i.jsxs)(n.p,{children:["After the node starts, you will see some initial info about the node and then the sync will start. G\xf6rli fast sync uses\na ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync mode initially. The ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync picks some known ",(0,i.jsx)(n.code,{children:"pivot block"})," from the past and\ndownloads ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"}),", and ",(0,i.jsx)(n.code,{children:"receipts"})," downwards all the way to ",(0,i.jsx)(n.code,{children:"genesis block"}),". All blocks from 0 to\nthe ",(0,i.jsx)(n.code,{children:"pivot block"})," are showed as ",(0,i.jsx)(n.code,{children:"Old Headers"})," in the ",(0,i.jsx)(n.code,{children:"fast blocks sync"})," logs. The console display shows the number\ngrowing from 0 to pivot, but this is just to make the display more user-friendly."]}),"\n",(0,i.jsx)(n.p,{children:"You will see some information about the sync progress, like below:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Shows the number of already downloaded ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," under the name ",(0,i.jsx)(n.code,{children:"Downloaded"})," out of all to\nbe downloaded in the fast blocks stage."]}),"\n",(0,i.jsxs)(n.li,{children:["Shows the current queue of already downloaded ",(0,i.jsx)(n.code,{children:"blocks"}),", ",(0,i.jsx)(n.code,{children:"headers"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," waiting for being saved to the\ndatabase."]}),"\n",(0,i.jsx)(n.li,{children:"Shows the current download speed (blocks per second - bps)."}),"\n",(0,i.jsx)(n.li,{children:"Shows the average download speed (blocks per second - bps)."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast blocks sync logs",src:s(8973).A+"",width:"1219",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["When the fast blocks stage finishes, there will be some period of downloading blocks between the ",(0,i.jsx)(n.code,{children:"pivot"})," and\nthe",(0,i.jsx)(n.code,{children:"latest blocks"})," which will have some additional info:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Shows the last entry from the fast blocks stage."}),"\n",(0,i.jsx)(n.li,{children:"Shows the mode transition moment."}),"\n",(0,i.jsxs)(n.li,{children:["Displays the speed (in blocks per second) of all ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," at the same time."]}),"\n",(0,i.jsx)(n.li,{children:"Additional info will appear every 30000 blocks with information about the G\xf6rli epoch being stored."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli fast sync logs",src:s(245).A+"",width:"1528",height:"643"})}),"\n",(0,i.jsxs)(n.p,{children:["After the ",(0,i.jsx)(n.code,{children:"fast sync"})," part finished, the node will transition to the ",(0,i.jsx)(n.code,{children:"state sync stage"})," when the ",(0,i.jsx)(n.code,{children:"state trie"})," is being\ndownloaded. Much information is displayed about the progress, as this process may take a long time on mainnet (a few\nhours)."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Total elapsed time in ",(0,i.jsx)(n.code,{children:"state sync"})," is displayed."]}),"\n",(0,i.jsx)(n.li,{children:"The total percentage of downloaded DB size is displayed (on mainnet the sync finishes around 34GB in March 2020, on\nG\xf6rli around 800MB)."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"branches"})," stands for the percentage of downloaded branches."]}),"\n",(0,i.jsx)(n.li,{children:"Download speed in kilobytes per second is displayed."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"accounts"})," stands for the number of accounts data downloaded already."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"nodes"})," stands for the number of ",(0,i.jsx)(n.code,{children:"Patricia trie nodes"})," downloaded by the sync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"diagnostic"})," shows the time spent in the DB write / read access. The higher the value, the worse. It may get much\nworse if you restart the node during the sync process, as we need to recreate some caches then by reading data from\nthe DB."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli state sync logs",src:s(9378).A+"",width:"1528",height:"742"})}),"\n",(0,i.jsxs)(n.p,{children:["When the state sync is nearing completion, you may see a series of ",(0,i.jsx)(n.code,{children:"branch sync"})," information reloading many times from\n0% to nearly 100%. This is the node trying to retrieve the few remaining state nodes and progressing with the head block\nrapidly:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli branch sync logs",src:s(1548).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["At some point, the entire state is downloaded and the node enters the ",(0,i.jsx)(n.code,{children:"full sync"})," mode and will allow you to issue CLI /\nWeb3 queries and send / receive transactions\ud83e\udd73"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.code,{children:"root"})," is saved at the moment when the entire ",(0,i.jsx)(n.code,{children:"Patricia trie"})," is downloaded."]}),"\n",(0,i.jsxs)(n.li,{children:["We also clearly state that the node transitions to the ",(0,i.jsx)(n.code,{children:"full sync"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["When you see the block being processed, then you are in the ",(0,i.jsx)(n.code,{children:"full sync"})," and the newly arrived block is being\ncalculated."]}),"\n",(0,i.jsx)(n.li,{children:"Every two minutes you will see a summary of connected peers with their client version, IP address, highest synced\nblock, and data download speeds."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli full sync logs",src:s(3035).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsx)(n.p,{children:"Also, every now and then, a peer report will appear like below:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(4922).A+"",width:"2560",height:"1337"})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["First bracket is for Allocated contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsxs)(n.li,{children:["Second bracket is for Sleeping contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsx)(n.li,{children:"Third bracket contains Peer Info."}),"\n",(0,i.jsxs)(n.li,{children:["Fourth bracket is for Speeds as Follows:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Latency"}),"\n",(0,i.jsx)(n.li,{children:"Headers Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Bodies Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Receipts Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Node Data Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Snap Ranges Transfer"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},4922:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png"},1548:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png"},245:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png"},9378:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png"},3035:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png"},8973:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png"},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>t});var i=s(6540);const r={},o=i.createContext(r);function d(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1711],{1041:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});var i=s(4848),r=s(8453);const o={title:"Logs",sidebar_position:4},d=void 0,t={id:"fundamentals/logs",title:"Logs",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.25.4/fundamentals/logs.md",sourceDirName:"fundamentals",slug:"/fundamentals/logs",permalink:"/1.25.4/fundamentals/logs",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/logs.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"Logs",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Security",permalink:"/1.25.4/fundamentals/security"},next:{title:"Database",permalink:"/1.25.4/fundamentals/database"}},l={},c=[{value:"Log config file location",id:"log-config-file-location",level:2},{value:"Log config file syntax",id:"log-config-file-syntax",level:2},{value:"Config or CLI log rules",id:"config-or-cli-log-rules",level:2},{value:"Global logging override",id:"global-logging-override",level:2},{value:"JSON RPC logging level",id:"json-rpc-logging-level",level:2},{value:"Enterprise Logging",id:"enterprise-logging",level:2},{value:"Explaining Nethermind logs",id:"explaining-nethermind-logs",level:2}];function a(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-location",children:"Log config file location"}),"\n",(0,i.jsx)(n.p,{children:"Logging in Nethermind is done via NLog library that can be configured by editing the NLog.config file."}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Environment Type"}),(0,i.jsx)(n.th,{children:"NLog.config location"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Debug mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Debug\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Release mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Release\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"PPA"}),(0,i.jsx)(n.td,{children:"/usr/share/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Docker"}),(0,i.jsx)(n.td,{children:"/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub releases page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"dAppNode"}),(0,i.jsx)(n.td,{children:"? [to be documented]"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-syntax",children:"Log config file syntax"}),"\n",(0,i.jsxs)(n.p,{children:["Detailed NLog configuration options can be found\nhere: ",(0,i.jsx)(n.a,{href:"https://nlog-project.org/config/",children:"https://nlog-project.org/config/"})]}),"\n",(0,i.jsx)(n.h2,{id:"config-or-cli-log-rules",children:"Config or CLI log rules"}),"\n",(0,i.jsx)(n.p,{children:"Simple logging rules can be added through configuration file or command line argument."}),"\n",(0,i.jsxs)(n.p,{children:["For example this would add ",(0,i.jsx)(n.code,{children:"Trace"})," level logs to any logger under ",(0,i.jsx)(n.code,{children:"Synchronization"})," module and ",(0,i.jsx)(n.code,{children:"Debug"})," level logs\nfor ",(0,i.jsx)(n.code,{children:"BlockTree"})," from ",(0,i.jsx)(n.code,{children:"Blockchain"})," module:",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.code,{children:"--Init.LogRules Synchronization.*:Trace;Blockchain.BlockTree:Debug"})]}),"\n",(0,i.jsx)(n.h2,{id:"global-logging-override",children:"Global logging override"}),"\n",(0,i.jsx)(n.p,{children:"Additionally there are global logging override that you can use temporarily:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Command line override"}),(0,i.jsx)(n.th,{children:"Log level"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log TRACE"}),(0,i.jsx)(n.td,{children:"TRACE"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log DEBUG"}),(0,i.jsx)(n.td,{children:"DEBUG"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log INFO"}),(0,i.jsx)(n.td,{children:"INFO"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log WARN"}),(0,i.jsx)(n.td,{children:"WARN"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log ERROR"}),(0,i.jsx)(n.td,{children:"ERROR"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"json-rpc-logging-level",children:"JSON RPC logging level"}),"\n",(0,i.jsx)(n.p,{children:"This can be done by including these lines in the logging configuration file:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\n\n\n'})}),"\n",(0,i.jsx)(n.h2,{id:"enterprise-logging",children:"Enterprise Logging"}),"\n",(0,i.jsxs)(n.p,{children:["See how to configure Seq ",(0,i.jsx)(n.a,{href:"https://docs.nethermind.io/nethermind/enterprise/seq",children:"here"})]}),"\n",(0,i.jsx)(n.h2,{id:"explaining-nethermind-logs",children:"Explaining Nethermind logs"}),"\n",(0,i.jsxs)(n.p,{children:["You can check the supported operating systems, architectures and hardware requirements\nhere: ",(0,i.jsx)(n.a,{href:"/1.25.4/get-started/system-requirements",children:"system-requirements.md"})]}),"\n",(0,i.jsxs)(n.p,{children:["After the node starts, you will see some initial info about the node and then the sync will start. G\xf6rli fast sync uses\na ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync mode initially. The ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync picks some known ",(0,i.jsx)(n.code,{children:"pivot block"})," from the past and\ndownloads ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"}),", and ",(0,i.jsx)(n.code,{children:"receipts"})," downwards all the way to ",(0,i.jsx)(n.code,{children:"genesis block"}),". All blocks from 0 to\nthe ",(0,i.jsx)(n.code,{children:"pivot block"})," are showed as ",(0,i.jsx)(n.code,{children:"Old Headers"})," in the ",(0,i.jsx)(n.code,{children:"fast blocks sync"})," logs. The console display shows the number\ngrowing from 0 to pivot, but this is just to make the display more user-friendly."]}),"\n",(0,i.jsx)(n.p,{children:"You will see some information about the sync progress, like below:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Shows the number of already downloaded ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," under the name ",(0,i.jsx)(n.code,{children:"Downloaded"})," out of all to\nbe downloaded in the fast blocks stage."]}),"\n",(0,i.jsxs)(n.li,{children:["Shows the current queue of already downloaded ",(0,i.jsx)(n.code,{children:"blocks"}),", ",(0,i.jsx)(n.code,{children:"headers"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," waiting for being saved to the\ndatabase."]}),"\n",(0,i.jsx)(n.li,{children:"Shows the current download speed (blocks per second - bps)."}),"\n",(0,i.jsx)(n.li,{children:"Shows the average download speed (blocks per second - bps)."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast blocks sync logs",src:s(8973).A+"",width:"1219",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["When the fast blocks stage finishes, there will be some period of downloading blocks between the ",(0,i.jsx)(n.code,{children:"pivot"})," and\nthe",(0,i.jsx)(n.code,{children:"latest blocks"})," which will have some additional info:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Shows the last entry from the fast blocks stage."}),"\n",(0,i.jsx)(n.li,{children:"Shows the mode transition moment."}),"\n",(0,i.jsxs)(n.li,{children:["Displays the speed (in blocks per second) of all ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," at the same time."]}),"\n",(0,i.jsx)(n.li,{children:"Additional info will appear every 30000 blocks with information about the G\xf6rli epoch being stored."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli fast sync logs",src:s(245).A+"",width:"1528",height:"643"})}),"\n",(0,i.jsxs)(n.p,{children:["After the ",(0,i.jsx)(n.code,{children:"fast sync"})," part finished, the node will transition to the ",(0,i.jsx)(n.code,{children:"state sync stage"})," when the ",(0,i.jsx)(n.code,{children:"state trie"})," is being\ndownloaded. Much information is displayed about the progress, as this process may take a long time on mainnet (a few\nhours)."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Total elapsed time in ",(0,i.jsx)(n.code,{children:"state sync"})," is displayed."]}),"\n",(0,i.jsx)(n.li,{children:"The total percentage of downloaded DB size is displayed (on mainnet the sync finishes around 34GB in March 2020, on\nG\xf6rli around 800MB)."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"branches"})," stands for the percentage of downloaded branches."]}),"\n",(0,i.jsx)(n.li,{children:"Download speed in kilobytes per second is displayed."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"accounts"})," stands for the number of accounts data downloaded already."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"nodes"})," stands for the number of ",(0,i.jsx)(n.code,{children:"Patricia trie nodes"})," downloaded by the sync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"diagnostic"})," shows the time spent in the DB write / read access. The higher the value, the worse. It may get much\nworse if you restart the node during the sync process, as we need to recreate some caches then by reading data from\nthe DB."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli state sync logs",src:s(9378).A+"",width:"1528",height:"742"})}),"\n",(0,i.jsxs)(n.p,{children:["When the state sync is nearing completion, you may see a series of ",(0,i.jsx)(n.code,{children:"branch sync"})," information reloading many times from\n0% to nearly 100%. This is the node trying to retrieve the few remaining state nodes and progressing with the head block\nrapidly:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli branch sync logs",src:s(1548).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["At some point, the entire state is downloaded and the node enters the ",(0,i.jsx)(n.code,{children:"full sync"})," mode and will allow you to issue CLI /\nWeb3 queries and send / receive transactions\ud83e\udd73"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.code,{children:"root"})," is saved at the moment when the entire ",(0,i.jsx)(n.code,{children:"Patricia trie"})," is downloaded."]}),"\n",(0,i.jsxs)(n.li,{children:["We also clearly state that the node transitions to the ",(0,i.jsx)(n.code,{children:"full sync"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["When you see the block being processed, then you are in the ",(0,i.jsx)(n.code,{children:"full sync"})," and the newly arrived block is being\ncalculated."]}),"\n",(0,i.jsx)(n.li,{children:"Every two minutes you will see a summary of connected peers with their client version, IP address, highest synced\nblock, and data download speeds."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli full sync logs",src:s(3035).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsx)(n.p,{children:"Also, every now and then, a peer report will appear like below:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(4922).A+"",width:"2560",height:"1337"})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["First bracket is for Allocated contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsxs)(n.li,{children:["Second bracket is for Sleeping contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsx)(n.li,{children:"Third bracket contains Peer Info."}),"\n",(0,i.jsxs)(n.li,{children:["Fourth bracket is for Speeds as Follows:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Latency"}),"\n",(0,i.jsx)(n.li,{children:"Headers Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Bodies Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Receipts Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Node Data Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Snap Ranges Transfer"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},4922:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png"},1548:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png"},245:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png"},9378:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png"},3035:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png"},8973:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png"},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>t});var i=s(6540);const r={},o=i.createContext(r);function d(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/229f7cd8.0081fec1.js b/assets/js/229f7cd8.a39c9c1d.js similarity index 99% rename from assets/js/229f7cd8.0081fec1.js rename to assets/js/229f7cd8.a39c9c1d.js index 017fd592c..f03b27928 100644 --- a/assets/js/229f7cd8.0081fec1.js +++ b/assets/js/229f7cd8.a39c9c1d.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6100],{706:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>t,frontMatter:()=>d,metadata:()=>a,toc:()=>x});var l=s(4848),r=s(8453),i=s(1470),c=s(9365);const d={title:"debug namespace",sidebar_label:"debug",sidebar_position:2},h=void 0,a={id:"interacting/json-rpc-ns/debug",title:"debug namespace",description:"debug_deleteChainSlice",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/debug.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/debug",permalink:"/1.25.4/interacting/json-rpc-ns/debug",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/debug.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"debug namespace",sidebar_label:"debug",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"clique",permalink:"/1.25.4/interacting/json-rpc-ns/clique"},next:{title:"eth",permalink:"/1.25.4/interacting/json-rpc-ns/eth"}},j={},x=[{value:"debug_deleteChainSlice",id:"debug_deletechainslice",level:3},{value:"debug_getBadBlocks",id:"debug_getbadblocks",level:3},{value:"debug_getBlockRlp",id:"debug_getblockrlp",level:3},{value:"debug_getBlockRlpByHash",id:"debug_getblockrlpbyhash",level:3},{value:"debug_getChainLevel",id:"debug_getchainlevel",level:3},{value:"debug_getConfigValue",id:"debug_getconfigvalue",level:3},{value:"debug_getRawBlock",id:"debug_getrawblock",level:3},{value:"debug_getRawHeader",id:"debug_getrawheader",level:3},{value:"debug_getRawReceipts",id:"debug_getrawreceipts",level:3},{value:"debug_getRawTransaction",id:"debug_getrawtransaction",level:3},{value:"debug_getSyncStage",id:"debug_getsyncstage",level:3},{value:"debug_insertReceipts",id:"debug_insertreceipts",level:3},{value:"debug_migrateReceipts",id:"debug_migratereceipts",level:3},{value:"debug_resetHead",id:"debug_resethead",level:3},{value:"debug_standardTraceBlockToFile",id:"debug_standardtraceblocktofile",level:3},{value:"debug_traceBlock",id:"debug_traceblock",level:3},{value:"debug_traceBlockByHash",id:"debug_traceblockbyhash",level:3},{value:"debug_traceBlockByNumber",id:"debug_traceblockbynumber",level:3},{value:"debug_traceCall",id:"debug_tracecall",level:3},{value:"debug_traceTransaction",id:"debug_tracetransaction",level:3},{value:"debug_traceTransactionByBlockAndIndex",id:"debug_tracetransactionbyblockandindex",level:3},{value:"debug_traceTransactionByBlockhashAndIndex",id:"debug_tracetransactionbyblockhashandindex",level:3},{value:"debug_traceTransactionInBlockByHash",id:"debug_tracetransactioninblockbyhash",level:3},{value:"debug_traceTransactionInBlockByIndex",id:"debug_tracetransactioninblockbyindex",level:3}];function o(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h3,{id:"debug_deletechainslice",children:"debug_deleteChainSlice"}),"\n",(0,l.jsx)(n.p,{children:"Deletes a slice of a chain from the tree on all branches (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"startNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"force"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_deleteChainSlice",\n "params": [startNumber, force]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getbadblocks",children:"debug_getBadBlocks"}),"\n",(0,l.jsx)(n.p,{children:"Return list of invalid blocks."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBadBlocks",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"block"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"author"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"difficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"extraData"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasLimit"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"miner"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mixHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"signature"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"size"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stateRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"step"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timestamp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactions"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"uncles"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInGwei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInWei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"index"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"validatorIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"rlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlp",children:"debug_getBlockRlp"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlp",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlpbyhash",children:"debug_getBlockRlpByHash"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlpByHash",\n "params": [hash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getchainlevel",children:"debug_getChainLevel"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a representation of tree branches on a given chain level (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getChainLevel",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockInfos"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isFinalized"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"wasProcessed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasBlockOnMainChain"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getconfigvalue",children:"debug_getConfigValue"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves the Nethermind configuration value, e.g. JsonRpc.Enabled"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"category"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"name"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getConfigValue",\n "params": [category, name]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawblock",children:"debug_getRawBlock"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Block format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawBlock",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawheader",children:"debug_getRawHeader"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Header format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawHeader",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawreceipts",children:"debug_getRawReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Receipt format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawtransaction",children:"debug_getRawTransaction"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Transaction format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawTransaction",\n "params": [transactionHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getsyncstage",children:"debug_getSyncStage"}),"\n",(0,l.jsx)(n.p,{children:"Retrives Nethermind Sync Stage, With extra Metadata"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getSyncStage",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"currentStage"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_insertreceipts",children:"debug_insertReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Insert receipts for the block after verifying receipts root correctness."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsxs)(c.A,{value:"params",label:"Parameters",children:[(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"receiptForRpc"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"contractAddress"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logs"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"removed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"topics"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"root"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"status"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]})]}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_insertReceipts",\n "params": [blockParameter, receiptForRpc]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_migratereceipts",children:"debug_migrateReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Sets the block number up to which receipts will be migrated to (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_migrateReceipts",\n "params": [blockNumber]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_resethead",children:"debug_resetHead"}),"\n",(0,l.jsx)(n.p,{children:"Updates / resets head block - use only when the node got stuck due to DB / memory corruption (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_resetHead",\n "params": [blockHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtraceblocktofile",children:"debug_standardTraceBlockToFile"}),"\n",(0,l.jsx)(n.p,{children:"Writes to a file the full stack trace of all invoked opcodes of the transaction specified (or all transactions if not specified) that was included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblock",children:"debug_traceBlock"}),"\n",(0,l.jsx)(n.p,{children:"Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlock",\n "params": [blockRlp, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbyhash",children:"debug_traceBlockByHash"}),"\n",(0,l.jsx)(n.p,{children:"Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the database."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByHash",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbynumber",children:"debug_traceBlockByNumber"}),"\n",(0,l.jsx)(n.p,{children:'Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block that is already present in the database.'}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByNumber",\n "params": [blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracecall",children:"debug_traceCall"}),"\n",(0,l.jsx)(n.p,{children:"This method lets you run an eth_call within the context of the given block execution using the final state of parent block as the base. The block can be specified either by hash or by number. It takes the same input object as a eth_call. It returns the same output as debug_traceTransaction."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"call"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"accessList"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chainId"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"input"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isSystemTx"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mint"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"r"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"s"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sourceHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"v"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"yParity"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceCall",\n "params": [call, blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransaction",children:"debug_traceTransaction"}),"\n",(0,l.jsx)(n.p,{children:"This 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."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransaction",\n "params": [transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockandindex",children:"debug_traceTransactionByBlockAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockAndIndex",\n "params": [blockParameter, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockhashandindex",children:"debug_traceTransactionByBlockhashAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockhashAndIndex",\n "params": [blockHash, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyhash",children:"debug_traceTransactionInBlockByHash"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByHash",\n "params": [blockRlp, transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyindex",children:"debug_traceTransactionInBlockByIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByIndex",\n "params": [blockRlp, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function t(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(o,{...e})}):o(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var l=s(4164);const r={tabItem:"tabItem_Ymn6"};var i=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,l.A)(r.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var l=s(6540),r=s(4164),i=s(3104),c=s(6347),d=s(205),h=s(7485),a=s(1682),j=s(679);function x(e){return l.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,l.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function o(e){const{values:n,children:s}=e;return(0,l.useMemo)((()=>{const e=n??function(e){return x(e).map((e=>{let{props:{value:n,label:s,attributes:l,default:r}}=e;return{value:n,label:s,attributes:l,default:r}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function t(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const r=(0,c.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(i),(0,l.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,i=o(e),[c,h]=(0,l.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!t({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const l=s.find((e=>e.default))??s[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:n,tabValues:i}))),[a,x]=u({queryString:s,groupId:r}),[m,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,j.Dv)(s);return[r,(0,l.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:r}),b=(()=>{const e=a??m;return t({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{b&&h(b)}),[b]);return{selectedValue:c,selectValue:(0,l.useCallback)((e=>{if(!t({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);h(e),x(e),g(e)}),[x,g,i]),tabValues:i}}var g=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var p=s(4848);function f(e){let{className:n,block:s,selectedValue:l,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),r=d[s].value;r!==l&&(a(n),c(r))},x=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,p.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,p.jsx)("li",{role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,ref:e=>h.push(e),onKeyDown:x,onClick:j,...i,className:(0,r.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":l===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===i));return e?(0,l.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,p.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,l.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=m(e);return(0,p.jsxs)("div",{className:(0,r.A)("tabs-container",b.tabList),children:[(0,p.jsx)(f,{...n,...e}),(0,p.jsx)(v,{...n,...e})]})}function k(e){const n=(0,g.A)();return(0,p.jsx)(y,{...e,children:x(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var l=s(6540);const r={},i=l.createContext(r);function c(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6100],{706:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>t,frontMatter:()=>d,metadata:()=>a,toc:()=>x});var l=s(4848),r=s(8453),i=s(1470),c=s(9365);const d={title:"debug namespace",sidebar_label:"debug",sidebar_position:2},h=void 0,a={id:"interacting/json-rpc-ns/debug",title:"debug namespace",description:"debug_deleteChainSlice",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/debug.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/debug",permalink:"/1.25.4/interacting/json-rpc-ns/debug",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/debug.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"debug namespace",sidebar_label:"debug",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"clique",permalink:"/1.25.4/interacting/json-rpc-ns/clique"},next:{title:"eth",permalink:"/1.25.4/interacting/json-rpc-ns/eth"}},j={},x=[{value:"debug_deleteChainSlice",id:"debug_deletechainslice",level:3},{value:"debug_getBadBlocks",id:"debug_getbadblocks",level:3},{value:"debug_getBlockRlp",id:"debug_getblockrlp",level:3},{value:"debug_getBlockRlpByHash",id:"debug_getblockrlpbyhash",level:3},{value:"debug_getChainLevel",id:"debug_getchainlevel",level:3},{value:"debug_getConfigValue",id:"debug_getconfigvalue",level:3},{value:"debug_getRawBlock",id:"debug_getrawblock",level:3},{value:"debug_getRawHeader",id:"debug_getrawheader",level:3},{value:"debug_getRawReceipts",id:"debug_getrawreceipts",level:3},{value:"debug_getRawTransaction",id:"debug_getrawtransaction",level:3},{value:"debug_getSyncStage",id:"debug_getsyncstage",level:3},{value:"debug_insertReceipts",id:"debug_insertreceipts",level:3},{value:"debug_migrateReceipts",id:"debug_migratereceipts",level:3},{value:"debug_resetHead",id:"debug_resethead",level:3},{value:"debug_standardTraceBlockToFile",id:"debug_standardtraceblocktofile",level:3},{value:"debug_traceBlock",id:"debug_traceblock",level:3},{value:"debug_traceBlockByHash",id:"debug_traceblockbyhash",level:3},{value:"debug_traceBlockByNumber",id:"debug_traceblockbynumber",level:3},{value:"debug_traceCall",id:"debug_tracecall",level:3},{value:"debug_traceTransaction",id:"debug_tracetransaction",level:3},{value:"debug_traceTransactionByBlockAndIndex",id:"debug_tracetransactionbyblockandindex",level:3},{value:"debug_traceTransactionByBlockhashAndIndex",id:"debug_tracetransactionbyblockhashandindex",level:3},{value:"debug_traceTransactionInBlockByHash",id:"debug_tracetransactioninblockbyhash",level:3},{value:"debug_traceTransactionInBlockByIndex",id:"debug_tracetransactioninblockbyindex",level:3}];function o(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h3,{id:"debug_deletechainslice",children:"debug_deleteChainSlice"}),"\n",(0,l.jsx)(n.p,{children:"Deletes a slice of a chain from the tree on all branches (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"startNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"force"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_deleteChainSlice",\n "params": [startNumber, force]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getbadblocks",children:"debug_getBadBlocks"}),"\n",(0,l.jsx)(n.p,{children:"Return list of invalid blocks."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBadBlocks",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"block"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"author"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"difficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"extraData"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasLimit"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"miner"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mixHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"signature"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"size"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stateRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"step"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timestamp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactions"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"uncles"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInGwei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInWei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"index"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"validatorIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"rlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlp",children:"debug_getBlockRlp"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlp",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlpbyhash",children:"debug_getBlockRlpByHash"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlpByHash",\n "params": [hash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getchainlevel",children:"debug_getChainLevel"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a representation of tree branches on a given chain level (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getChainLevel",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockInfos"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isFinalized"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"wasProcessed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasBlockOnMainChain"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getconfigvalue",children:"debug_getConfigValue"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves the Nethermind configuration value, e.g. JsonRpc.Enabled"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"category"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"name"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getConfigValue",\n "params": [category, name]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawblock",children:"debug_getRawBlock"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Block format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawBlock",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawheader",children:"debug_getRawHeader"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Header format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawHeader",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawreceipts",children:"debug_getRawReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Receipt format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawtransaction",children:"debug_getRawTransaction"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Transaction format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawTransaction",\n "params": [transactionHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getsyncstage",children:"debug_getSyncStage"}),"\n",(0,l.jsx)(n.p,{children:"Retrives Nethermind Sync Stage, With extra Metadata"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getSyncStage",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"currentStage"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_insertreceipts",children:"debug_insertReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Insert receipts for the block after verifying receipts root correctness."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsxs)(c.A,{value:"params",label:"Parameters",children:[(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"receiptForRpc"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"contractAddress"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logs"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"removed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"topics"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"root"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"status"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]})]}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_insertReceipts",\n "params": [blockParameter, receiptForRpc]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_migratereceipts",children:"debug_migrateReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Sets the block number up to which receipts will be migrated to (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_migrateReceipts",\n "params": [blockNumber]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_resethead",children:"debug_resetHead"}),"\n",(0,l.jsx)(n.p,{children:"Updates / resets head block - use only when the node got stuck due to DB / memory corruption (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_resetHead",\n "params": [blockHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtraceblocktofile",children:"debug_standardTraceBlockToFile"}),"\n",(0,l.jsx)(n.p,{children:"Writes to a file the full stack trace of all invoked opcodes of the transaction specified (or all transactions if not specified) that was included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblock",children:"debug_traceBlock"}),"\n",(0,l.jsx)(n.p,{children:"Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlock",\n "params": [blockRlp, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbyhash",children:"debug_traceBlockByHash"}),"\n",(0,l.jsx)(n.p,{children:"Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the database."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByHash",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbynumber",children:"debug_traceBlockByNumber"}),"\n",(0,l.jsx)(n.p,{children:'Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block that is already present in the database.'}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByNumber",\n "params": [blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracecall",children:"debug_traceCall"}),"\n",(0,l.jsx)(n.p,{children:"This method lets you run an eth_call within the context of the given block execution using the final state of parent block as the base. The block can be specified either by hash or by number. It takes the same input object as a eth_call. It returns the same output as debug_traceTransaction."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"call"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"accessList"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chainId"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"input"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isSystemTx"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mint"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"r"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"s"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sourceHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"v"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"yParity"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceCall",\n "params": [call, blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransaction",children:"debug_traceTransaction"}),"\n",(0,l.jsx)(n.p,{children:"This 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."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransaction",\n "params": [transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockandindex",children:"debug_traceTransactionByBlockAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockAndIndex",\n "params": [blockParameter, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockhashandindex",children:"debug_traceTransactionByBlockhashAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockhashAndIndex",\n "params": [blockHash, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyhash",children:"debug_traceTransactionInBlockByHash"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByHash",\n "params": [blockRlp, transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyindex",children:"debug_traceTransactionInBlockByIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByIndex",\n "params": [blockRlp, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function t(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(o,{...e})}):o(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var l=s(4164);const r={tabItem:"tabItem_Ymn6"};var i=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,l.A)(r.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var l=s(6540),r=s(4164),i=s(3104),c=s(6347),d=s(205),h=s(7485),a=s(1682),j=s(679);function x(e){return l.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,l.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function o(e){const{values:n,children:s}=e;return(0,l.useMemo)((()=>{const e=n??function(e){return x(e).map((e=>{let{props:{value:n,label:s,attributes:l,default:r}}=e;return{value:n,label:s,attributes:l,default:r}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function t(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const r=(0,c.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(i),(0,l.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,i=o(e),[c,h]=(0,l.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!t({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const l=s.find((e=>e.default))??s[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:n,tabValues:i}))),[a,x]=u({queryString:s,groupId:r}),[m,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,j.Dv)(s);return[r,(0,l.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:r}),b=(()=>{const e=a??m;return t({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{b&&h(b)}),[b]);return{selectedValue:c,selectValue:(0,l.useCallback)((e=>{if(!t({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);h(e),x(e),g(e)}),[x,g,i]),tabValues:i}}var g=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var p=s(4848);function f(e){let{className:n,block:s,selectedValue:l,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),r=d[s].value;r!==l&&(a(n),c(r))},x=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,p.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,p.jsx)("li",{role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,ref:e=>h.push(e),onKeyDown:x,onClick:j,...i,className:(0,r.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":l===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===i));return e?(0,l.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,p.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,l.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=m(e);return(0,p.jsxs)("div",{className:(0,r.A)("tabs-container",b.tabList),children:[(0,p.jsx)(f,{...n,...e}),(0,p.jsx)(v,{...n,...e})]})}function k(e){const n=(0,g.A)();return(0,p.jsx)(y,{...e,children:x(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var l=s(6540);const r={},i=l.createContext(r);function c(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/25875451.a4a2cb50.js b/assets/js/25875451.d946e5f8.js similarity index 99% rename from assets/js/25875451.a4a2cb50.js rename to assets/js/25875451.d946e5f8.js index 222ff3b48..1c4160aca 100644 --- a/assets/js/25875451.a4a2cb50.js +++ b/assets/js/25875451.d946e5f8.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5298],{871:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),s=t(8453),a=t(1470),l=t(9365);const o={title:"net namespace",sidebar_label:"net",sidebar_position:4},i=void 0,c={id:"interacting/json-rpc-ns/net",title:"net namespace",description:"net_listening",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/net.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/net",permalink:"/1.26.0/interacting/json-rpc-ns/net",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/net.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"net namespace",sidebar_label:"net",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"eth",permalink:"/1.26.0/interacting/json-rpc-ns/eth"},next:{title:"parity",permalink:"/1.26.0/interacting/json-rpc-ns/parity"}},u={},d=[{value:"net_listening",id:"net_listening",level:3},{value:"net_localAddress",id:"net_localaddress",level:3},{value:"net_localEnode",id:"net_localenode",level:3},{value:"net_peerCount",id:"net_peercount",level:3},{value:"net_version",id:"net_version",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"net_listening",children:"net_listening"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_listening",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localaddress",children:"net_localAddress"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localAddress",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localenode",children:"net_localEnode"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localEnode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_peercount",children:"net_peerCount"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_peerCount",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_version",children:"net_version"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_version",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var a=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>A});var r=t(6540),s=t(4164),a=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(s.location.search);n.set(a,e),s.replace({...s.location,search:n.toString()})}),[a,s])]}function j(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[c,d]=m({queryString:t,groupId:s}),[j,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,a]=(0,u.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:s}),x=(()=>{const e=c??j;return h({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{x&&i(x)}),[x]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=t(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=t(4848);function f(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),s=o[t].value;s!==r&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:a}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function _(e){const n=j(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,v.jsx)(f,{...n,...e}),(0,v.jsx)(g,{...n,...e})]})}function A(e){const n=(0,b.A)();return(0,v.jsx)(_,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const s={},a=r.createContext(s);function l(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5298],{871:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),s=t(8453),a=t(1470),l=t(9365);const o={title:"net namespace",sidebar_label:"net",sidebar_position:4},i=void 0,c={id:"interacting/json-rpc-ns/net",title:"net namespace",description:"net_listening",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/net.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/net",permalink:"/1.26.0/interacting/json-rpc-ns/net",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/net.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"net namespace",sidebar_label:"net",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"eth",permalink:"/1.26.0/interacting/json-rpc-ns/eth"},next:{title:"parity",permalink:"/1.26.0/interacting/json-rpc-ns/parity"}},u={},d=[{value:"net_listening",id:"net_listening",level:3},{value:"net_localAddress",id:"net_localaddress",level:3},{value:"net_localEnode",id:"net_localenode",level:3},{value:"net_peerCount",id:"net_peercount",level:3},{value:"net_version",id:"net_version",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"net_listening",children:"net_listening"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_listening",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localaddress",children:"net_localAddress"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localAddress",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localenode",children:"net_localEnode"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localEnode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_peercount",children:"net_peerCount"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_peerCount",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_version",children:"net_version"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_version",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var a=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>A});var r=t(6540),s=t(4164),a=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(s.location.search);n.set(a,e),s.replace({...s.location,search:n.toString()})}),[a,s])]}function j(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[c,d]=m({queryString:t,groupId:s}),[j,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,a]=(0,u.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:s}),x=(()=>{const e=c??j;return h({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{x&&i(x)}),[x]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=t(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=t(4848);function f(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),s=o[t].value;s!==r&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:a}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function _(e){const n=j(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,v.jsx)(f,{...n,...e}),(0,v.jsx)(g,{...n,...e})]})}function A(e){const n=(0,b.A)();return(0,v.jsx)(_,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const s={},a=r.createContext(s);function l(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/26b16101.7bab1179.js b/assets/js/26b16101.a45c60f1.js similarity index 99% rename from assets/js/26b16101.7bab1179.js rename to assets/js/26b16101.a45c60f1.js index 4501ab803..114797ace 100644 --- a/assets/js/26b16101.7bab1179.js +++ b/assets/js/26b16101.a45c60f1.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4538],{3784:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),s=t(8453),a=t(1470),l=t(9365);const o={title:"net namespace",sidebar_label:"net",sidebar_position:4},i=void 0,c={id:"interacting/json-rpc-ns/net",title:"net namespace",description:"net_listening",source:"@site/docs/interacting/json-rpc-ns/net.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/net",permalink:"/next/interacting/json-rpc-ns/net",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/net.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"net namespace",sidebar_label:"net",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"eth",permalink:"/next/interacting/json-rpc-ns/eth"},next:{title:"parity",permalink:"/next/interacting/json-rpc-ns/parity"}},u={},d=[{value:"net_listening",id:"net_listening",level:3},{value:"net_localAddress",id:"net_localaddress",level:3},{value:"net_localEnode",id:"net_localenode",level:3},{value:"net_peerCount",id:"net_peercount",level:3},{value:"net_version",id:"net_version",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"net_listening",children:"net_listening"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_listening",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localaddress",children:"net_localAddress"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localAddress",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localenode",children:"net_localEnode"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localEnode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_peercount",children:"net_peerCount"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_peerCount",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_version",children:"net_version"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_version",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var a=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>A});var r=t(6540),s=t(4164),a=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(s.location.search);n.set(a,e),s.replace({...s.location,search:n.toString()})}),[a,s])]}function j(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[c,d]=m({queryString:t,groupId:s}),[j,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,a]=(0,u.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:s}),x=(()=>{const e=c??j;return h({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{x&&i(x)}),[x]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=t(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function v(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),s=o[t].value;s!==r&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:a}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function _(e){const n=j(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(g,{...n,...e})]})}function A(e){const n=(0,b.A)();return(0,f.jsx)(_,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const s={},a=r.createContext(s);function l(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4538],{3784:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),s=t(8453),a=t(1470),l=t(9365);const o={title:"net namespace",sidebar_label:"net",sidebar_position:4},i=void 0,c={id:"interacting/json-rpc-ns/net",title:"net namespace",description:"net_listening",source:"@site/docs/interacting/json-rpc-ns/net.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/net",permalink:"/next/interacting/json-rpc-ns/net",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/net.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"net namespace",sidebar_label:"net",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"eth",permalink:"/next/interacting/json-rpc-ns/eth"},next:{title:"parity",permalink:"/next/interacting/json-rpc-ns/parity"}},u={},d=[{value:"net_listening",id:"net_listening",level:3},{value:"net_localAddress",id:"net_localaddress",level:3},{value:"net_localEnode",id:"net_localenode",level:3},{value:"net_peerCount",id:"net_peercount",level:3},{value:"net_version",id:"net_version",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"net_listening",children:"net_listening"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_listening",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localaddress",children:"net_localAddress"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localAddress",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localenode",children:"net_localEnode"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localEnode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_peercount",children:"net_peerCount"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_peerCount",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_version",children:"net_version"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_version",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var a=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>A});var r=t(6540),s=t(4164),a=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(s.location.search);n.set(a,e),s.replace({...s.location,search:n.toString()})}),[a,s])]}function j(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[c,d]=m({queryString:t,groupId:s}),[j,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,a]=(0,u.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:s}),x=(()=>{const e=c??j;return h({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{x&&i(x)}),[x]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=t(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function v(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),s=o[t].value;s!==r&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:a}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function _(e){const n=j(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(g,{...n,...e})]})}function A(e){const n=(0,b.A)();return(0,f.jsx)(_,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const s={},a=r.createContext(s);function l(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/277f8a9b.16b129fb.js b/assets/js/277f8a9b.a5e3e44b.js similarity index 99% rename from assets/js/277f8a9b.16b129fb.js rename to assets/js/277f8a9b.a5e3e44b.js index 0d350f52f..a7dcf34b4 100644 --- a/assets/js/277f8a9b.16b129fb.js +++ b/assets/js/277f8a9b.a5e3e44b.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2501],{3280:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var t=s(4848),r=s(8453);const i={title:"System requirements",sidebar_position:1},d=void 0,a={id:"get-started/system-requirements",title:"System requirements",description:"Supported operating systems",source:"@site/versioned_docs/version-1.25.4/get-started/system-requirements.md",sourceDirName:"get-started",slug:"/get-started/system-requirements",permalink:"/1.25.4/get-started/system-requirements",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/get-started/system-requirements.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"System requirements",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/1.25.4/"},next:{title:"Installing Nethermind",permalink:"/1.25.4/get-started/installing-nethermind"}},o={},l=[{value:"Supported operating systems",id:"supported-operating-systems",level:2},{value:"Hardware requirements",id:"hardware-requirements",level:2},{value:"Disk requirements",id:"disk-requirements",level:3},{value:"Database growth",id:"database-growth",level:4},{value:"Disk speed",id:"disk-speed",level:4},{value:"Sync modes and disk usage",id:"sync-modes-and-disk-usage",level:4}];function c(e){const n={a:"a",br:"br",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"supported-operating-systems",children:"Supported operating systems"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind supports a broad range of modern ",(0,t.jsx)(n.em,{children:"64-bit"})," operating systems including but not limited to:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Linux"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Alpine 3.17+"}),"\n",(0,t.jsx)(n.li,{children:"CentOS Stream 9+"}),"\n",(0,t.jsx)(n.li,{children:"Debian 11+"}),"\n",(0,t.jsx)(n.li,{children:"Fedora 37+"}),"\n",(0,t.jsx)(n.li,{children:"openSUSE 15+"}),"\n",(0,t.jsx)(n.li,{children:"RHEL 8+"}),"\n",(0,t.jsx)(n.li,{children:"SLES 15+"}),"\n",(0,t.jsx)(n.li,{children:"Ubuntu 20.04+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Windows"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Windows 10+ (x64 only)"}),"\n",(0,t.jsx)(n.li,{children:"Windows Server 2012+ (x64 only)"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"macOS"})," 10.15+"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"hardware-requirements",children:"Hardware requirements"}),"\n",(0,t.jsx)(n.p,{children:"Suggested requirements can be found below."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Network"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Memory"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"CPU cores"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"4"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet archive"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"128 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Goerli"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Goerli archive"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"4"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Gnosis"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Energy Web"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Volta"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]})]})]}),"\n",(0,t.jsx)(n.h3,{id:"disk-requirements",children:"Disk requirements"}),"\n",(0,t.jsxs)(n.p,{children:["Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as NVMe or a fast SSD. However, ",(0,t.jsx)(n.strong,{children:"2\nTB is recommended"})," to minimize maintenance requirements. To choose a specific disk model, we recommend\nchecking out ",(0,t.jsx)(n.a,{href:"https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good",children:"this guide"}),".",(0,t.jsx)(n.br,{}),"\n","Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking.\nNonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic."]}),"\n",(0,t.jsx)(n.h4,{id:"database-growth",children:"Database growth"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind requires approximately 898 GB of disk space (as of Jan 2024) after a fresh Ethereum Mainnet sync using default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to bring it back to its optimal database size. For more info on managing node disk usage growth, see ",(0,t.jsx)(n.a,{href:"/1.25.4/fundamentals/database#reducing-database-size",children:"how to reduce database size"}),".",(0,t.jsx)(n.br,{}),"\n","Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements."]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.25.4/fundamentals/database#database-size",children:"Database size"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"disk-speed",children:"Disk speed"}),"\n",(0,t.jsx)(n.p,{children:"The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully."}),"\n",(0,t.jsx)(n.h4,{id:"sync-modes-and-disk-usage",children:"Sync modes and disk usage"}),"\n",(0,t.jsx)(n.p,{children:"A node can be run using different syncing options, and each option has different characteristics of disk space usage."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Archive node."})," This mode stores the full historical state for all blocks. As of July 2023, an archive node requires at least 14 TB of disk space, and it grows by approximately 60 GB per week."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Ancient barriers."})," Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Non-validator mode."})," This mode drops all historical receipts and bodies, but it cannot be used for validation."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.25.4/fundamentals/sync",children:"sync modes"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>a});var t=s(6540);const r={},i=t.createContext(r);function d(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2501],{3280:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var t=s(4848),r=s(8453);const i={title:"System requirements",sidebar_position:1},d=void 0,a={id:"get-started/system-requirements",title:"System requirements",description:"Supported operating systems",source:"@site/versioned_docs/version-1.25.4/get-started/system-requirements.md",sourceDirName:"get-started",slug:"/get-started/system-requirements",permalink:"/1.25.4/get-started/system-requirements",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/get-started/system-requirements.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"System requirements",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/1.25.4/"},next:{title:"Installing Nethermind",permalink:"/1.25.4/get-started/installing-nethermind"}},o={},l=[{value:"Supported operating systems",id:"supported-operating-systems",level:2},{value:"Hardware requirements",id:"hardware-requirements",level:2},{value:"Disk requirements",id:"disk-requirements",level:3},{value:"Database growth",id:"database-growth",level:4},{value:"Disk speed",id:"disk-speed",level:4},{value:"Sync modes and disk usage",id:"sync-modes-and-disk-usage",level:4}];function c(e){const n={a:"a",br:"br",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"supported-operating-systems",children:"Supported operating systems"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind supports a broad range of modern ",(0,t.jsx)(n.em,{children:"64-bit"})," operating systems including but not limited to:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Linux"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Alpine 3.17+"}),"\n",(0,t.jsx)(n.li,{children:"CentOS Stream 9+"}),"\n",(0,t.jsx)(n.li,{children:"Debian 11+"}),"\n",(0,t.jsx)(n.li,{children:"Fedora 37+"}),"\n",(0,t.jsx)(n.li,{children:"openSUSE 15+"}),"\n",(0,t.jsx)(n.li,{children:"RHEL 8+"}),"\n",(0,t.jsx)(n.li,{children:"SLES 15+"}),"\n",(0,t.jsx)(n.li,{children:"Ubuntu 20.04+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Windows"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Windows 10+ (x64 only)"}),"\n",(0,t.jsx)(n.li,{children:"Windows Server 2012+ (x64 only)"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"macOS"})," 10.15+"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"hardware-requirements",children:"Hardware requirements"}),"\n",(0,t.jsx)(n.p,{children:"Suggested requirements can be found below."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Network"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Memory"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"CPU cores"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"4"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet archive"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"128 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Goerli"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Goerli archive"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"4"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Gnosis"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Energy Web"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Volta"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]})]})]}),"\n",(0,t.jsx)(n.h3,{id:"disk-requirements",children:"Disk requirements"}),"\n",(0,t.jsxs)(n.p,{children:["Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as NVMe or a fast SSD. However, ",(0,t.jsx)(n.strong,{children:"2\nTB is recommended"})," to minimize maintenance requirements. To choose a specific disk model, we recommend\nchecking out ",(0,t.jsx)(n.a,{href:"https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good",children:"this guide"}),".",(0,t.jsx)(n.br,{}),"\n","Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking.\nNonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic."]}),"\n",(0,t.jsx)(n.h4,{id:"database-growth",children:"Database growth"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind requires approximately 898 GB of disk space (as of Jan 2024) after a fresh Ethereum Mainnet sync using default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to bring it back to its optimal database size. For more info on managing node disk usage growth, see ",(0,t.jsx)(n.a,{href:"/1.25.4/fundamentals/database#reducing-database-size",children:"how to reduce database size"}),".",(0,t.jsx)(n.br,{}),"\n","Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements."]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.25.4/fundamentals/database#database-size",children:"Database size"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"disk-speed",children:"Disk speed"}),"\n",(0,t.jsx)(n.p,{children:"The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully."}),"\n",(0,t.jsx)(n.h4,{id:"sync-modes-and-disk-usage",children:"Sync modes and disk usage"}),"\n",(0,t.jsx)(n.p,{children:"A node can be run using different syncing options, and each option has different characteristics of disk space usage."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Archive node."})," This mode stores the full historical state for all blocks. As of July 2023, an archive node requires at least 14 TB of disk space, and it grows by approximately 60 GB per week."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Ancient barriers."})," Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Non-validator mode."})," This mode drops all historical receipts and bodies, but it cannot be used for validation."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.25.4/fundamentals/sync",children:"sync modes"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>a});var t=s(6540);const r={},i=t.createContext(r);function d(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/27cc9e29.59789ac4.js b/assets/js/27cc9e29.1ee2a7c3.js similarity index 99% rename from assets/js/27cc9e29.59789ac4.js rename to assets/js/27cc9e29.1ee2a7c3.js index 427570871..010581cd1 100644 --- a/assets/js/27cc9e29.59789ac4.js +++ b/assets/js/27cc9e29.1ee2a7c3.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5773],{7944:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),a=t(8453),s=t(1470),l=t(9365);const o={title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},i=void 0,c={id:"interacting/json-rpc-ns/web3",title:"web3 namespace",description:"web3_clientVersion",source:"@site/docs/interacting/json-rpc-ns/web3.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/web3",permalink:"/next/interacting/json-rpc-ns/web3",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/web3.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:10,frontMatter:{title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"txpool",permalink:"/next/interacting/json-rpc-ns/txpool"},next:{title:"Metrics",permalink:"/next/monitoring/metrics/"}},u={},d=[{value:"web3_clientVersion",id:"web3_clientversion",level:3},{value:"web3_sha3",id:"web3_sha3",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"web3_clientversion",children:"web3_clientVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns the current client version."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_clientVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"web3_sha3",children:"web3_sha3"}),"\n",(0,r.jsx)(n.p,{children:"Returns Keccak of the given data."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_sha3",\n "params": [data]\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const a={tabItem:"tabItem_Ymn6"};var s=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>y});var r=t(6540),a=t(4164),s=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const a=(0,l.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(s),(0,r.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(a.location.search);n.set(s,e),a.replace({...a.location,search:n.toString()})}),[s,a])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s}))),[c,d]=b({queryString:t,groupId:a}),[m,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,s]=(0,u.Dv)(t);return[a,(0,r.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:a}),v=(()=>{const e=c??m;return h({value:e,tabValues:s})?e:null})();(0,o.A)((()=>{v&&i(v)}),[v]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)}),[d,f,s]),tabValues:s}}var f=t(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function x(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),a=o[t].value;a!==r&&(c(n),l(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...s,className:(0,a.A)("tabs__item",v.tabItem,s?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:s}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===s));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function w(e){const n=m(e);return(0,j.jsxs)("div",{className:(0,a.A)("tabs-container",v.tabList),children:[(0,j.jsx)(x,{...n,...e}),(0,j.jsx)(g,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,j.jsx)(w,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const a={},s=r.createContext(a);function l(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5773],{7944:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),a=t(8453),s=t(1470),l=t(9365);const o={title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},i=void 0,c={id:"interacting/json-rpc-ns/web3",title:"web3 namespace",description:"web3_clientVersion",source:"@site/docs/interacting/json-rpc-ns/web3.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/web3",permalink:"/next/interacting/json-rpc-ns/web3",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/web3.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:10,frontMatter:{title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"txpool",permalink:"/next/interacting/json-rpc-ns/txpool"},next:{title:"Metrics",permalink:"/next/monitoring/metrics/"}},u={},d=[{value:"web3_clientVersion",id:"web3_clientversion",level:3},{value:"web3_sha3",id:"web3_sha3",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"web3_clientversion",children:"web3_clientVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns the current client version."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_clientVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"web3_sha3",children:"web3_sha3"}),"\n",(0,r.jsx)(n.p,{children:"Returns Keccak of the given data."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_sha3",\n "params": [data]\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const a={tabItem:"tabItem_Ymn6"};var s=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>y});var r=t(6540),a=t(4164),s=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const a=(0,l.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(s),(0,r.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(a.location.search);n.set(s,e),a.replace({...a.location,search:n.toString()})}),[s,a])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s}))),[c,d]=b({queryString:t,groupId:a}),[m,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,s]=(0,u.Dv)(t);return[a,(0,r.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:a}),v=(()=>{const e=c??m;return h({value:e,tabValues:s})?e:null})();(0,o.A)((()=>{v&&i(v)}),[v]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)}),[d,f,s]),tabValues:s}}var f=t(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function x(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),a=o[t].value;a!==r&&(c(n),l(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...s,className:(0,a.A)("tabs__item",v.tabItem,s?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:s}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===s));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function w(e){const n=m(e);return(0,j.jsxs)("div",{className:(0,a.A)("tabs-container",v.tabList),children:[(0,j.jsx)(x,{...n,...e}),(0,j.jsx)(g,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,j.jsx)(w,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const a={},s=r.createContext(a);function l(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/294a21b2.48ddef2a.js b/assets/js/294a21b2.529e96e5.js similarity index 99% rename from assets/js/294a21b2.48ddef2a.js rename to assets/js/294a21b2.529e96e5.js index c6e977626..d00a66f4e 100644 --- a/assets/js/294a21b2.48ddef2a.js +++ b/assets/js/294a21b2.529e96e5.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9694],{1190:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var t=i(4848),r=i(8453);const o={title:"Aura-based validators",sidebar_position:0},s=void 0,a={id:"validators/aura",title:"Aura-based validators",description:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.",source:"@site/docs/validators/aura.md",sourceDirName:"validators",slug:"/validators/aura",permalink:"/next/validators/aura",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/validators/aura.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Aura-based validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Validators",permalink:"/next/validators/"},next:{title:"Building from source",permalink:"/next/developers/building-from-source"}},c={},d=[{value:"Configuring a Docker container",id:"configuring-a-docker-container",level:2},{value:"Configuring keyfile",id:"configuring-keyfile",level:2},{value:"Configuration settings",id:"configuration-settings",level:2},{value:"Running the validator",id:"running-the-validator",level:2}];function l(e){const n={admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example."}),"\n",(0,t.jsx)(n.admonition,{type:"info",children:(0,t.jsx)(n.p,{children:"Your machine's clock has to be synchronized. Otherwise, you might miss block sealing. By default, the block time is set to 5 seconds."})}),"\n",(0,t.jsx)(n.h2,{id:"configuring-a-docker-container",children:"Configuring a Docker container"}),"\n",(0,t.jsx)(n.p,{children:"The example below shows how to configure a Docker container for an Aura-based validator on the Energy Web chain:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n nethermind-validator:\n image: nethermind/nethermind:latest\n container_name: nethermind-validator\n restart: unless-stopped\n ports:\n - 8545:8545\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n environment:\n - NETHERMIND_CONFIG=energyweb\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,t.jsx)(n.h2,{id:"configuring-keyfile",children:"Configuring keyfile"}),"\n",(0,t.jsxs)(n.p,{children:["Make sure that the keyfile name contains the public key (address). Otherwise, Nethermind doesn't recognize it as such.\nFor instance, a keyfile can be named ",(0,t.jsx)(n.code,{children:"key-0x1234567890123456789012345678901234567890"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["The keyfile must be stored in the ",(0,t.jsx)(n.code,{children:"keystore"})," directory located in the Nethermind base data directory."]}),"\n",(0,t.jsx)(n.h2,{id:"configuration-settings",children:"Configuration settings"}),"\n",(0,t.jsx)(n.p,{children:"Here is an example of recommended settings for a validator. The most convenient way to configure these settings is either defining them in the configuration file or passing them as environment variables."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"Init.IsMining"}),": ",(0,t.jsx)(n.code,{children:"true"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"Init.MemoryHint"}),": Can be left unspecified. It's recommended to configure it accordingly to the machine specification(for Eneergy Web, 768000000 is enough)."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"EthStats"})," namespace parameters if you want to report node status to Ethstats for your network."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"Metrics"})," namespace parameters to enable node monitoring."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"KeyStore.PasswordFiles"}),": The path to the file containing the password for the mining private key."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"KeyStore.UnlockAccounts"}),": An array of accounts. Provide the miner public address here."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"}),": The miner public address should be provided here as well."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"Aura.ForceSealing"}),": ",(0,t.jsx)(n.code,{children:"true"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"Merge.Enabled"}),": ",(0,t.jsx)(n.code,{children:"false"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"Here's an example of above settings in the Energy Web configuration file:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",metastring:'title="energyweb.cfg"',children:'{\n "Init": {\n "ChainSpecPath": "chainspec/energyweb.json",\n "GenesisHash": "0x0b6d3e680af2fc525392c720666cce58e3d8e6fe75ba4b48cb36bcc69039229b",\n "BaseDbPath": "nethermind_db/energyweb",\n "LogFileName": "energyweb.log",\n "MemoryHint": 768000000\n },\n "Sync": {\n "FastSync": true,\n "PivotNumber": 26940000,\n "PivotHash": "0x8835983de9578a4355313afd2a43d8eada6f2a4ddbd9c51da103e0d5f53c4d8b",\n "PivotTotalDifficulty": "9167206964850082205703311924211835616257898274",\n "FastBlocks": true,\n "UseGethLimitsInFastBlocks": false,\n "FastSyncCatchUpHeightDelta": 10000000000\n },\n "EthStats": {\n "Enabled": true,\n "Name": "Nethermind Energy Web",\n "Secret": "secret...",\n "Url": "ws://localhost:3000/api"\n },\n "Metrics": {\n "Enabled": true,\n "NodeName": "Energy Web",\n "PushGatewayUrl": "http://localhost:9091/metrics"\n },\n "Mining": {\n "MinGasPrice": 1\n },\n "Merge": {\n "Enabled": false\n },\n "Aura": {\n "ForceSealing": true\n },\n "KeyStore": {\n "PasswordFiles": ["keystore/password"],\n "UnlockAccounts": ["0x..."],\n "BlockAuthorAccount": "0x..." \n },\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"running-the-validator",children:"Running the validator"}),"\n",(0,t.jsxs)(n.p,{children:["The above Docker Compose file can be run from the directory the ",(0,t.jsx)(n.code,{children:"docker-compose.yml"})," is located in as follows:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker compose up -d\n"})}),"\n",(0,t.jsx)(n.p,{children:"To check the logs and verify the sealing of blocks, run:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker compose logs -f nethermind-validator\n"})})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>a});var t=i(6540);const r={},o=t.createContext(r);function s(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),t.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9694],{1190:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var t=i(4848),r=i(8453);const o={title:"Aura-based validators",sidebar_position:0},s=void 0,a={id:"validators/aura",title:"Aura-based validators",description:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.",source:"@site/docs/validators/aura.md",sourceDirName:"validators",slug:"/validators/aura",permalink:"/next/validators/aura",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/validators/aura.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Aura-based validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Validators",permalink:"/next/validators/"},next:{title:"Building from source",permalink:"/next/developers/building-from-source"}},c={},d=[{value:"Configuring a Docker container",id:"configuring-a-docker-container",level:2},{value:"Configuring keyfile",id:"configuring-keyfile",level:2},{value:"Configuration settings",id:"configuration-settings",level:2},{value:"Running the validator",id:"running-the-validator",level:2}];function l(e){const n={admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example."}),"\n",(0,t.jsx)(n.admonition,{type:"info",children:(0,t.jsx)(n.p,{children:"Your machine's clock has to be synchronized. Otherwise, you might miss block sealing. By default, the block time is set to 5 seconds."})}),"\n",(0,t.jsx)(n.h2,{id:"configuring-a-docker-container",children:"Configuring a Docker container"}),"\n",(0,t.jsx)(n.p,{children:"The example below shows how to configure a Docker container for an Aura-based validator on the Energy Web chain:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n nethermind-validator:\n image: nethermind/nethermind:latest\n container_name: nethermind-validator\n restart: unless-stopped\n ports:\n - 8545:8545\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n environment:\n - NETHERMIND_CONFIG=energyweb\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,t.jsx)(n.h2,{id:"configuring-keyfile",children:"Configuring keyfile"}),"\n",(0,t.jsxs)(n.p,{children:["Make sure that the keyfile name contains the public key (address). Otherwise, Nethermind doesn't recognize it as such.\nFor instance, a keyfile can be named ",(0,t.jsx)(n.code,{children:"key-0x1234567890123456789012345678901234567890"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["The keyfile must be stored in the ",(0,t.jsx)(n.code,{children:"keystore"})," directory located in the Nethermind base data directory."]}),"\n",(0,t.jsx)(n.h2,{id:"configuration-settings",children:"Configuration settings"}),"\n",(0,t.jsx)(n.p,{children:"Here is an example of recommended settings for a validator. The most convenient way to configure these settings is either defining them in the configuration file or passing them as environment variables."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"Init.IsMining"}),": ",(0,t.jsx)(n.code,{children:"true"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"Init.MemoryHint"}),": Can be left unspecified. It's recommended to configure it accordingly to the machine specification(for Eneergy Web, 768000000 is enough)."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"EthStats"})," namespace parameters if you want to report node status to Ethstats for your network."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"Metrics"})," namespace parameters to enable node monitoring."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"KeyStore.PasswordFiles"}),": The path to the file containing the password for the mining private key."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"KeyStore.UnlockAccounts"}),": An array of accounts. Provide the miner public address here."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"}),": The miner public address should be provided here as well."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"Aura.ForceSealing"}),": ",(0,t.jsx)(n.code,{children:"true"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"Merge.Enabled"}),": ",(0,t.jsx)(n.code,{children:"false"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"Here's an example of above settings in the Energy Web configuration file:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",metastring:'title="energyweb.cfg"',children:'{\n "Init": {\n "ChainSpecPath": "chainspec/energyweb.json",\n "GenesisHash": "0x0b6d3e680af2fc525392c720666cce58e3d8e6fe75ba4b48cb36bcc69039229b",\n "BaseDbPath": "nethermind_db/energyweb",\n "LogFileName": "energyweb.log",\n "MemoryHint": 768000000\n },\n "Sync": {\n "FastSync": true,\n "PivotNumber": 26940000,\n "PivotHash": "0x8835983de9578a4355313afd2a43d8eada6f2a4ddbd9c51da103e0d5f53c4d8b",\n "PivotTotalDifficulty": "9167206964850082205703311924211835616257898274",\n "FastBlocks": true,\n "UseGethLimitsInFastBlocks": false,\n "FastSyncCatchUpHeightDelta": 10000000000\n },\n "EthStats": {\n "Enabled": true,\n "Name": "Nethermind Energy Web",\n "Secret": "secret...",\n "Url": "ws://localhost:3000/api"\n },\n "Metrics": {\n "Enabled": true,\n "NodeName": "Energy Web",\n "PushGatewayUrl": "http://localhost:9091/metrics"\n },\n "Mining": {\n "MinGasPrice": 1\n },\n "Merge": {\n "Enabled": false\n },\n "Aura": {\n "ForceSealing": true\n },\n "KeyStore": {\n "PasswordFiles": ["keystore/password"],\n "UnlockAccounts": ["0x..."],\n "BlockAuthorAccount": "0x..." \n },\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"running-the-validator",children:"Running the validator"}),"\n",(0,t.jsxs)(n.p,{children:["The above Docker Compose file can be run from the directory the ",(0,t.jsx)(n.code,{children:"docker-compose.yml"})," is located in as follows:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker compose up -d\n"})}),"\n",(0,t.jsx)(n.p,{children:"To check the logs and verify the sealing of blocks, run:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker compose logs -f nethermind-validator\n"})})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>a});var t=i(6540);const r={},o=t.createContext(r);function s(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),t.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2a2ecad8.19c87ff1.js b/assets/js/2a2ecad8.6edc89bd.js similarity index 99% rename from assets/js/2a2ecad8.19c87ff1.js rename to assets/js/2a2ecad8.6edc89bd.js index 4041a34c9..f5faa3ffc 100644 --- a/assets/js/2a2ecad8.19c87ff1.js +++ b/assets/js/2a2ecad8.6edc89bd.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4431],{4766:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>h,toc:()=>c});var i=t(4848),s=t(8453);const r={title:"Migrating from Geth",sidebar_position:4},o=void 0,h={id:"get-started/migrating-from-geth",title:"Migrating from Geth",description:"This guide will walk you through all the steps required for a seamless and quick transition.",source:"@site/versioned_docs/version-1.27.0/get-started/migrating-from-geth.md",sourceDirName:"get-started",slug:"/get-started/migrating-from-geth",permalink:"/1.27.0/get-started/migrating-from-geth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/get-started/migrating-from-geth.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"Migrating from Geth",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Consensus clients",permalink:"/1.27.0/get-started/consensus-clients"},next:{title:"Configuration",permalink:"/1.27.0/fundamentals/configuration"}},d={},c=[{value:"Option 1: Sync Nethermind next to Geth",id:"option-1",level:2},{value:"Option 2: Sync Nethermind using Sedge next to Geth",id:"option-2",level:2},{value:"Option 3: Remove Geth and sync Nethermind",id:"option-3",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This guide will walk you through all the steps required for a seamless and quick transition."}),"\n",(0,i.jsxs)(n.p,{children:["First, ensure ",(0,i.jsx)(n.em,{children:"the disk has enough space"}),". The most secure way is having a Nethermind synced on the same machine as Geth without shutting Geth down. That allows you to check whether Nethermind is syncing properly, verify whether everything works as expected, and reduce node downtime to a bare minimum. This is a recommended approach for any public JSON-RPC provider or a validator."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the disk has enough space, ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"})," or ",(0,i.jsx)(n.a,{href:"#option-2",children:"option 2"})," are the recommended choices."]}),"\n",(0,i.jsx)(n.li,{children:"If there is not enough disk space, and downtime is not an option, we recommend either extending the disk or, if not possible, hosting Nethermind on another machine, syncing it, and whenever it completes, moving everything validator-related to that machine, and abandoning the first one."}),"\n",(0,i.jsxs)(n.li,{children:["If downtime of around 12 hours or more is not a problem, see the ",(0,i.jsx)(n.a,{href:"#option-3",children:"option 3"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"option-1",children:"Option 1: Sync Nethermind next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:["First, ",(0,i.jsx)(n.a,{href:"/1.27.0/get-started/installing-nethermind",children:"install Nethermind"})," and a ",(0,i.jsx)(n.a,{href:"/1.27.0/get-started/consensus-clients",children:"consensus client"})," of your choice."]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"If you choose the same consensus client for Nethermind that is already being used with Geth, ensure their settings, such as data directories, do not interfere."}),"\n",(0,i.jsx)(n.li,{children:"Ensure the network ports of the consensus client paired with Nethermind and the one paired with Geth do not interfere with each other."}),"\n",(0,i.jsxs)(n.li,{children:["Ensure the JSON-RPC port, Engine API port, and the P2P networking ports of Nethermind are different from the ones used by Geth. These ports are set using the following command line options:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort "})}),"\n"]}),"\n"]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. To check the sync status, use the ",(0,i.jsx)(n.a,{href:"/1.27.0/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method. When it returns ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind is considered fully synced with all block bodies and receipts needed to work properly as a validator. Another option to monitor the sync is a ",(0,i.jsx)(n.a,{href:"/1.27.0/monitoring/health-check",children:"health check"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Once Nethermind is synced, shut down both Geth and Nethermind, along with its paired consensus client. Then, restart Nethermind using the ports assigned for and the JWT secret used by Geth before. Ensure no warnings or errors are present in the logs of both Nethermind and the consensus client. Also, check if Nethermind is following the chain properly. If everything is alright, you can remove Geth and the consensus client paired with Nethermind previously along with their data."}),"\n",(0,i.jsx)(n.h2,{id:"option-2",children:"Option 2: Sync Nethermind using Sedge next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"})," is a setup tool for PoS validators and nodes that runs on Linux and macOS."]}),"\n",(0,i.jsxs)(n.p,{children:["This option is similar to the ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"}),", but Sedge automatically takes care of conflicting settings making the entire process much easier."]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsx)(n.p,{children:"You can add a flag to Sedge as follows. For instance:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["For the execution client, ",(0,i.jsx)(n.code,{children:"--el-extra-flag JsonRpc.Port=8546"})]}),"\n",(0,i.jsxs)(n.li,{children:["For the consensus client, ",(0,i.jsx)(n.code,{children:"--cl-extra-flag rpc-port=4001"})]}),"\n"]})]}),"\n",(0,i.jsxs)(n.p,{children:["Once Nethermind is synced, you can remove extra flags if any from the ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," and restart the node as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"docker compose stop execution\ndocker compose up -d execution\n"})}),"\n",(0,i.jsx)(n.h2,{id:"option-3",children:"Option 3: Remove Geth and sync Nethermind"}),"\n",(0,i.jsx)(n.p,{children:"This is the simplest option as it doesn't require configuration adjustments. However, the node will be down until Nethermind is syncing."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Shut down and remove Geth along with its data."}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/1.27.0/get-started/installing-nethermind",children:"Install Nethermind"})}),"\n",(0,i.jsx)(n.li,{children:"Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the ",(0,i.jsx)(n.a,{href:"/1.27.0/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method or the ",(0,i.jsx)(n.a,{href:"/1.27.0/monitoring/health-check",children:"health check"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>h});var i=t(6540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function h(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4431],{4766:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>h,toc:()=>c});var i=t(4848),s=t(8453);const r={title:"Migrating from Geth",sidebar_position:4},o=void 0,h={id:"get-started/migrating-from-geth",title:"Migrating from Geth",description:"This guide will walk you through all the steps required for a seamless and quick transition.",source:"@site/versioned_docs/version-1.27.0/get-started/migrating-from-geth.md",sourceDirName:"get-started",slug:"/get-started/migrating-from-geth",permalink:"/1.27.0/get-started/migrating-from-geth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/get-started/migrating-from-geth.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"Migrating from Geth",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Consensus clients",permalink:"/1.27.0/get-started/consensus-clients"},next:{title:"Configuration",permalink:"/1.27.0/fundamentals/configuration"}},d={},c=[{value:"Option 1: Sync Nethermind next to Geth",id:"option-1",level:2},{value:"Option 2: Sync Nethermind using Sedge next to Geth",id:"option-2",level:2},{value:"Option 3: Remove Geth and sync Nethermind",id:"option-3",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This guide will walk you through all the steps required for a seamless and quick transition."}),"\n",(0,i.jsxs)(n.p,{children:["First, ensure ",(0,i.jsx)(n.em,{children:"the disk has enough space"}),". The most secure way is having a Nethermind synced on the same machine as Geth without shutting Geth down. That allows you to check whether Nethermind is syncing properly, verify whether everything works as expected, and reduce node downtime to a bare minimum. This is a recommended approach for any public JSON-RPC provider or a validator."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the disk has enough space, ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"})," or ",(0,i.jsx)(n.a,{href:"#option-2",children:"option 2"})," are the recommended choices."]}),"\n",(0,i.jsx)(n.li,{children:"If there is not enough disk space, and downtime is not an option, we recommend either extending the disk or, if not possible, hosting Nethermind on another machine, syncing it, and whenever it completes, moving everything validator-related to that machine, and abandoning the first one."}),"\n",(0,i.jsxs)(n.li,{children:["If downtime of around 12 hours or more is not a problem, see the ",(0,i.jsx)(n.a,{href:"#option-3",children:"option 3"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"option-1",children:"Option 1: Sync Nethermind next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:["First, ",(0,i.jsx)(n.a,{href:"/1.27.0/get-started/installing-nethermind",children:"install Nethermind"})," and a ",(0,i.jsx)(n.a,{href:"/1.27.0/get-started/consensus-clients",children:"consensus client"})," of your choice."]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"If you choose the same consensus client for Nethermind that is already being used with Geth, ensure their settings, such as data directories, do not interfere."}),"\n",(0,i.jsx)(n.li,{children:"Ensure the network ports of the consensus client paired with Nethermind and the one paired with Geth do not interfere with each other."}),"\n",(0,i.jsxs)(n.li,{children:["Ensure the JSON-RPC port, Engine API port, and the P2P networking ports of Nethermind are different from the ones used by Geth. These ports are set using the following command line options:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort "})}),"\n"]}),"\n"]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. To check the sync status, use the ",(0,i.jsx)(n.a,{href:"/1.27.0/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method. When it returns ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind is considered fully synced with all block bodies and receipts needed to work properly as a validator. Another option to monitor the sync is a ",(0,i.jsx)(n.a,{href:"/1.27.0/monitoring/health-check",children:"health check"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Once Nethermind is synced, shut down both Geth and Nethermind, along with its paired consensus client. Then, restart Nethermind using the ports assigned for and the JWT secret used by Geth before. Ensure no warnings or errors are present in the logs of both Nethermind and the consensus client. Also, check if Nethermind is following the chain properly. If everything is alright, you can remove Geth and the consensus client paired with Nethermind previously along with their data."}),"\n",(0,i.jsx)(n.h2,{id:"option-2",children:"Option 2: Sync Nethermind using Sedge next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"})," is a setup tool for PoS validators and nodes that runs on Linux and macOS."]}),"\n",(0,i.jsxs)(n.p,{children:["This option is similar to the ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"}),", but Sedge automatically takes care of conflicting settings making the entire process much easier."]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsx)(n.p,{children:"You can add a flag to Sedge as follows. For instance:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["For the execution client, ",(0,i.jsx)(n.code,{children:"--el-extra-flag JsonRpc.Port=8546"})]}),"\n",(0,i.jsxs)(n.li,{children:["For the consensus client, ",(0,i.jsx)(n.code,{children:"--cl-extra-flag rpc-port=4001"})]}),"\n"]})]}),"\n",(0,i.jsxs)(n.p,{children:["Once Nethermind is synced, you can remove extra flags if any from the ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," and restart the node as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"docker compose stop execution\ndocker compose up -d execution\n"})}),"\n",(0,i.jsx)(n.h2,{id:"option-3",children:"Option 3: Remove Geth and sync Nethermind"}),"\n",(0,i.jsx)(n.p,{children:"This is the simplest option as it doesn't require configuration adjustments. However, the node will be down until Nethermind is syncing."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Shut down and remove Geth along with its data."}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/1.27.0/get-started/installing-nethermind",children:"Install Nethermind"})}),"\n",(0,i.jsx)(n.li,{children:"Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the ",(0,i.jsx)(n.a,{href:"/1.27.0/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method or the ",(0,i.jsx)(n.a,{href:"/1.27.0/monitoring/health-check",children:"health check"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>h});var i=t(6540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function h(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2a65532c.c1187f2f.js b/assets/js/2a65532c.01178840.js similarity index 99% rename from assets/js/2a65532c.c1187f2f.js rename to assets/js/2a65532c.01178840.js index 009daca2a..4af6de168 100644 --- a/assets/js/2a65532c.c1187f2f.js +++ b/assets/js/2a65532c.01178840.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[686],{3596:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const t={title:"parity namespace",sidebar_label:"parity",sidebar_position:5},d=void 0,a={id:"interacting/json-rpc-ns/parity",title:"parity namespace",description:"parity_clearEngineSigner",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/parity.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/parity",permalink:"/1.25.4/interacting/json-rpc-ns/parity",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/parity.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:5,frontMatter:{title:"parity namespace",sidebar_label:"parity",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"net",permalink:"/1.25.4/interacting/json-rpc-ns/net"},next:{title:"personal",permalink:"/1.25.4/interacting/json-rpc-ns/personal"}},o={},h=[{value:"parity_clearEngineSigner",id:"parity_clearenginesigner",level:3},{value:"parity_enode",id:"parity_enode",level:3},{value:"parity_getBlockReceipts",id:"parity_getblockreceipts",level:3},{value:"parity_netPeers",id:"parity_netpeers",level:3},{value:"parity_pendingTransactions",id:"parity_pendingtransactions",level:3},{value:"parity_setEngineSigner",id:"parity_setenginesigner",level:3},{value:"parity_setEngineSignerSecret",id:"parity_setenginesignersecret",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"parity_clearenginesigner",children:"parity_clearEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_clearEngineSigner",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_enode",children:"parity_enode"}),"\n",(0,r.jsx)(n.p,{children:"Returns the node enode URI."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_enode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_getblockreceipts",children:"parity_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_netpeers",children:"parity_netPeers"}),"\n",(0,r.jsx)(n.p,{children:"Returns connected peers. Peers with non-empty protocols have completed handshake."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_netPeers",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"active"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"connected"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"max"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"peers"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"caps"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"network"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"localAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"remoteAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"version"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_pendingtransactions",children:"parity_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given sender address."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_pendingTransactions",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"condition"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creates"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"publicKey"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prefixedBytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"raw"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"standardV"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesigner",children:"parity_setEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"password"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSigner",\n "params": [address, password]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesignersecret",children:"parity_setEngineSignerSecret"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"privateKey"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSignerSecret",\n "params": [privateKey]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),t=s(205),d=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function p(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[c,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:s,groupId:i}),[p,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),m=(()=>{const e=a??p;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{m&&d(m)}),[m]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,l]),tabValues:l}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),i=t[s].value;i!==r&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",m.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=p(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",m.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,g.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>t});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[686],{3596:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const t={title:"parity namespace",sidebar_label:"parity",sidebar_position:5},d=void 0,a={id:"interacting/json-rpc-ns/parity",title:"parity namespace",description:"parity_clearEngineSigner",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/parity.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/parity",permalink:"/1.25.4/interacting/json-rpc-ns/parity",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/parity.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:5,frontMatter:{title:"parity namespace",sidebar_label:"parity",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"net",permalink:"/1.25.4/interacting/json-rpc-ns/net"},next:{title:"personal",permalink:"/1.25.4/interacting/json-rpc-ns/personal"}},o={},h=[{value:"parity_clearEngineSigner",id:"parity_clearenginesigner",level:3},{value:"parity_enode",id:"parity_enode",level:3},{value:"parity_getBlockReceipts",id:"parity_getblockreceipts",level:3},{value:"parity_netPeers",id:"parity_netpeers",level:3},{value:"parity_pendingTransactions",id:"parity_pendingtransactions",level:3},{value:"parity_setEngineSigner",id:"parity_setenginesigner",level:3},{value:"parity_setEngineSignerSecret",id:"parity_setenginesignersecret",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"parity_clearenginesigner",children:"parity_clearEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_clearEngineSigner",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_enode",children:"parity_enode"}),"\n",(0,r.jsx)(n.p,{children:"Returns the node enode URI."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_enode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_getblockreceipts",children:"parity_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_netpeers",children:"parity_netPeers"}),"\n",(0,r.jsx)(n.p,{children:"Returns connected peers. Peers with non-empty protocols have completed handshake."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_netPeers",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"active"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"connected"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"max"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"peers"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"caps"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"network"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"localAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"remoteAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"version"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_pendingtransactions",children:"parity_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given sender address."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_pendingTransactions",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"condition"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creates"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"publicKey"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prefixedBytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"raw"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"standardV"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesigner",children:"parity_setEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"password"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSigner",\n "params": [address, password]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesignersecret",children:"parity_setEngineSignerSecret"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"privateKey"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSignerSecret",\n "params": [privateKey]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),t=s(205),d=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function p(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[c,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:s,groupId:i}),[p,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),m=(()=>{const e=a??p;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{m&&d(m)}),[m]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,l]),tabValues:l}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),i=t[s].value;i!==r&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",m.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=p(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",m.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,g.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>t});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2a7b7b7c.b590ef4a.js b/assets/js/2a7b7b7c.30f6391b.js similarity index 99% rename from assets/js/2a7b7b7c.b590ef4a.js rename to assets/js/2a7b7b7c.30f6391b.js index a05f0eafa..f38ca2865 100644 --- a/assets/js/2a7b7b7c.b590ef4a.js +++ b/assets/js/2a7b7b7c.30f6391b.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2270],{2579:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),s=t(8453);const i={title:"JSON-RPC server",sidebar_position:0},r=void 0,c={id:"interacting/json-rpc-server",title:"JSON-RPC server",description:"Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over HTTP, WebSocket, and IPC socket transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the JSON-RPC configuration options.",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-server.md",sourceDirName:"interacting",slug:"/interacting/json-rpc-server",permalink:"/1.26.0/interacting/json-rpc-server",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-server.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"JSON-RPC server",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Private networks",permalink:"/1.26.0/fundamentals/private-networks"},next:{title:"admin",permalink:"/1.26.0/interacting/json-rpc-ns/admin"}},a={},d=[{value:"Transports",id:"transports",level:2},{value:"HTTP",id:"http",level:3},{value:"WebSocket",id:"websocket",level:3},{value:"IPC socket",id:"ipc-socket",level:3},{value:"Engine API",id:"engine-api",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over ",(0,o.jsx)(n.a,{href:"#http",children:"HTTP"}),", ",(0,o.jsx)(n.a,{href:"#websocket",children:"WebSocket"}),", and ",(0,o.jsx)(n.a,{href:"#ipc-socket",children:"IPC socket"})," transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the ",(0,o.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#jsonrpc",children:"JSON-RPC configuration options"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The JSON-RPC API methods are grouped into several categories (namespaces) depending on their purpose. All API method names are composed of the namespace and the actual method name in that namespace. For instance, the ",(0,o.jsx)(n.code,{children:"eth_call"})," method belongs to the ",(0,o.jsx)(n.code,{children:"eth"})," namespace. See the sidebar for all supported namespaces and methods."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["Not all of the JSON-RPC namespaces are enabled by default. Instead, they must be enabled explicitly with the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})," command line option. Otherwise, error code ",(0,o.jsx)(n.code,{children:"-32600"})," is returned. The enabled namespaces can be found in the configuration file specified with the ",(0,o.jsx)(n.code,{children:"--config"})," command line option."]})}),"\n",(0,o.jsx)(n.h2,{id:"transports",children:"Transports"}),"\n",(0,o.jsxs)(n.admonition,{type:"tip",children:[(0,o.jsx)(n.p,{children:"The right choice of transport depends on the specific use case."}),(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"HTTP is a familiar and idempotent transport that closes connections between requests and can, therefore, have lower overall overhead for a relatively low number of requests."}),"\n",(0,o.jsx)(n.li,{children:"WebSocket provides a continuous open channel that enables event subscriptions and streaming and handles large volumes of requests with more negligible per-message overhead."}),"\n",(0,o.jsx)(n.li,{children:"IPC is generally the most secure as it is limited to local interactions and cannot be exposed to external traffic. It can also be used for event subscriptions."}),"\n"]})]}),"\n",(0,o.jsx)(n.h3,{id:"http",children:"HTTP"}),"\n",(0,o.jsxs)(n.p,{children:["HTTP is the most widely used transport for Nethermind. To enable the HTTP server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Enabled true"})," command line option. By default, Nethermind uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8545"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Host"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.Port"})," command line options, respectively."]}),"\n",(0,o.jsx)(n.h3,{id:"websocket",children:"WebSocket"}),"\n",(0,o.jsxs)(n.p,{children:["The configuration of the WebSocket server follows the same pattern as the HTTP server. The WebSocket server is enabled automatically when the HTTP server is enabled and uses the same host and port. To disable the WebSocket server, use the ",(0,o.jsx)(n.code,{children:"--Init.WebSocketsEnabled false"})," command line option. To use a different a port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort"})," command line option."]}),"\n",(0,o.jsx)(n.h3,{id:"ipc-socket",children:"IPC socket"}),"\n",(0,o.jsxs)(n.p,{children:["Nethermind uses IPC based on Unix domain socket. To enable the IPC server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath path/to/ipc"})," command line option. If the ",(0,o.jsx)(n.code,{children:"path/to/ipc"})," doesn't exist, Nethermind creates one."]}),"\n",(0,o.jsx)(n.h2,{id:"engine-api",children:"Engine API"}),"\n",(0,o.jsx)(n.p,{children:"The Engine API is a set of RPC methods that enable communication between an execution and consensus client. The clients call these methods automatically when they need to exchange information. Engine API is enabled automatically by default and is not designed to be exposed to the user."}),"\n",(0,o.jsxs)(n.p,{children:["By default, the Engine API uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8551"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," command line options, respectively. For example, this can be useful when execution and consensus clients are on different machines."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["When the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," option is specified, the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," option must be specified as well."]})}),"\n",(0,o.jsxs)(n.p,{children:["The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at ",(0,o.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory. To use a different path, specify the ",(0,o.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option."]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var o=t(6540);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2270],{2579:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),s=t(8453);const i={title:"JSON-RPC server",sidebar_position:0},r=void 0,c={id:"interacting/json-rpc-server",title:"JSON-RPC server",description:"Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over HTTP, WebSocket, and IPC socket transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the JSON-RPC configuration options.",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-server.md",sourceDirName:"interacting",slug:"/interacting/json-rpc-server",permalink:"/1.26.0/interacting/json-rpc-server",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-server.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"JSON-RPC server",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Private networks",permalink:"/1.26.0/fundamentals/private-networks"},next:{title:"admin",permalink:"/1.26.0/interacting/json-rpc-ns/admin"}},a={},d=[{value:"Transports",id:"transports",level:2},{value:"HTTP",id:"http",level:3},{value:"WebSocket",id:"websocket",level:3},{value:"IPC socket",id:"ipc-socket",level:3},{value:"Engine API",id:"engine-api",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over ",(0,o.jsx)(n.a,{href:"#http",children:"HTTP"}),", ",(0,o.jsx)(n.a,{href:"#websocket",children:"WebSocket"}),", and ",(0,o.jsx)(n.a,{href:"#ipc-socket",children:"IPC socket"})," transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the ",(0,o.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#jsonrpc",children:"JSON-RPC configuration options"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The JSON-RPC API methods are grouped into several categories (namespaces) depending on their purpose. All API method names are composed of the namespace and the actual method name in that namespace. For instance, the ",(0,o.jsx)(n.code,{children:"eth_call"})," method belongs to the ",(0,o.jsx)(n.code,{children:"eth"})," namespace. See the sidebar for all supported namespaces and methods."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["Not all of the JSON-RPC namespaces are enabled by default. Instead, they must be enabled explicitly with the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})," command line option. Otherwise, error code ",(0,o.jsx)(n.code,{children:"-32600"})," is returned. The enabled namespaces can be found in the configuration file specified with the ",(0,o.jsx)(n.code,{children:"--config"})," command line option."]})}),"\n",(0,o.jsx)(n.h2,{id:"transports",children:"Transports"}),"\n",(0,o.jsxs)(n.admonition,{type:"tip",children:[(0,o.jsx)(n.p,{children:"The right choice of transport depends on the specific use case."}),(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"HTTP is a familiar and idempotent transport that closes connections between requests and can, therefore, have lower overall overhead for a relatively low number of requests."}),"\n",(0,o.jsx)(n.li,{children:"WebSocket provides a continuous open channel that enables event subscriptions and streaming and handles large volumes of requests with more negligible per-message overhead."}),"\n",(0,o.jsx)(n.li,{children:"IPC is generally the most secure as it is limited to local interactions and cannot be exposed to external traffic. It can also be used for event subscriptions."}),"\n"]})]}),"\n",(0,o.jsx)(n.h3,{id:"http",children:"HTTP"}),"\n",(0,o.jsxs)(n.p,{children:["HTTP is the most widely used transport for Nethermind. To enable the HTTP server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Enabled true"})," command line option. By default, Nethermind uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8545"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Host"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.Port"})," command line options, respectively."]}),"\n",(0,o.jsx)(n.h3,{id:"websocket",children:"WebSocket"}),"\n",(0,o.jsxs)(n.p,{children:["The configuration of the WebSocket server follows the same pattern as the HTTP server. The WebSocket server is enabled automatically when the HTTP server is enabled and uses the same host and port. To disable the WebSocket server, use the ",(0,o.jsx)(n.code,{children:"--Init.WebSocketsEnabled false"})," command line option. To use a different a port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort"})," command line option."]}),"\n",(0,o.jsx)(n.h3,{id:"ipc-socket",children:"IPC socket"}),"\n",(0,o.jsxs)(n.p,{children:["Nethermind uses IPC based on Unix domain socket. To enable the IPC server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath path/to/ipc"})," command line option. If the ",(0,o.jsx)(n.code,{children:"path/to/ipc"})," doesn't exist, Nethermind creates one."]}),"\n",(0,o.jsx)(n.h2,{id:"engine-api",children:"Engine API"}),"\n",(0,o.jsx)(n.p,{children:"The Engine API is a set of RPC methods that enable communication between an execution and consensus client. The clients call these methods automatically when they need to exchange information. Engine API is enabled automatically by default and is not designed to be exposed to the user."}),"\n",(0,o.jsxs)(n.p,{children:["By default, the Engine API uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8551"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," command line options, respectively. For example, this can be useful when execution and consensus clients are on different machines."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["When the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," option is specified, the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," option must be specified as well."]})}),"\n",(0,o.jsxs)(n.p,{children:["The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at ",(0,o.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory. To use a different path, specify the ",(0,o.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option."]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var o=t(6540);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2aaa9637.d1504129.js b/assets/js/2aaa9637.8b720a2b.js similarity index 99% rename from assets/js/2aaa9637.d1504129.js rename to assets/js/2aaa9637.8b720a2b.js index 77091799d..3b69b0887 100644 --- a/assets/js/2aaa9637.d1504129.js +++ b/assets/js/2aaa9637.8b720a2b.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3645],{1969:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var s=r(4848),i=r(8453),l=r(1470),c=r(9365);const t={title:"proof namespace",sidebar_label:"proof",sidebar_position:7},d=void 0,a={id:"interacting/json-rpc-ns/proof",title:"proof namespace",description:"proof_getTransactionByHash",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/proof.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/proof",permalink:"/1.27.0/interacting/json-rpc-ns/proof",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/proof.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:7,frontMatter:{title:"proof namespace",sidebar_label:"proof",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"personal",permalink:"/1.27.0/interacting/json-rpc-ns/personal"},next:{title:"trace",permalink:"/1.27.0/interacting/json-rpc-ns/trace"}},o={},h=[{value:"proof_getTransactionByHash",id:"proof_gettransactionbyhash",level:3},{value:"proof_getTransactionReceipt",id:"proof_gettransactionreceipt",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"proof_gettransactionbyhash",children:"proof_getTransactionByHash"}),"\n",(0,s.jsxs)(n.p,{children:["This function returns the same result as ",(0,s.jsx)(n.code,{children:"eth_getTransactionReceipt"})," and also a tx proof, receipt proof and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionByHash",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transaction"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"accessList"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"chainId"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"hash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"input"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"isSystemTx"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mint"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nonce"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"r"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"s"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sourceHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"v"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"yParity"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"proof_gettransactionreceipt",children:"proof_getTransactionReceipt"}),"\n",(0,s.jsxs)(n.p,{children:["This function should return the same result as ",(0,s.jsx)(n.code,{children:"eth_call"})," and also proofs of all used accounts and their storages and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionReceipt",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receipt"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"contractAddress"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"error"}),": ",(0,s.jsx)(n.em,{children:"string"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logs"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"removed"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"topics"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logsBloom"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"root"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"status"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receiptProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},9365:(e,n,r)=>{r.d(n,{A:()=>c});r(6540);var s=r(4164);const i={tabItem:"tabItem_Ymn6"};var l=r(4848);function c(e){let{children:n,hidden:r,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,s.A)(i.tabItem,c),hidden:r,children:n})}},1470:(e,n,r)=>{r.d(n,{A:()=>T});var s=r(6540),i=r(4164),l=r(3104),c=r(6347),t=r(205),d=r(7485),a=r(1682),o=r(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:r}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:r,attributes:s,default:i}}=e;return{value:n,label:r,attributes:s,default:i}}))}(r);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,r])}function j(e){let{value:n,tabValues:r}=e;return r.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:r}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:r}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:n,groupId:r});return[(0,d.aZ)(l),(0,s.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:i}=e,l=x(e),[c,d]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=r.find((e=>e.default))??r[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:r,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(r);return[i,(0,s.useCallback)((e=>{r&&l.set(e)}),[r,l])]}({groupId:i}),g=(()=>{const e=a??m;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{g&&d(g)}),[g]);return{selectedValue:c,selectValue:(0,s.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=r(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=r(4848);function b(e){let{className:n,block:r,selectedValue:s,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,r=d.indexOf(n),i=t[r].value;i!==s&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const r=d.indexOf(e.currentTarget)+1;n=d[r]??d[0];break}case"ArrowLeft":{const r=d.indexOf(e.currentTarget)-1;n=d[r]??d[d.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":r},n),children:t.map((e=>{let{value:n,label:r,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":s===n}),children:r??n},n)}))})}function v(e){let{lazy:n,children:r,selectedValue:l}=e;const c=(Array.isArray(r)?r:[r]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,s.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,f.jsx)(b,{...n,...e}),(0,f.jsx)(v,{...n,...e})]})}function T(e){const n=(0,p.A)();return(0,f.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>t});var s=r(6540);const i={},l=s.createContext(i);function c(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3645],{1969:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var s=r(4848),i=r(8453),l=r(1470),c=r(9365);const t={title:"proof namespace",sidebar_label:"proof",sidebar_position:7},d=void 0,a={id:"interacting/json-rpc-ns/proof",title:"proof namespace",description:"proof_getTransactionByHash",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/proof.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/proof",permalink:"/1.27.0/interacting/json-rpc-ns/proof",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/proof.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:7,frontMatter:{title:"proof namespace",sidebar_label:"proof",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"personal",permalink:"/1.27.0/interacting/json-rpc-ns/personal"},next:{title:"trace",permalink:"/1.27.0/interacting/json-rpc-ns/trace"}},o={},h=[{value:"proof_getTransactionByHash",id:"proof_gettransactionbyhash",level:3},{value:"proof_getTransactionReceipt",id:"proof_gettransactionreceipt",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"proof_gettransactionbyhash",children:"proof_getTransactionByHash"}),"\n",(0,s.jsxs)(n.p,{children:["This function returns the same result as ",(0,s.jsx)(n.code,{children:"eth_getTransactionReceipt"})," and also a tx proof, receipt proof and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionByHash",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transaction"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"accessList"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"chainId"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"hash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"input"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"isSystemTx"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mint"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nonce"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"r"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"s"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sourceHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"v"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"yParity"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"proof_gettransactionreceipt",children:"proof_getTransactionReceipt"}),"\n",(0,s.jsxs)(n.p,{children:["This function should return the same result as ",(0,s.jsx)(n.code,{children:"eth_call"})," and also proofs of all used accounts and their storages and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionReceipt",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receipt"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"contractAddress"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"error"}),": ",(0,s.jsx)(n.em,{children:"string"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logs"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"removed"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"topics"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logsBloom"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"root"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"status"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receiptProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},9365:(e,n,r)=>{r.d(n,{A:()=>c});r(6540);var s=r(4164);const i={tabItem:"tabItem_Ymn6"};var l=r(4848);function c(e){let{children:n,hidden:r,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,s.A)(i.tabItem,c),hidden:r,children:n})}},1470:(e,n,r)=>{r.d(n,{A:()=>T});var s=r(6540),i=r(4164),l=r(3104),c=r(6347),t=r(205),d=r(7485),a=r(1682),o=r(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:r}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:r,attributes:s,default:i}}=e;return{value:n,label:r,attributes:s,default:i}}))}(r);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,r])}function j(e){let{value:n,tabValues:r}=e;return r.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:r}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:r}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:n,groupId:r});return[(0,d.aZ)(l),(0,s.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:i}=e,l=x(e),[c,d]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=r.find((e=>e.default))??r[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:r,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(r);return[i,(0,s.useCallback)((e=>{r&&l.set(e)}),[r,l])]}({groupId:i}),g=(()=>{const e=a??m;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{g&&d(g)}),[g]);return{selectedValue:c,selectValue:(0,s.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=r(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=r(4848);function b(e){let{className:n,block:r,selectedValue:s,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,r=d.indexOf(n),i=t[r].value;i!==s&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const r=d.indexOf(e.currentTarget)+1;n=d[r]??d[0];break}case"ArrowLeft":{const r=d.indexOf(e.currentTarget)-1;n=d[r]??d[d.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":r},n),children:t.map((e=>{let{value:n,label:r,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":s===n}),children:r??n},n)}))})}function v(e){let{lazy:n,children:r,selectedValue:l}=e;const c=(Array.isArray(r)?r:[r]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,s.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,f.jsx)(b,{...n,...e}),(0,f.jsx)(v,{...n,...e})]})}function T(e){const n=(0,p.A)();return(0,f.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>t});var s=r(6540);const i={},l=s.createContext(i);function c(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2ac0a2ec.4e711a7b.js b/assets/js/2ac0a2ec.772ade28.js similarity index 99% rename from assets/js/2ac0a2ec.4e711a7b.js rename to assets/js/2ac0a2ec.772ade28.js index 74ff409f2..6fd872a0b 100644 --- a/assets/js/2ac0a2ec.4e711a7b.js +++ b/assets/js/2ac0a2ec.772ade28.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1452],{9018:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>d,toc:()=>h});var s=t(4848),i=t(8453);const r={sidebar_label:"FAQ",sidebar_position:7},o="FAQ",d={id:"faq",title:"faq",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.26.0/faq.md",sourceDirName:".",slug:"/faq",permalink:"/1.26.0/faq",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/faq.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:7,frontMatter:{sidebar_label:"FAQ",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Custom analytic tools",permalink:"/1.26.0/developers/custom-analytic-tools"},next:{title:"Troubleshooting",permalink:"/1.26.0/troubleshooting"}},a={},h=[{value:"How do I upgrade my node?",id:"how-do-i-upgrade-my-node",level:2},{value:"Upgrading Nethermind for Docker users",id:"upgrading-nethermind-for-docker-users",level:3},{value:"Upgrading Nethermind for Systemd users",id:"upgrading-nethermind-for-systemd-users",level:3},{value:"Upgrading Nethermind when running as a background process",id:"upgrading-nethermind-when-running-as-a-background-process",level:3},{value:"What is the minimum viable config to serve ETH2 validator requests?",id:"what-is-the-minimum-viable-config-to-serve-eth2-validator-requests",level:2},{value:"Can I disable logging to file?",id:"can-i-disable-logging-to-file",level:2},{value:"Can I disable logging of JSON RPC calls?",id:"can-i-disable-logging-of-json-rpc-calls",level:2},{value:"How can I configure a validator?",id:"how-can-i-configure-a-validator",level:2},{value:"My network bandwidth is used up by the Nethermind node",id:"my-network-bandwidth-is-used-up-by-the-nethermind-node",level:2},{value:"Is my node synced?",id:"is-my-node-synced",level:2},{value:"I want to run two or more nodes on one machine. How can I achieve this?",id:"i-want-to-run-two-or-more-nodes-on-one-machine-how-can-i-achieve-this",level:2}];function l(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"faq",children:"FAQ"})}),"\n",(0,s.jsx)(n.h2,{id:"how-do-i-upgrade-my-node",children:"How do I upgrade my node?"}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-for-docker-users",children:"Upgrading Nethermind for Docker users"}),"\n",(0,s.jsxs)(n.p,{children:["Pull the latest version of Nethermind using the ",(0,s.jsx)(n.code,{children:"latest"})," tag. You can find specific tag\nat ",(0,s.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind/tags",children:"Docker Hub"}),"."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"docker pull nethermind/nethermind:latest\n"})}),"\n",(0,s.jsxs)(n.p,{children:["or pull with docker-compose if the ",(0,s.jsx)(n.code,{children:"nethermind/nethermind:latest"})," base image is specified"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"docker-compose pull\n"})}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-for-systemd-users",children:"Upgrading Nethermind for Systemd users"}),"\n",(0,s.jsxs)(n.p,{children:["Simply download the latest Nethermind package either\nfrom ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io/",children:"https://downloads.nethermind.io"}),"\nor ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"https://github.com/NethermindEth/nethermind/releases"})," and make\nsure that the package is extracted in the ",(0,s.jsx)(n.code,{children:"WorkingDirectory"})," path defined in your ",(0,s.jsx)(n.code,{children:"systemd"})," service. Make sure to stop\nthe service before the upgrade and start it after."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-systemd",children:"WorkingDirectory=/home/nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-when-running-as-a-background-process",children:"Upgrading Nethermind when running as a background process"}),"\n",(0,s.jsxs)(n.p,{children:["Download the latest Nethermind package either from ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io/",children:"https://downloads.nethermind.io"}),"\nor ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"https://github.com/NethermindEth/nethermind/releases"})," and\nextract the package in the folder you currently use for running Nethermind. Make sure the service is down before the\nupdate. Make sure to stop the service before the upgrade and start it after."]}),"\n",(0,s.jsx)(n.h2,{id:"what-is-the-minimum-viable-config-to-serve-eth2-validator-requests",children:"What is the minimum viable config to serve ETH2 validator requests?"}),"\n",(0,s.jsxs)(n.p,{children:["This config downloads a minimal amount of bodies and receipts to be able to serve ETH2 validator requests since the\ndeposit contract deployment. It also enables JSON RPC (",(0,s.jsx)(n.strong,{children:"important - make sure that you do not open firewall to the\noutside world!"}),")"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"nethermind --config mainnet --Init.BaseDbPath /your/db/path\n"})}),"\n",(0,s.jsxs)(n.p,{children:["If you have any issues, please reach out to us on Discord: ",(0,s.jsx)(n.a,{href:"https://discord.gg/X539yhn",children:"https://discord.gg/X539yhn"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"can-i-disable-logging-to-file",children:"Can I disable logging to file?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on the logging config page ",(0,s.jsx)(n.a,{href:"/1.26.0/fundamentals/logs",children:"here"})]}),"\n",(0,s.jsx)(n.h2,{id:"can-i-disable-logging-of-json-rpc-calls",children:"Can I disable logging of JSON RPC calls?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on the logging config page ",(0,s.jsx)(n.a,{href:"/1.26.0/fundamentals/logs",children:"here"})]}),"\n",(0,s.jsx)(n.h2,{id:"how-can-i-configure-a-validator",children:"How can I configure a validator?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on running validators ",(0,s.jsx)(n.a,{href:"/1.26.0/validators/",children:"here"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"my-network-bandwidth-is-used-up-by-the-nethermind-node",children:"My network bandwidth is used up by the Nethermind node"}),"\n",(0,s.jsxs)(n.p,{children:["Try changing the config to a lower number (",(0,s.jsx)(n.code,{children:"--Network.ActivePeersMaxCount 25"}),")"]}),"\n",(0,s.jsx)(n.h2,{id:"is-my-node-synced",children:"Is my node synced?"}),"\n",(0,s.jsx)(n.p,{children:"Your node is synced when it shows log lines starting with:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.code,{children:"Processed ..."})}),"\n",(0,s.jsx)(n.p,{children:"And the block numbers shown are at the head of the chain."}),"\n",(0,s.jsxs)(n.p,{children:["Also, to check if your node is synced, you may execute ",(0,s.jsx)(n.code,{children:"eth_syncing"})," call check its result"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-text",children:'curl -X POST --data \'{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}\' localhost:8545\n'})}),"\n",(0,s.jsxs)(n.p,{children:["If the result shows ",(0,s.jsx)(n.code,{children:"false"})," it means that your node is ",(0,s.jsx)(n.strong,{children:"synced"})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-text",children:'{"jsonrpc":"2.0","result":false,"id":1}\n'})}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"In blockchain, any node can never be 100% sure it is synced because there is no central source of truth - so your node\nis generally not able to tell you that it is synced but, it is able to tell you that it believes it is synced based on\nwhat it knows from the peers that it talks to)."})}),"\n",(0,s.jsx)(n.h2,{id:"i-want-to-run-two-or-more-nodes-on-one-machine-how-can-i-achieve-this",children:"I want to run two or more nodes on one machine. How can I achieve this?"}),"\n",(0,s.jsx)(n.p,{children:"You have to configure a few ports used by Nethermind."}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Settings"}),(0,s.jsx)(n.th,{children:"Default Value"}),(0,s.jsx)(n.th,{children:"Comment"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.EnginePort"}),(0,s.jsx)(n.td,{children:"8551"}),(0,s.jsx)(n.td,{children:"Remember to change it on your Consensus client."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.Port"}),(0,s.jsx)(n.td,{children:"8545"}),(0,s.jsx)(n.td,{children:"Only needed if you are using standard JsonRpc"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.WebSocketsPort"}),(0,s.jsx)(n.td,{children:"8545"}),(0,s.jsx)(n.td,{children:"By default same as the JsonRpc port. Only relevant when you use WebSockets"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Network.P2PPort"}),(0,s.jsx)(n.td,{children:"30303"}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Network.DiscoveryPort"}),(0,s.jsx)(n.td,{children:"30303"}),(0,s.jsx)(n.td,{})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["The example of parameters that you have to pass to your second node when the first has been running with default\nsettings:",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.code,{children:"--JsonRpc.EnginePort 8552 --JsonRpc.Port 8546 --Network.P2PPort 30304 --Network.DiscoveryPort 30304"})]})]})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var s=t(6540);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1452],{9018:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>d,toc:()=>h});var s=t(4848),i=t(8453);const r={sidebar_label:"FAQ",sidebar_position:7},o="FAQ",d={id:"faq",title:"faq",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.26.0/faq.md",sourceDirName:".",slug:"/faq",permalink:"/1.26.0/faq",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/faq.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:7,frontMatter:{sidebar_label:"FAQ",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Custom analytic tools",permalink:"/1.26.0/developers/custom-analytic-tools"},next:{title:"Troubleshooting",permalink:"/1.26.0/troubleshooting"}},a={},h=[{value:"How do I upgrade my node?",id:"how-do-i-upgrade-my-node",level:2},{value:"Upgrading Nethermind for Docker users",id:"upgrading-nethermind-for-docker-users",level:3},{value:"Upgrading Nethermind for Systemd users",id:"upgrading-nethermind-for-systemd-users",level:3},{value:"Upgrading Nethermind when running as a background process",id:"upgrading-nethermind-when-running-as-a-background-process",level:3},{value:"What is the minimum viable config to serve ETH2 validator requests?",id:"what-is-the-minimum-viable-config-to-serve-eth2-validator-requests",level:2},{value:"Can I disable logging to file?",id:"can-i-disable-logging-to-file",level:2},{value:"Can I disable logging of JSON RPC calls?",id:"can-i-disable-logging-of-json-rpc-calls",level:2},{value:"How can I configure a validator?",id:"how-can-i-configure-a-validator",level:2},{value:"My network bandwidth is used up by the Nethermind node",id:"my-network-bandwidth-is-used-up-by-the-nethermind-node",level:2},{value:"Is my node synced?",id:"is-my-node-synced",level:2},{value:"I want to run two or more nodes on one machine. How can I achieve this?",id:"i-want-to-run-two-or-more-nodes-on-one-machine-how-can-i-achieve-this",level:2}];function l(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"faq",children:"FAQ"})}),"\n",(0,s.jsx)(n.h2,{id:"how-do-i-upgrade-my-node",children:"How do I upgrade my node?"}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-for-docker-users",children:"Upgrading Nethermind for Docker users"}),"\n",(0,s.jsxs)(n.p,{children:["Pull the latest version of Nethermind using the ",(0,s.jsx)(n.code,{children:"latest"})," tag. You can find specific tag\nat ",(0,s.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind/tags",children:"Docker Hub"}),"."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"docker pull nethermind/nethermind:latest\n"})}),"\n",(0,s.jsxs)(n.p,{children:["or pull with docker-compose if the ",(0,s.jsx)(n.code,{children:"nethermind/nethermind:latest"})," base image is specified"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"docker-compose pull\n"})}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-for-systemd-users",children:"Upgrading Nethermind for Systemd users"}),"\n",(0,s.jsxs)(n.p,{children:["Simply download the latest Nethermind package either\nfrom ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io/",children:"https://downloads.nethermind.io"}),"\nor ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"https://github.com/NethermindEth/nethermind/releases"})," and make\nsure that the package is extracted in the ",(0,s.jsx)(n.code,{children:"WorkingDirectory"})," path defined in your ",(0,s.jsx)(n.code,{children:"systemd"})," service. Make sure to stop\nthe service before the upgrade and start it after."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-systemd",children:"WorkingDirectory=/home/nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-when-running-as-a-background-process",children:"Upgrading Nethermind when running as a background process"}),"\n",(0,s.jsxs)(n.p,{children:["Download the latest Nethermind package either from ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io/",children:"https://downloads.nethermind.io"}),"\nor ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"https://github.com/NethermindEth/nethermind/releases"})," and\nextract the package in the folder you currently use for running Nethermind. Make sure the service is down before the\nupdate. Make sure to stop the service before the upgrade and start it after."]}),"\n",(0,s.jsx)(n.h2,{id:"what-is-the-minimum-viable-config-to-serve-eth2-validator-requests",children:"What is the minimum viable config to serve ETH2 validator requests?"}),"\n",(0,s.jsxs)(n.p,{children:["This config downloads a minimal amount of bodies and receipts to be able to serve ETH2 validator requests since the\ndeposit contract deployment. It also enables JSON RPC (",(0,s.jsx)(n.strong,{children:"important - make sure that you do not open firewall to the\noutside world!"}),")"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"nethermind --config mainnet --Init.BaseDbPath /your/db/path\n"})}),"\n",(0,s.jsxs)(n.p,{children:["If you have any issues, please reach out to us on Discord: ",(0,s.jsx)(n.a,{href:"https://discord.gg/X539yhn",children:"https://discord.gg/X539yhn"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"can-i-disable-logging-to-file",children:"Can I disable logging to file?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on the logging config page ",(0,s.jsx)(n.a,{href:"/1.26.0/fundamentals/logs",children:"here"})]}),"\n",(0,s.jsx)(n.h2,{id:"can-i-disable-logging-of-json-rpc-calls",children:"Can I disable logging of JSON RPC calls?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on the logging config page ",(0,s.jsx)(n.a,{href:"/1.26.0/fundamentals/logs",children:"here"})]}),"\n",(0,s.jsx)(n.h2,{id:"how-can-i-configure-a-validator",children:"How can I configure a validator?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on running validators ",(0,s.jsx)(n.a,{href:"/1.26.0/validators/",children:"here"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"my-network-bandwidth-is-used-up-by-the-nethermind-node",children:"My network bandwidth is used up by the Nethermind node"}),"\n",(0,s.jsxs)(n.p,{children:["Try changing the config to a lower number (",(0,s.jsx)(n.code,{children:"--Network.ActivePeersMaxCount 25"}),")"]}),"\n",(0,s.jsx)(n.h2,{id:"is-my-node-synced",children:"Is my node synced?"}),"\n",(0,s.jsx)(n.p,{children:"Your node is synced when it shows log lines starting with:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.code,{children:"Processed ..."})}),"\n",(0,s.jsx)(n.p,{children:"And the block numbers shown are at the head of the chain."}),"\n",(0,s.jsxs)(n.p,{children:["Also, to check if your node is synced, you may execute ",(0,s.jsx)(n.code,{children:"eth_syncing"})," call check its result"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-text",children:'curl -X POST --data \'{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}\' localhost:8545\n'})}),"\n",(0,s.jsxs)(n.p,{children:["If the result shows ",(0,s.jsx)(n.code,{children:"false"})," it means that your node is ",(0,s.jsx)(n.strong,{children:"synced"})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-text",children:'{"jsonrpc":"2.0","result":false,"id":1}\n'})}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"In blockchain, any node can never be 100% sure it is synced because there is no central source of truth - so your node\nis generally not able to tell you that it is synced but, it is able to tell you that it believes it is synced based on\nwhat it knows from the peers that it talks to)."})}),"\n",(0,s.jsx)(n.h2,{id:"i-want-to-run-two-or-more-nodes-on-one-machine-how-can-i-achieve-this",children:"I want to run two or more nodes on one machine. How can I achieve this?"}),"\n",(0,s.jsx)(n.p,{children:"You have to configure a few ports used by Nethermind."}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Settings"}),(0,s.jsx)(n.th,{children:"Default Value"}),(0,s.jsx)(n.th,{children:"Comment"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.EnginePort"}),(0,s.jsx)(n.td,{children:"8551"}),(0,s.jsx)(n.td,{children:"Remember to change it on your Consensus client."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.Port"}),(0,s.jsx)(n.td,{children:"8545"}),(0,s.jsx)(n.td,{children:"Only needed if you are using standard JsonRpc"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.WebSocketsPort"}),(0,s.jsx)(n.td,{children:"8545"}),(0,s.jsx)(n.td,{children:"By default same as the JsonRpc port. Only relevant when you use WebSockets"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Network.P2PPort"}),(0,s.jsx)(n.td,{children:"30303"}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Network.DiscoveryPort"}),(0,s.jsx)(n.td,{children:"30303"}),(0,s.jsx)(n.td,{})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["The example of parameters that you have to pass to your second node when the first has been running with default\nsettings:",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.code,{children:"--JsonRpc.EnginePort 8552 --JsonRpc.Port 8546 --Network.P2PPort 30304 --Network.DiscoveryPort 30304"})]})]})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var s=t(6540);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2b90ee7f.b9aec72a.js b/assets/js/2b90ee7f.d3bd9a99.js similarity index 99% rename from assets/js/2b90ee7f.b9aec72a.js rename to assets/js/2b90ee7f.d3bd9a99.js index 77f2a9544..1fd06cbc1 100644 --- a/assets/js/2b90ee7f.b9aec72a.js +++ b/assets/js/2b90ee7f.d3bd9a99.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8921],{9627:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>t,frontMatter:()=>d,metadata:()=>a,toc:()=>x});var l=s(4848),r=s(8453),i=s(1470),c=s(9365);const d={title:"debug namespace",sidebar_label:"debug",sidebar_position:2},h=void 0,a={id:"interacting/json-rpc-ns/debug",title:"debug namespace",description:"debug_deleteChainSlice",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/debug.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/debug",permalink:"/1.26.0/interacting/json-rpc-ns/debug",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/debug.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"debug namespace",sidebar_label:"debug",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"clique",permalink:"/1.26.0/interacting/json-rpc-ns/clique"},next:{title:"eth",permalink:"/1.26.0/interacting/json-rpc-ns/eth"}},j={},x=[{value:"debug_deleteChainSlice",id:"debug_deletechainslice",level:3},{value:"debug_getBadBlocks",id:"debug_getbadblocks",level:3},{value:"debug_getBlockRlp",id:"debug_getblockrlp",level:3},{value:"debug_getBlockRlpByHash",id:"debug_getblockrlpbyhash",level:3},{value:"debug_getChainLevel",id:"debug_getchainlevel",level:3},{value:"debug_getConfigValue",id:"debug_getconfigvalue",level:3},{value:"debug_getRawBlock",id:"debug_getrawblock",level:3},{value:"debug_getRawHeader",id:"debug_getrawheader",level:3},{value:"debug_getRawReceipts",id:"debug_getrawreceipts",level:3},{value:"debug_getRawTransaction",id:"debug_getrawtransaction",level:3},{value:"debug_getSyncStage",id:"debug_getsyncstage",level:3},{value:"debug_insertReceipts",id:"debug_insertreceipts",level:3},{value:"debug_migrateReceipts",id:"debug_migratereceipts",level:3},{value:"debug_resetHead",id:"debug_resethead",level:3},{value:"debug_standardTraceBlockToFile",id:"debug_standardtraceblocktofile",level:3},{value:"debug_traceBlock",id:"debug_traceblock",level:3},{value:"debug_traceBlockByHash",id:"debug_traceblockbyhash",level:3},{value:"debug_traceBlockByNumber",id:"debug_traceblockbynumber",level:3},{value:"debug_traceCall",id:"debug_tracecall",level:3},{value:"debug_traceTransaction",id:"debug_tracetransaction",level:3},{value:"debug_traceTransactionByBlockAndIndex",id:"debug_tracetransactionbyblockandindex",level:3},{value:"debug_traceTransactionByBlockhashAndIndex",id:"debug_tracetransactionbyblockhashandindex",level:3},{value:"debug_traceTransactionInBlockByHash",id:"debug_tracetransactioninblockbyhash",level:3},{value:"debug_traceTransactionInBlockByIndex",id:"debug_tracetransactioninblockbyindex",level:3}];function o(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h3,{id:"debug_deletechainslice",children:"debug_deleteChainSlice"}),"\n",(0,l.jsx)(n.p,{children:"Deletes a slice of a chain from the tree on all branches (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"startNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"force"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_deleteChainSlice",\n "params": [startNumber, force]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getbadblocks",children:"debug_getBadBlocks"}),"\n",(0,l.jsx)(n.p,{children:"Return list of invalid blocks."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBadBlocks",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"block"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"author"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"difficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"extraData"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasLimit"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"miner"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mixHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"signature"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"size"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stateRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"step"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timestamp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactions"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"uncles"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInGwei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInWei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"index"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"validatorIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"rlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlp",children:"debug_getBlockRlp"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlp",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlpbyhash",children:"debug_getBlockRlpByHash"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlpByHash",\n "params": [hash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getchainlevel",children:"debug_getChainLevel"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a representation of tree branches on a given chain level (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getChainLevel",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockInfos"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isFinalized"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"wasProcessed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasBlockOnMainChain"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getconfigvalue",children:"debug_getConfigValue"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves the Nethermind configuration value, e.g. JsonRpc.Enabled"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"category"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"name"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getConfigValue",\n "params": [category, name]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawblock",children:"debug_getRawBlock"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Block format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawBlock",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawheader",children:"debug_getRawHeader"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Header format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawHeader",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawreceipts",children:"debug_getRawReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Receipt format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawtransaction",children:"debug_getRawTransaction"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Transaction format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawTransaction",\n "params": [transactionHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getsyncstage",children:"debug_getSyncStage"}),"\n",(0,l.jsx)(n.p,{children:"Retrives Nethermind Sync Stage, With extra Metadata"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getSyncStage",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"currentStage"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_insertreceipts",children:"debug_insertReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Insert receipts for the block after verifying receipts root correctness."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsxs)(c.A,{value:"params",label:"Parameters",children:[(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"receiptForRpc"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"contractAddress"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logs"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"removed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"topics"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"root"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"status"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]})]}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_insertReceipts",\n "params": [blockParameter, receiptForRpc]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_migratereceipts",children:"debug_migrateReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Sets the block number up to which receipts will be migrated to (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_migrateReceipts",\n "params": [blockNumber]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_resethead",children:"debug_resetHead"}),"\n",(0,l.jsx)(n.p,{children:"Updates / resets head block - use only when the node got stuck due to DB / memory corruption (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_resetHead",\n "params": [blockHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtraceblocktofile",children:"debug_standardTraceBlockToFile"}),"\n",(0,l.jsx)(n.p,{children:"Writes to a file the full stack trace of all invoked opcodes of the transaction specified (or all transactions if not specified) that was included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblock",children:"debug_traceBlock"}),"\n",(0,l.jsx)(n.p,{children:"Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlock",\n "params": [blockRlp, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbyhash",children:"debug_traceBlockByHash"}),"\n",(0,l.jsx)(n.p,{children:"Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the database."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByHash",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbynumber",children:"debug_traceBlockByNumber"}),"\n",(0,l.jsx)(n.p,{children:'Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block that is already present in the database.'}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByNumber",\n "params": [blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracecall",children:"debug_traceCall"}),"\n",(0,l.jsx)(n.p,{children:"This method lets you run an eth_call within the context of the given block execution using the final state of parent block as the base. The block can be specified either by hash or by number. It takes the same input object as a eth_call. It returns the same output as debug_traceTransaction."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"call"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"accessList"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chainId"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"input"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isSystemTx"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mint"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"r"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"s"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sourceHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"v"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"yParity"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceCall",\n "params": [call, blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransaction",children:"debug_traceTransaction"}),"\n",(0,l.jsx)(n.p,{children:"This 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."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransaction",\n "params": [transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockandindex",children:"debug_traceTransactionByBlockAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockAndIndex",\n "params": [blockParameter, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockhashandindex",children:"debug_traceTransactionByBlockhashAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockhashAndIndex",\n "params": [blockHash, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyhash",children:"debug_traceTransactionInBlockByHash"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByHash",\n "params": [blockRlp, transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyindex",children:"debug_traceTransactionInBlockByIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByIndex",\n "params": [blockRlp, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function t(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(o,{...e})}):o(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var l=s(4164);const r={tabItem:"tabItem_Ymn6"};var i=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,l.A)(r.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var l=s(6540),r=s(4164),i=s(3104),c=s(6347),d=s(205),h=s(7485),a=s(1682),j=s(679);function x(e){return l.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,l.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function o(e){const{values:n,children:s}=e;return(0,l.useMemo)((()=>{const e=n??function(e){return x(e).map((e=>{let{props:{value:n,label:s,attributes:l,default:r}}=e;return{value:n,label:s,attributes:l,default:r}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function t(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const r=(0,c.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(i),(0,l.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,i=o(e),[c,h]=(0,l.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!t({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const l=s.find((e=>e.default))??s[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:n,tabValues:i}))),[a,x]=u({queryString:s,groupId:r}),[m,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,j.Dv)(s);return[r,(0,l.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:r}),b=(()=>{const e=a??m;return t({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{b&&h(b)}),[b]);return{selectedValue:c,selectValue:(0,l.useCallback)((e=>{if(!t({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);h(e),x(e),g(e)}),[x,g,i]),tabValues:i}}var g=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var p=s(4848);function f(e){let{className:n,block:s,selectedValue:l,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),r=d[s].value;r!==l&&(a(n),c(r))},x=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,p.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,p.jsx)("li",{role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,ref:e=>h.push(e),onKeyDown:x,onClick:j,...i,className:(0,r.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":l===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===i));return e?(0,l.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,p.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,l.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=m(e);return(0,p.jsxs)("div",{className:(0,r.A)("tabs-container",b.tabList),children:[(0,p.jsx)(f,{...n,...e}),(0,p.jsx)(v,{...n,...e})]})}function k(e){const n=(0,g.A)();return(0,p.jsx)(y,{...e,children:x(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var l=s(6540);const r={},i=l.createContext(r);function c(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8921],{9627:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>t,frontMatter:()=>d,metadata:()=>a,toc:()=>x});var l=s(4848),r=s(8453),i=s(1470),c=s(9365);const d={title:"debug namespace",sidebar_label:"debug",sidebar_position:2},h=void 0,a={id:"interacting/json-rpc-ns/debug",title:"debug namespace",description:"debug_deleteChainSlice",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/debug.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/debug",permalink:"/1.26.0/interacting/json-rpc-ns/debug",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/debug.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"debug namespace",sidebar_label:"debug",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"clique",permalink:"/1.26.0/interacting/json-rpc-ns/clique"},next:{title:"eth",permalink:"/1.26.0/interacting/json-rpc-ns/eth"}},j={},x=[{value:"debug_deleteChainSlice",id:"debug_deletechainslice",level:3},{value:"debug_getBadBlocks",id:"debug_getbadblocks",level:3},{value:"debug_getBlockRlp",id:"debug_getblockrlp",level:3},{value:"debug_getBlockRlpByHash",id:"debug_getblockrlpbyhash",level:3},{value:"debug_getChainLevel",id:"debug_getchainlevel",level:3},{value:"debug_getConfigValue",id:"debug_getconfigvalue",level:3},{value:"debug_getRawBlock",id:"debug_getrawblock",level:3},{value:"debug_getRawHeader",id:"debug_getrawheader",level:3},{value:"debug_getRawReceipts",id:"debug_getrawreceipts",level:3},{value:"debug_getRawTransaction",id:"debug_getrawtransaction",level:3},{value:"debug_getSyncStage",id:"debug_getsyncstage",level:3},{value:"debug_insertReceipts",id:"debug_insertreceipts",level:3},{value:"debug_migrateReceipts",id:"debug_migratereceipts",level:3},{value:"debug_resetHead",id:"debug_resethead",level:3},{value:"debug_standardTraceBlockToFile",id:"debug_standardtraceblocktofile",level:3},{value:"debug_traceBlock",id:"debug_traceblock",level:3},{value:"debug_traceBlockByHash",id:"debug_traceblockbyhash",level:3},{value:"debug_traceBlockByNumber",id:"debug_traceblockbynumber",level:3},{value:"debug_traceCall",id:"debug_tracecall",level:3},{value:"debug_traceTransaction",id:"debug_tracetransaction",level:3},{value:"debug_traceTransactionByBlockAndIndex",id:"debug_tracetransactionbyblockandindex",level:3},{value:"debug_traceTransactionByBlockhashAndIndex",id:"debug_tracetransactionbyblockhashandindex",level:3},{value:"debug_traceTransactionInBlockByHash",id:"debug_tracetransactioninblockbyhash",level:3},{value:"debug_traceTransactionInBlockByIndex",id:"debug_tracetransactioninblockbyindex",level:3}];function o(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h3,{id:"debug_deletechainslice",children:"debug_deleteChainSlice"}),"\n",(0,l.jsx)(n.p,{children:"Deletes a slice of a chain from the tree on all branches (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"startNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"force"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_deleteChainSlice",\n "params": [startNumber, force]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getbadblocks",children:"debug_getBadBlocks"}),"\n",(0,l.jsx)(n.p,{children:"Return list of invalid blocks."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBadBlocks",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"block"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"author"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"difficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"extraData"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasLimit"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"miner"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mixHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"signature"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"size"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stateRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"step"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timestamp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactions"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"uncles"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInGwei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInWei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"index"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"validatorIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"rlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlp",children:"debug_getBlockRlp"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlp",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlpbyhash",children:"debug_getBlockRlpByHash"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlpByHash",\n "params": [hash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getchainlevel",children:"debug_getChainLevel"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a representation of tree branches on a given chain level (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getChainLevel",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockInfos"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isFinalized"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"wasProcessed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasBlockOnMainChain"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getconfigvalue",children:"debug_getConfigValue"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves the Nethermind configuration value, e.g. JsonRpc.Enabled"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"category"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"name"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getConfigValue",\n "params": [category, name]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawblock",children:"debug_getRawBlock"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Block format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawBlock",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawheader",children:"debug_getRawHeader"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Header format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawHeader",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawreceipts",children:"debug_getRawReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Receipt format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawtransaction",children:"debug_getRawTransaction"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Transaction format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawTransaction",\n "params": [transactionHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getsyncstage",children:"debug_getSyncStage"}),"\n",(0,l.jsx)(n.p,{children:"Retrives Nethermind Sync Stage, With extra Metadata"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getSyncStage",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"currentStage"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_insertreceipts",children:"debug_insertReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Insert receipts for the block after verifying receipts root correctness."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsxs)(c.A,{value:"params",label:"Parameters",children:[(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"receiptForRpc"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"contractAddress"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logs"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"removed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"topics"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"root"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"status"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]})]}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_insertReceipts",\n "params": [blockParameter, receiptForRpc]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_migratereceipts",children:"debug_migrateReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Sets the block number up to which receipts will be migrated to (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_migrateReceipts",\n "params": [blockNumber]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_resethead",children:"debug_resetHead"}),"\n",(0,l.jsx)(n.p,{children:"Updates / resets head block - use only when the node got stuck due to DB / memory corruption (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_resetHead",\n "params": [blockHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtraceblocktofile",children:"debug_standardTraceBlockToFile"}),"\n",(0,l.jsx)(n.p,{children:"Writes to a file the full stack trace of all invoked opcodes of the transaction specified (or all transactions if not specified) that was included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblock",children:"debug_traceBlock"}),"\n",(0,l.jsx)(n.p,{children:"Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlock",\n "params": [blockRlp, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbyhash",children:"debug_traceBlockByHash"}),"\n",(0,l.jsx)(n.p,{children:"Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the database."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByHash",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbynumber",children:"debug_traceBlockByNumber"}),"\n",(0,l.jsx)(n.p,{children:'Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block that is already present in the database.'}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByNumber",\n "params": [blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracecall",children:"debug_traceCall"}),"\n",(0,l.jsx)(n.p,{children:"This method lets you run an eth_call within the context of the given block execution using the final state of parent block as the base. The block can be specified either by hash or by number. It takes the same input object as a eth_call. It returns the same output as debug_traceTransaction."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"call"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"accessList"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chainId"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"input"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isSystemTx"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mint"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"r"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"s"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sourceHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"v"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"yParity"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceCall",\n "params": [call, blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransaction",children:"debug_traceTransaction"}),"\n",(0,l.jsx)(n.p,{children:"This 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."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransaction",\n "params": [transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockandindex",children:"debug_traceTransactionByBlockAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockAndIndex",\n "params": [blockParameter, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockhashandindex",children:"debug_traceTransactionByBlockhashAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockhashAndIndex",\n "params": [blockHash, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyhash",children:"debug_traceTransactionInBlockByHash"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByHash",\n "params": [blockRlp, transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyindex",children:"debug_traceTransactionInBlockByIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByIndex",\n "params": [blockRlp, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function t(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(o,{...e})}):o(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var l=s(4164);const r={tabItem:"tabItem_Ymn6"};var i=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,l.A)(r.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var l=s(6540),r=s(4164),i=s(3104),c=s(6347),d=s(205),h=s(7485),a=s(1682),j=s(679);function x(e){return l.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,l.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function o(e){const{values:n,children:s}=e;return(0,l.useMemo)((()=>{const e=n??function(e){return x(e).map((e=>{let{props:{value:n,label:s,attributes:l,default:r}}=e;return{value:n,label:s,attributes:l,default:r}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function t(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const r=(0,c.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(i),(0,l.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,i=o(e),[c,h]=(0,l.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!t({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const l=s.find((e=>e.default))??s[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:n,tabValues:i}))),[a,x]=u({queryString:s,groupId:r}),[m,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,j.Dv)(s);return[r,(0,l.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:r}),b=(()=>{const e=a??m;return t({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{b&&h(b)}),[b]);return{selectedValue:c,selectValue:(0,l.useCallback)((e=>{if(!t({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);h(e),x(e),g(e)}),[x,g,i]),tabValues:i}}var g=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var p=s(4848);function f(e){let{className:n,block:s,selectedValue:l,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),r=d[s].value;r!==l&&(a(n),c(r))},x=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,p.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,p.jsx)("li",{role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,ref:e=>h.push(e),onKeyDown:x,onClick:j,...i,className:(0,r.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":l===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===i));return e?(0,l.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,p.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,l.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=m(e);return(0,p.jsxs)("div",{className:(0,r.A)("tabs-container",b.tabList),children:[(0,p.jsx)(f,{...n,...e}),(0,p.jsx)(v,{...n,...e})]})}function k(e){const n=(0,g.A)();return(0,p.jsx)(y,{...e,children:x(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var l=s(6540);const r={},i=l.createContext(r);function c(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2cc9fa48.e6dd19c4.js b/assets/js/2cc9fa48.16906c27.js similarity index 98% rename from assets/js/2cc9fa48.e6dd19c4.js rename to assets/js/2cc9fa48.16906c27.js index cb784d799..6a7378d37 100644 --- a/assets/js/2cc9fa48.e6dd19c4.js +++ b/assets/js/2cc9fa48.16906c27.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4365],{3154:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>d});var t=s(4848),i=s(8453);const r={title:"Validators",sidebar_position:0},a=void 0,o={id:"validators/validators",title:"Validators",description:"General considerations",source:"@site/docs/validators/validators.md",sourceDirName:"validators",slug:"/validators/",permalink:"/next/validators/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/validators/validators.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Health check",permalink:"/next/monitoring/health-check"},next:{title:"Aura-based validators",permalink:"/next/validators/aura"}},l={},d=[{value:"General considerations",id:"general-considerations",level:2},{value:"Hardware configurations",id:"hardware-configurations",level:2},{value:"On-premises",id:"on-premises",level:3},{value:"AWS",id:"aws",level:3},{value:"Azure",id:"azure",level:3},{value:"GCP",id:"gcp",level:3},{value:"Gnosis validators",id:"gnosis-validators",level:2}];function c(e){const n={a:"a",admonition:"admonition",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"general-considerations",children:"General considerations"}),"\n",(0,t.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,t.jsxs)(n.p,{children:["Please check out the ",(0,t.jsx)(n.a,{href:"/next/fundamentals/security",children:"security considerations"})," before using Nethermind as a validator."]})}),"\n",(0,t.jsxs)(n.p,{children:["For Ethereum validators, we highly recommend checking out ",(0,t.jsx)(n.a,{href:"https://ethereum.org/staking",children:"Staking with Ethereum"})," and ",(0,t.jsx)(n.a,{href:"https://launchpad.ethereum.org/en/checklist",children:"Validator checklist"}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"hardware-configurations",children:"Hardware configurations"}),"\n",(0,t.jsx)(n.p,{children:"The following hardware configurations for Ethereum Mainnet validators have been battle-tested by us and our users. We have observed excellent validator performance and stability with these configurations."}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsxs)(n.p,{children:["Before setting up your infrastructure, check out ",(0,t.jsx)(n.a,{href:"/next/get-started/system-requirements#hardware-requirements",children:"Nethermind hardware requirements"}),"."]})}),"\n",(0,t.jsx)(n.h3,{id:"on-premises",children:"On-premises"}),"\n",(0,t.jsx)(n.p,{children:"A single validator on Intel NUC 11:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CPU: Intel Core i7-1165G7"}),"\n",(0,t.jsx)(n.li,{children:"Memory: Crucial 32GB DDR4-3200 SODIMM"}),"\n",(0,t.jsx)(n.li,{children:"Storage: Samsung 980 PRO PCIe NVMe SSD 2TB"}),"\n",(0,t.jsx)(n.li,{children:"Internet speed: 620 Mbps download, 160 Mbps upload"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"aws",children:"AWS"}),"\n",(0,t.jsx)(n.p,{children:"Multiple validators on the following EC2 instances:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m6i/",children:"m6i.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m7g/",children:"m7g.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,t.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/t4/",children:"t4g.small"})," instances."]}),"\n",(0,t.jsx)(n.h3,{id:"azure",children:"Azure"}),"\n",(0,t.jsx)(n.p,{children:"Multiple validators on the following VM instances:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dv5-dsv5-series#dv5-series",children:"Standard_D8_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dpsv5-dpdsv5-series#dpsv5-series",children:"Standard_D8ps_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,t.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dplsv5-dpldsv5-series#dplsv5-series",children:"Standard_D2pls_v5"})," instances."]}),"\n",(0,t.jsx)(n.h3,{id:"gcp",children:"GCP"}),"\n",(0,t.jsxs)(n.p,{children:["Multiple validators on the ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/compute-optimized-machines#c2d-high-mem",children:"c2d-highmem-4"})," instance: 4 vCPU, 32 GB memory"]}),"\n",(0,t.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/general-purpose-machines#sharedcore",children:"e2-small"})," instances."]}),"\n",(0,t.jsx)(n.h2,{id:"gnosis-validators",children:"Gnosis validators"}),"\n",(0,t.jsxs)(n.p,{children:["To set up a Gnosis Chain validator, see the ",(0,t.jsx)(n.a,{href:"https://docs.gnosischain.com/node",children:"Gnosis Chain documentation"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>o});var t=s(6540);const i={},r=t.createContext(i);function a(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4365],{3154:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>d});var t=s(4848),i=s(8453);const r={title:"Validators",sidebar_position:0},a=void 0,o={id:"validators/validators",title:"Validators",description:"General considerations",source:"@site/docs/validators/validators.md",sourceDirName:"validators",slug:"/validators/",permalink:"/next/validators/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/validators/validators.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Health check",permalink:"/next/monitoring/health-check"},next:{title:"Aura-based validators",permalink:"/next/validators/aura"}},l={},d=[{value:"General considerations",id:"general-considerations",level:2},{value:"Hardware configurations",id:"hardware-configurations",level:2},{value:"On-premises",id:"on-premises",level:3},{value:"AWS",id:"aws",level:3},{value:"Azure",id:"azure",level:3},{value:"GCP",id:"gcp",level:3},{value:"Gnosis validators",id:"gnosis-validators",level:2}];function c(e){const n={a:"a",admonition:"admonition",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"general-considerations",children:"General considerations"}),"\n",(0,t.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,t.jsxs)(n.p,{children:["Please check out the ",(0,t.jsx)(n.a,{href:"/next/fundamentals/security",children:"security considerations"})," before using Nethermind as a validator."]})}),"\n",(0,t.jsxs)(n.p,{children:["For Ethereum validators, we highly recommend checking out ",(0,t.jsx)(n.a,{href:"https://ethereum.org/staking",children:"Staking with Ethereum"})," and ",(0,t.jsx)(n.a,{href:"https://launchpad.ethereum.org/en/checklist",children:"Validator checklist"}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"hardware-configurations",children:"Hardware configurations"}),"\n",(0,t.jsx)(n.p,{children:"The following hardware configurations for Ethereum Mainnet validators have been battle-tested by us and our users. We have observed excellent validator performance and stability with these configurations."}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsxs)(n.p,{children:["Before setting up your infrastructure, check out ",(0,t.jsx)(n.a,{href:"/next/get-started/system-requirements#hardware-requirements",children:"Nethermind hardware requirements"}),"."]})}),"\n",(0,t.jsx)(n.h3,{id:"on-premises",children:"On-premises"}),"\n",(0,t.jsx)(n.p,{children:"A single validator on Intel NUC 11:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CPU: Intel Core i7-1165G7"}),"\n",(0,t.jsx)(n.li,{children:"Memory: Crucial 32GB DDR4-3200 SODIMM"}),"\n",(0,t.jsx)(n.li,{children:"Storage: Samsung 980 PRO PCIe NVMe SSD 2TB"}),"\n",(0,t.jsx)(n.li,{children:"Internet speed: 620 Mbps download, 160 Mbps upload"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"aws",children:"AWS"}),"\n",(0,t.jsx)(n.p,{children:"Multiple validators on the following EC2 instances:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m6i/",children:"m6i.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m7g/",children:"m7g.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,t.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/t4/",children:"t4g.small"})," instances."]}),"\n",(0,t.jsx)(n.h3,{id:"azure",children:"Azure"}),"\n",(0,t.jsx)(n.p,{children:"Multiple validators on the following VM instances:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dv5-dsv5-series#dv5-series",children:"Standard_D8_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dpsv5-dpdsv5-series#dpsv5-series",children:"Standard_D8ps_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,t.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dplsv5-dpldsv5-series#dplsv5-series",children:"Standard_D2pls_v5"})," instances."]}),"\n",(0,t.jsx)(n.h3,{id:"gcp",children:"GCP"}),"\n",(0,t.jsxs)(n.p,{children:["Multiple validators on the ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/compute-optimized-machines#c2d-high-mem",children:"c2d-highmem-4"})," instance: 4 vCPU, 32 GB memory"]}),"\n",(0,t.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/general-purpose-machines#sharedcore",children:"e2-small"})," instances."]}),"\n",(0,t.jsx)(n.h2,{id:"gnosis-validators",children:"Gnosis validators"}),"\n",(0,t.jsxs)(n.p,{children:["To set up a Gnosis Chain validator, see the ",(0,t.jsx)(n.a,{href:"https://docs.gnosischain.com/node",children:"Gnosis Chain documentation"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>o});var t=s(6540);const i={},r=t.createContext(i);function a(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2d1db957.00f713d1.js b/assets/js/2d1db957.1c23a34c.js similarity index 99% rename from assets/js/2d1db957.00f713d1.js rename to assets/js/2d1db957.1c23a34c.js index d6f18e6b5..238dfe6b6 100644 --- a/assets/js/2d1db957.00f713d1.js +++ b/assets/js/2d1db957.1c23a34c.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6769],{7066:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>a,frontMatter:()=>i,metadata:()=>r,toc:()=>h});var l=s(4848),c=s(8453);const i={title:"Configuration",sidebar_position:1,toc_max_heading_level:4},d=void 0,r={id:"fundamentals/configuration",title:"Configuration",description:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:",source:"@site/versioned_docs/version-1.25.4/fundamentals/configuration.md",sourceDirName:"fundamentals",slug:"/fundamentals/configuration",permalink:"/1.25.4/fundamentals/configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/configuration.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Configuration",sidebar_position:1,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"Migrating from Geth",permalink:"/1.25.4/get-started/migrating-from-geth"},next:{title:"Sync",permalink:"/1.25.4/fundamentals/sync"}},o={},h=[{value:"Command line options",id:"command-line-options",level:2},{value:"Basic options",id:"basic-options",level:3},{value:"Options by namespaces",id:"options-by-namespaces",level:3},{value:"Aura",id:"aura",level:4},{value:"Blocks",id:"blocks",level:4},{value:"Bloom",id:"bloom",level:4},{value:"EthStats",id:"ethstats",level:4},{value:"HealthChecks",id:"healthchecks",level:4},{value:"Hive",id:"hive",level:4},{value:"Init",id:"init",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"KeyStore",id:"keystore",level:4},{value:"Merge",id:"merge",level:4},{value:"Metrics",id:"metrics",level:4},{value:"Mining",id:"mining",level:4},{value:"Network",id:"network",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Receipt",id:"receipt",level:4},{value:"Seq",id:"seq",level:4},{value:"Snapshot",id:"snapshot",level:4},{value:"Sync",id:"sync",level:4},{value:"TraceStore",id:"tracestore",level:4},{value:"TxPool",id:"txpool",level:4},{value:"Wallet",id:"wallet",level:4},{value:"Environment variables",id:"environment-variables",level:2},{value:"Configuration file",id:"configuration-file",level:2}];function t(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,c.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.p,{children:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"#command-line-options",children:"Command line options"})," (aka arguments or flags)"]}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#environment-variables",children:"Environment variables"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#configuration-file",children:"Configuration file"})}),"\n"]}),"\n",(0,l.jsx)(n.admonition,{type:"note",children:(0,l.jsx)(n.p,{children:"Given the above priority list, an option defined in a more priority way overrides the same option defined elsewhere if any."})}),"\n",(0,l.jsx)(n.h2,{id:"command-line-options",children:"Command line options"}),"\n",(0,l.jsx)(n.p,{children:"The full list of command line options can be displayed by running:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,l.jsx)(n.p,{children:"Below is the list of the basic options followed by an exhaustive list of options by namespace."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsx)(n.p,{children:"The command line options are case-sensitive and can be defined only once unless stated otherwise."})}),"\n",(0,l.jsx)(n.h3,{id:"basic-options",children:"Basic options"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-d, --baseDbPath "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind database directory. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-c, --config "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the ",(0,l.jsx)(n.a,{href:"#configuration-file",children:"configuration file"})," or the name (without extension) of any of the configuration files in the configuration directory. Defaults to ",(0,l.jsx)(n.code,{children:"mainnet"}),"."]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{children:"Available configurations"}),(0,l.jsxs)("p",{children:[(0,l.jsxs)(n.p,{children:["Nethermind provides the following pre-built configurations named as the networks they are for. Their respective versions for archive nodes are suffixed ",(0,l.jsx)(n.code,{children:"_archive"}),"."]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-goerli"})," ",(0,l.jsx)(n.code,{children:"base-goerli_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-mainnet"})," ",(0,l.jsx)(n.code,{children:"base-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-sepolia"})," ",(0,l.jsx)(n.code,{children:"base-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chiado"})," ",(0,l.jsx)(n.code,{children:"chiado_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"energyweb"})," ",(0,l.jsx)(n.code,{children:"energyweb_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"goerli"})," ",(0,l.jsx)(n.code,{children:"goerli_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gnosis"})," ",(0,l.jsx)(n.code,{children:"gnosis_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"holesky"})," ",(0,l.jsx)(n.code,{children:"holesky_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mainnet"})," ",(0,l.jsx)(n.code,{children:"mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-goerli"})," ",(0,l.jsx)(n.code,{children:"op-goerli_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-mainnet"})," ",(0,l.jsx)(n.code,{children:"op-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-sepolia"})," ",(0,l.jsx)(n.code,{children:"op-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sepolia"})," ",(0,l.jsx)(n.code,{children:"sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"volta"})," ",(0,l.jsx)(n.code,{children:"volta_archive"})]}),"\n"]})]})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-cd, --configsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the configuration files directory. Defaults to ",(0,l.jsx)(n.code,{children:"configs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-dd, --datadir "})})}),"\n",(0,l.jsx)(n.p,{children:"The path to the Nethermind data directory. Defaults to Nethermind's current directory."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsxs)(n.p,{children:["The absolute paths set by ",(0,l.jsx)(n.code,{children:"Init.BaseDbPath"}),", ",(0,l.jsx)(n.code,{children:"Init.LogDirectory"}),", or ",(0,l.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})," options in a configuration file are not overridden by ",(0,l.jsx)(n.code,{children:"--datadir"}),"."]})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-?, -h, --help"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the full list of available command line options."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-l, --log "})})}),"\n",(0,l.jsxs)(n.p,{children:["Log level (severity). Allowed values: ",(0,l.jsx)(n.code,{children:"TRACE"})," ",(0,l.jsx)(n.code,{children:"DEBUG"})," ",(0,l.jsx)(n.code,{children:"INFO"})," ",(0,l.jsx)(n.code,{children:"WARN"})," ",(0,l.jsx)(n.code,{children:"ERROR"})," ",(0,l.jsx)(n.code,{children:"OFF"}),". Defaults to ",(0,l.jsx)(n.code,{children:"INFO"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-lcs, --loggerConfigSource "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the NLog configuration file. Defaults to ",(0,l.jsx)(n.code,{children:"NLog.config"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-pd, --pluginsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind plugins directory. Defaults to ",(0,l.jsx)(n.code,{children:"plugins"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-v, --version"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the Nethermind version info."}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"options-by-namespaces",children:"Options by namespaces"}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"aura",children:"Aura"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.AllowAuRaPrivateChains "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_ALLOWAURAPRIVATECHAINS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to allow private Aura-based chains only. Do not use with existing Aura-based chains. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.ForceSealing "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_FORCESEALING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal empty blocks if mining. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_MINIMUM2MLNGASPERBLOCKWHENUSINGBLOCKGASLIMITCONTRACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use 2M gas if the contract returns less than that when using ",(0,l.jsx)(n.code,{children:"BlockGasLimitContractTransitions"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityConfigFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONFIGFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the transaction priority rules file to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityContractAddress "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONTRACTADDRESS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The address of the transaction priority contract to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"blocks",children:"Blocks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.ExtraData "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_EXTRADATA"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block header extra data up to 32 bytes in length. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.MinGasPrice "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_MINGASPRICE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum gas premium (or the gas price before the London hard fork) for transactions accepted by the block producer. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.RandomizedBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_RANDOMIZEDBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to change the difficulty of the block randomly within the constraints. Used in NethDev only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.SecondsPerSlot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_SECONDSPERSLOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block time slot, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"12"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.TargetBlockGasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_TARGETBLOCKGASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block gas limit that the block producer should try to reach in the fastest possible way based on the protocol rules. If not specified, then the block producer should follow others. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"bloom",children:"Bloom"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Index "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Bloom index. The Bloom index speeds up the RPC log searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.IndexLevelBucketSizes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEXLEVELBUCKETSIZES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of multipliers for index levels. Can be tweaked per chain to boost performance. Defaults to ",(0,l.jsx)(n.code,{children:"[4, 8, 8]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Migration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the previously downloaded blocks to the Bloom index. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.MigrationStatistics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATIONSTATISTICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether the migration statistics should be calculated and output. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"ethstats",children:"EthStats"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Contact "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_CONTACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node owner contact details displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"hello@nethermind.io"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use Ethstats publishing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Name "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_NAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node name displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Secret "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SECRET"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats secret. Defaults to ",(0,l.jsx)(n.code,{children:"secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.SendInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SENDINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The stats update interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"15"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Server "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SERVER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats server URL. Defaults to ",(0,l.jsx)(n.code,{children:"ws://localhost:3000/api"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"healthchecks",children:"HealthChecks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageCheckAwaitOnStartup "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGECHECKAWAITONSTARTUP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to check for low disk space on startup and suspend until enough space is available. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACESHUTDOWNTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which Nethermind shuts down. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACEWARNINGTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which a warning is displayed. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalClRequestTime "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALCLREQUESTTIME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max request interval, in seconds, in which the consensus client is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProcessedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPROCESSEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block processing is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProducedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPRODUCEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block production is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.PollingInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_POLLINGINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The health check updates polling interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Slug "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_SLUG"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL slug the health checks service is exposed at. Defaults to ",(0,l.jsx)(n.code,{children:"/health"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.UIEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_UIENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health checks UI. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable web hooks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksPayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on failure.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#FFCC00",\n "pretext": "Health Check Status :warning:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "Description",\n "value": "[[DESCRIPTIONS]]",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksRestorePayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSRESTOREPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on recovery.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#36a64f",\n "pretext": "Health Check Status :+1:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "description",\n "value": "The HealthCheck `[[LIVENESS]]` is recovered. Everything is up and running.",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksUri "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSURI"})]}),"\n",(0,l.jsxs)(n.p,{children:["The web hook URL. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"hive",children:"Hive"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.BlocksDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_BLOCKSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory with additional blocks. Defaults to ",(0,l.jsx)(n.code,{children:"/blocks"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.ChainFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_CHAINFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the test chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"/chain.rlp"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable Hive for debugging. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.GenesisFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_GENESISFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the genesis block file. Defaults to ",(0,l.jsx)(n.code,{children:"/genesis.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.KeysDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_KEYSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"/keys"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"init",children:"Init"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.AutoDump "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_AUTODUMP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Auto-dump on bad blocks for diagnostics. ",(0,l.jsx)(n.code,{children:"Default"})," combines ",(0,l.jsx)(n.code,{children:"Receipts"})," and ",(0,l.jsx)(n.code,{children:"Rlp"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Receipts"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Geth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rlp"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RlpLog"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Default"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BadBlocksStored "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BADBLOCKSSTORED"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum number of bad blocks observed on the network that will be stored to disk. Defaults to ",(0,l.jsx)(n.code,{children:"100"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BaseDbPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BASEDBPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The base path for all Nethermind databases. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_CHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/foundation.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiagnosticMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DIAGNOSTICMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"MemDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RpcDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ReadOnlyDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyRewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifySupply"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyTrie"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiscoveryEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DISCOVERYENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the node discovery. If disabled, Nethermind doesn't look for other nodes beyond the bootnodes specified. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.EnableUnsecuredDevWallet "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ENABLEUNSECUREDDEVWALLET"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the in-app wallet/keystore. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.GenesisHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_GENESISHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the genesis block. If not specified, the genesis block validity is not checked which is useful in the case of ad hoc test/private networks. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.HiveChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_HIVECHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file for Hive tests. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/test.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.IsMining "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ISMINING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal/mine new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KeepDevWalletInMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KEEPDEVWALLETINMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to create session-only accounts and delete them on shutdown. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KzgSetupPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KZGSETUPPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to KZG trusted setup file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind logs directory. Defaults to ",(0,l.jsx)(n.code,{children:"logs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the log file. Defaults to ",(0,l.jsx)(n.code,{children:"log.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogRules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGRULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The logs format as ",(0,l.jsx)(n.code,{children:"LogPath:LogLevel;*"})," Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.MemoryHint "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_MEMORYHINT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hint on the max memory limit, in bytes, to configure the database and networking memory allocations. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.PeerManagerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PEERMANAGERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to newly discovered peers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ProcessingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PROCESSINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download/process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.RpcDbUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_RPCDBURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the remote node used as a database source when ",(0,l.jsx)(n.code,{children:"DiagnosticMode"})," is set to ",(0,l.jsx)(n.code,{children:"RpcDb"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.StaticNodesPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_STATICNODESPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the static nodes file. Defaults to ",(0,l.jsx)(n.code,{children:"Data/static-nodes.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.WebSocketsEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_WEBSOCKETSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable WebSocket service for the defaut JSON-RPC port on startup. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ADDITIONALRPCURLS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list. For instance, ",(0,l.jsx)(n.code,{children:"[http://localhost:8546|http;ws|eth;web3]"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.BufferResponses "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_BUFFERRESPONSES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to buffer responses before sending them. This allows using of ",(0,l.jsx)(n.code,{children:"Content-Length"})," instead of ",(0,l.jsx)(n.code,{children:"Transfer-Encoding: chunked"}),". Note that it may degrade performance on large responses. The max buffered response length is 2GB. Chunked responses can be larger. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.CallsFilterFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_CALLSFILTERFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to a file with the list of new-line-separated JSON-RPC calls. If specified, only the calls from that file are allowed. Defaults to ",(0,l.jsx)(n.code,{children:"Data/jsonrpc.filter"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the JSON-RPC service. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of JSON-RPC namespaces to enable. For instance, ",(0,l.jsx)(n.code,{children:"[debug,eth]"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Built-in namespaces:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"admin"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"client"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"debug"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"engine"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"evm"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"health"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"net"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"personal"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"proof"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"rpc"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"subscribe"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"txpool"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"web3"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"[Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health,Rpc]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineEnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list for Engine API. Defaults to ",(0,l.jsx)(n.code,{children:"[Net,Eth,Subscribe,Web3]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnginePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API port. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EthModuleConcurrentInstances "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ETHMODULECONCURRENTINSTANCES"})]}),"\n",(0,l.jsx)(n.p,{children:"The number of concurrent instances for non-sharable calls:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"This limits the load on the CPU and I/O to reasonable levels. If the limit is exceeded, HTTP 503 is returned along with the JSON-RPC error. Defaults to the number of logical processors."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.GasCap "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_GASCAP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The gas limit for ",(0,l.jsx)(n.code,{children:"eth_call"})," and ",(0,l.jsx)(n.code,{children:"eth_estimateGas"}),". Defaults to ",(0,l.jsx)(n.code,{children:"100000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Host "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_HOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_IPCUNIXDOMAINSOCKETPATH"})]}),"\n",(0,l.jsx)(n.p,{children:"The path to connect a UNIX domain socket over."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the JWT secret file required for the Engine API authentication. Defaults to ",(0,l.jsx)(n.code,{children:"keystore/jwt-secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchResponseBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHRESPONSEBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max batch size limit for batched JSON-RPC calls. Defaults to ",(0,l.jsx)(n.code,{children:"30000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of JSON-RPC requests in a batch. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxLoggedRequestParametersCharacters "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGGEDREQUESTPARAMETERSCHARACTERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of characters of a JSON-RPC request parameter printing to the log. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxRequestBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXREQUESTBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max length of HTTP request body, in bytes. Defaults to ",(0,l.jsx)(n.code,{children:"30000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MethodsLoggingFiltering "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_METHODSLOGGINGFILTERING"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of the method names not to log. Defaults to ",(0,l.jsx)(n.code,{children:"[engine_newPayloadV1,engine_newPayloadV2,engine_newPayloadV3,engine_forkchoiceUpdatedV1,engine_forkchoiceUpdatedV2]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Port "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_PORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service HTTP port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.ReportIntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REPORTINTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The interval, in seconds, between the JSON-RPC stats report log. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RequestQueueLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REQUESTQUEUELIMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of concurrent requests in the queue for:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"500"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderBaseFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERBASEFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the base file for diagnostic recording. Defaults to ",(0,l.jsx)(n.code,{children:"logs/rpc.{counter}.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderState "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERSTATE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic recording mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Request"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Response"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Timeout "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_TIMEOUT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The request timeout, in milliseconds. Defaults to ",(0,l.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_WEBSOCKETSPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service WebSockets port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"keystore",children:"KeyStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.BlockAuthorAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_BLOCKAUTHORACCOUNT"})]}),"\n",(0,l.jsx)(n.p,{children:"An account to use as the block author (coinbase)."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Cipher "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_CIPHER"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"aes-128-ctr"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEACCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["An account to use for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeKeyFile"})," option is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeKeyFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEKEYFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the key file to use by for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeAccount"})," is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.IVSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_IVSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Kdf "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDF"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"scrypt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsDklen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSDKLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsN "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"262144"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSP"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsR "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSR"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsSaltLen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSSALTLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"keystore"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreEncoding "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREENCODING"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"UTF-8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.PasswordFiles "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDFILES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of password files paths used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Passwords "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of passwords used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterBlockSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERBLOCKSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterKeySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERKEYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.TestNodeKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_TESTNODEKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"A plaintext private key to use for testing purposes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.UnlockAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_UNLOCKACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of accounts to unlock on startup using passwords either in ",(0,l.jsx)(n.code,{children:"PasswordFiles"})," and ",(0,l.jsx)(n.code,{children:"Passwords"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"merge",children:"Merge"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.BuilderRelayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_BUILDERRELAYURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of a builder relay. If specified, blocks are sent to the relay. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CollectionsPerDecommit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COLLECTIONSPERDECOMMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"Request the garbage collector (GC) to release the process memory."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to disable"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to release every time"]}),"\n",(0,l.jsx)(n.li,{children:"A positive number to release memory after that many Engine API calls"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"25"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CompactMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COMPACTMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory compaction mode. When set to ",(0,l.jsx)(n.code,{children:"Full"}),", compacts the large object heap (LOH) if ",(0,l.jsx)(n.code,{children:"SweepMemory"})," is set to ",(0,l.jsx)(n.code,{children:"Gen2"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"No"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Yes"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Yes"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Merge hard fork. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.FinalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_FINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the last PoW block. Must be greater than or equal to the terminal total difficulty (TTD). Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.PrioritizeBlockLatency "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_PRIORITIZEBLOCKLATENCY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to reduce block latency by disabling garbage collection during Engine API calls. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.SweepMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_SWEEPMEMORY"})]}),"\n",(0,l.jsx)(n.p,{children:"The garbage collection (GC) mode between Engine API calls."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"NoGC"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen0"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen1"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen2"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Gen1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal PoW block hash used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKNUMBER"})]}),"\n",(0,l.jsx)(n.p,{children:"The terminal PoW block number used for the transition."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal total difficulty (TTD) used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"metrics",children:"Metrics"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.CountersEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_COUNTERSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish metrics using .NET diagnostics that can be collected with dotnet-counters. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish various metrics to Prometheus Pushgateway at a given interval. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.EnableDbSizeMetrics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLEDBSIZEMETRICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish database size metrics. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposeHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The IP address to expose Prometheus metrics at. The value of ",(0,l.jsx)(n.code,{children:"+"})," means listening on all available hostnames. Setting this to ",(0,l.jsx)(n.code,{children:"localhost"})," prevents remote access. Defaults to ",(0,l.jsx)(n.code,{children:"+"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The port to expose Prometheus metrics at. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.IntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_INTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The frequency of pushing metrics to Prometheus, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.NodeName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_NODENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name to display on the Grafana dashboard. Defaults to ",(0,l.jsx)(n.code,{children:'"Nethermind"'}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.PushGatewayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_PUSHGATEWAYURL"})]}),"\n",(0,l.jsx)(n.p,{children:"The Prometheus Pushgateway instance URL."}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"mining",children:"Mining"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Mining.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to produce blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"network",children:"Network"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.Bootnodes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_BOOTNODES"})]}),"\n",(0,l.jsx)(n.p,{children:"A comma-separated enode list to be used as boot nodes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiagTracerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DIAGTRACERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable a verbose diagnostic tracing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryDns "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYDNS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Use tree is available through a DNS name. For the default of ",(0,l.jsx)(n.code,{children:".ethdisco.net"}),", leave unspecified. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The UDP port number for incoming discovery connections. It's recommended to keep it the same as the TCP port (",(0,l.jsx)(n.code,{children:"P2PPort"}),") because other values have not been tested yet. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.EnableUPnP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ENABLEUPNP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable automatic port forwarding via UPnP. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.ExternalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_EXTERNALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The external IP. Use only when the external IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.LocalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_LOCALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The local IP. Use only when the local IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxActivePeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max allowed number of connected peers. Defaults to ",(0,l.jsx)(n.code,{children:"50"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxNettyArenaCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXNETTYARENACOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum DotNetty arena count. Increasing this on a high-core CPU without increasing the memory budget may reduce chunk size so much that it causes a huge memory allocation. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.NettyArenaOrder "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_NETTYARENAORDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The size of the DotNetty arena order. ",(0,l.jsx)(n.code,{children:"-1"})," to depend on the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.OnlyStaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ONLYSTATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use static peers only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.P2PPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_P2PPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The TCP port for incoming P2P connections. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.PriorityPeersMaxCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_PRIORITYPEERSMAXCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of priority peers. Can be overridden by a plugin. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.StaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_STATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["A list of peers to keep connection for. Static peers are affected by ",(0,l.jsx)(n.code,{children:"MaxActivePeers"}),". Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"pruning",children:"Pruning"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.AvailableSpaceCheckEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_AVAILABLESPACECHECKENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enables available disk space check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.CacheMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_CACHEMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The in-memory cache size, in MB. The bigger the cache size, the bigger the disk space savings. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningCompletionBehavior "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGCOMPLETIONBEHAVIOR"})]}),"\n",(0,l.jsx)(n.p,{children:"The behavior after pruning completion:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": Do nothing."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Shut Nethermind down if pruning has succeeded but leave it running if failed."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"AlwaysShutdown"}),": Shut Nethermind down when pruning completes, regardless of its status."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AlwaysShutdown"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningDisableLowPriorityWrites "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGDISABLELOWPRIORITYWRITES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable low-priority for pruning writes. Full pruning uses low-priority write operations to prevent blocking block processing. If block processing is not high-priority, set this option to ",(0,l.jsx)(n.code,{children:"true"})," for faster pruning. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMaxDegreeOfParallelism "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMAXDEGREEOFPARALLELISM"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of parallel tasks that can be used by full pruning:"}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to use the number of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to use 25% of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"1"})," to run on single thread"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"The recommended value depends on the type of the node:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["If the node needs to be responsive (serves for RPC or validator), then the recommended value is ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have many other responsibilities but needs to be able to follow the chain reliably without any delays and produce live logs, the ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"1"})," is recommended."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have to be responsive, has very fast I/O (like NVMe) and the shortest pruning time is to be achieved, then ",(0,l.jsx)(n.code,{children:"-1"})," is recommended. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMemoryBudgetMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMEMORYBUDGETMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory budget, in MB, used for the trie visit. Increasing this value significantly reduces the IOPS requirement at the expense of memory usage. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMinimumDelayHours "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMINIMUMDELAYHOURS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum delay, in hours, between full pruning operations not to exhaust disk writes. Defaults to ",(0,l.jsx)(n.code,{children:"240"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningThresholdMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTHRESHOLDMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The threshold, in MB, to trigger full pruning. Depends on ",(0,l.jsx)(n.code,{children:"Mode"})," and ",(0,l.jsx)(n.code,{children:"FullPruningTrigger"}),". Defaults to ",(0,l.jsx)(n.code,{children:"256000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningTrigger "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTRIGGER"})]}),"\n",(0,l.jsx)(n.p,{children:"The full pruning trigger:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Manual"}),": Triggered manually."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StateDbSize"}),": Trigger when the state DB size is above the threshold."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"VolumeFreeSpace"}),": Trigger when the free disk space where the state DB is stored is below the threshold."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Manual"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDbSize"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VolumeFreeSpace"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Manual"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.Mode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_MODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The pruning mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": No pruning (full archive)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Memory"}),": In-memory pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Full"}),": Full pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Hybrid"}),": Combined in-memory and full pruning"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Memory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Hybrid"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Hybrid"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.PersistenceInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PERSISTENCEINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block persistence frequency. If set to ",(0,l.jsx)(n.code,{children:"N"}),", it caches after each ",(0,l.jsx)(n.code,{children:"Nth"})," block even if not required by cache memory usage. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"receipt",children:"Receipt"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactReceiptStore "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTRECEIPTSTORE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactTxIndex "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTTXINDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts transaction index database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.ReceiptsMigration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_RECEIPTSMIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the receipts database to the new schema. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.StoreReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_STORERECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to store receipts after a new block is processed. This setting is independent from downloading receipts in fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.TxLookupLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_TXLOOKUPLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of recent blocks to maintain transaction index for. ",(0,l.jsx)(n.code,{children:"0"})," to never remove indices, ",(0,l.jsx)(n.code,{children:"-1"})," to never index. Defaults to ",(0,l.jsx)(n.code,{children:"2350000"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"seq",children:"Seq"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ApiKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_APIKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"The Seq API key."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.MinLevel "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_MINLEVEL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The min log level to sent to Seq. Defaults to ",(0,l.jsx)(n.code,{children:"Off"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ServerUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_SERVERURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Seq instance URL. Defaults to ",(0,l.jsx)(n.code,{children:"http://localhost:5341"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"snapshot",children:"Snapshot"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Checksum "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_CHECKSUM"})]}),"\n",(0,l.jsxs)(n.p,{children:["The SHA-256 checksum of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.DownloadUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_DOWNLOADURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Snapshot plugin. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory to store the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot.zip"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"sync",children:"Sync"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientBodiesBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.em,{children:"Experimental."})," The earliest body downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, AncientBodiesBarrier } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientReceiptsBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.em,{children:"Experimental."})," The earliest receipt downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as folows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, max{ AncientBodiesBarrier, AncientReceiptsBarrier } } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.BlocksDbTuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_BLOCKSDBTUNEDBMODE"})]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.em,{children:"Experimental."})," Configure the blocks database for write optimizations during sync."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"EnableBlobFiles"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the block bodies in the Fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadHeadersInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADHEADERSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the old block headers in the Fast sync mode. If ",(0,l.jsx)(n.code,{children:"false"}),", Nethermind downloads only recent blocks headers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadReceiptsInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download receipts in the Fast sync mode. This slows down the process by a few hours but allows to interact with dApps that perform extensive historical logs searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSynced "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to shut down Nethermind once sync is finished. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSyncedWaitTimeSec "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCEDWAITTIMESEC"})]}),"\n",(0,l.jsxs)(n.p,{children:["The time, in seconds, to wait before shutting down Nethermind once sync is finished. Defaults to ",(0,l.jsx)(n.code,{children:"60"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to first download blocks from the provided pivot number downwards in the Fast sync mode. This allows for parallelization of requests with many sync peers and with no need to worry about syncing a valid branch (syncing downwards to 0). You need to provide the pivot block number, hash, and total difficulty from a trusted source (e.g., Etherscan) and confirm with other sources if you want to change it. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Fast sync mode (the eth/63 synchronization algorithm). Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSyncCatchUpHeightDelta "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNCCATCHUPHEIGHTDELTA"})]}),"\n",(0,l.jsxs)(n.p,{children:["In Fast sync mode, the min height threshold limit up to which the Full sync, if already on, stays on when the chain is behind the network head. If the limit is exceeded, it switches back to Fast sync. For regular usage scenarios, setting this value lower than 32 is not recommended as this can cause issues with chain reorgs. Note that the last 2 blocks are always processed in Full sync, so setting it lower than 2 has no effect. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXRECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable receipts validation that checks for receipts that might be missing because of a bug. If needed, receipts are downloaded from the network. If ",(0,l.jsx)(n.code,{children:"true"}),", the pivot number must be same one used originally as it's used as a cut-off point. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to recalculate the total difficulty from ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyStartingBlock"})," to ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyLastBlock"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyLastBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYLASTBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The last block to recalculate the total difficulty for. If not specified, the best known block is used.\nDefaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyStartingBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYSTARTINGBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The first block to recalculate the total difficulty for. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxAttemptsToUpdatePivot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXATTEMPTSTOUPDATEPIVOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of attempts to update the pivot block based on the FCU message from the consensus client. Defaults to ",(0,l.jsx)(n.code,{children:"2147483647"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxProcessingThreads "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXPROCESSINGTHREADS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of threads used for syncing. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NetworkingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NETWORKINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to peers and sync. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NonValidatorNode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NONVALIDATORNODE"})]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.em,{children:"Experimental."})," Whether to operate as a non-validator. If ",(0,l.jsx)(n.code,{children:"true"}),", the ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," and ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," can be set to ",(0,l.jsx)(n.code,{children:"false"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTNUMBER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Snap sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSyncAccountRangePartitionCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNCACCOUNTRANGEPARTITIONCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of account range partitions to create. Increases the Snap sync request concurrency. Allowed values are between between 1 and 256. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.StrictMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_STRICTMODE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable some optimizations and do a more extensive sync. Useful when sync state is corrupted. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SynchronizationEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SYNCHRONIZATIONENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download and process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.TuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_TUNEDBMODE"})]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.em,{children:"Experimental."})," Configure the database for write optimizations during sync. Significantly reduces the total number of writes and sync time if you are not network limited."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"HeavyWrite"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.UseGethLimitsInFastBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to make smaller requests, in Fast Blocks mode, to avoid Geth from disconnecting. On the Geth-heavy networks (e.g., Mainnet), it's a desired behavior while on Nethermind- or OpenEthereum-heavy networks (Goerli, Aura), it slows down the sync by a factor of ~4. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.WitnessProtocolEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_WITNESSPROTOCOLENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Witness protocol. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"tracestore",children:"TraceStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.BlocksToKeep "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_BLOCKSTOKEEP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of blocks to store, counting from the head. If ",(0,l.jsx)(n.code,{children:"0"}),", all traces of the processed blocks are stored. Defaults to ",(0,l.jsx)(n.code,{children:"10000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.DeserializationParallelization "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_DESERIALIZATIONPARALLELIZATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max parallelization when deserialization requests the ",(0,l.jsx)(n.code,{children:"trace_filter"})," method. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. If you experience a resource shortage, set to a low number. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the TraceStore plugin. If enabled, traces come from the database whenever possible. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.TraceTypes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_TRACETYPES"})]}),"\n",(0,l.jsx)(n.p,{children:"The type of traces to store."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VmTrace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDiff"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Trace, Rewards"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"txpool",children:"TxPool"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions cached in memory. The default value uses max 200MB for 6 blobs where one blob is 33MB (256 * 128KB) Defaults to ",(0,l.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobsSupport "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBSSUPPORT"})]}),"\n",(0,l.jsx)(n.p,{children:"Blobs support mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Disabled"}),": No support for blob transactions"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"InMemory"}),": Blob transactions stored only in memory"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Storage"}),": Blob transactions stored in db"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),": Blob transactions stored in db with support for restoring reorganized blob transactions to blob pool"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Disabled"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"InMemory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Storage"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StorageWithReorgs"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.GasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_GASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max transaction gas allowed. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.HashCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_HASHCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of cached hashes of already known transactions. Set automatically by the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"524288"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.InMemoryBlobPoolSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_INMEMORYBLOBPOOLSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in memory. Used only if persistent storage is disabled. Defaults to ",(0,l.jsx)(n.code,{children:"512"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingBlobTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGBLOBTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending blob transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MinBaseFeeThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MINBASEFEETHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimal percentage of the current base fee that must be surpassed by the max fee (",(0,l.jsx)(n.code,{children:"max_fee_per_gas"}),") for the transaction to be broadcasted. Defaults to ",(0,l.jsx)(n.code,{children:"70"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PeerNotificationThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PEERNOTIFICATIONTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The average percentage of transaction hashes from persistent broadcast sent to a peer together with hashes of the last added transactions. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PersistentBlobStorageSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PERSISTENTBLOBSTORAGESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in the database (increasing the number of transactions in the blob pool also results in higher memory usage). The default value uses max 13GB for 6 blobs where one blob is 2GB (16386 * 128KB). Defaults to ",(0,l.jsx)(n.code,{children:"16384"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.ReportMinutes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_REPORTMINUTES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The current transaction pool state reporting interval, in minutes. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.Size "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_SIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of transactions held in the mempool (the more transactions in the mempool, the more memory used). Defaults to ",(0,l.jsx)(n.code,{children:"2048"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"wallet",children:"Wallet"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Wallet.DevAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_WALLETCONFIG_DEVACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of autogenerated developer accounts to work with. Developer accounts have private keys from ",(0,l.jsx)(n.code,{children:"00...01"})," to ",(0,l.jsx)(n.code,{children:"00...n"}),". Defaults to ",(0,l.jsx)(n.code,{children:"10"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsx)(n.h2,{id:"environment-variables",children:"Environment variables"}),"\n",(0,l.jsx)(n.p,{children:"To configure Nethermind using environment variables, the following naming convention is used in all uppercase:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-text",children:"NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}\n"})}),"\n",(0,l.jsxs)(n.p,{children:["For instance, the environment variable equivalent of the command line ",(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile"})," option is ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"}),". For the list of configuration namespaces and their options, see ",(0,l.jsx)(n.a,{href:"#options-by-namespaces",children:"Options by namespaces"}),"."]}),"\n",(0,l.jsx)(n.h2,{id:"configuration-file",children:"Configuration file"}),"\n",(0,l.jsxs)(n.p,{children:["The configuration file is a JSON file with ",(0,l.jsx)(n.code,{children:".cfg"})," extension. The bundled configuration files are located in the ",(0,l.jsx)(n.code,{children:"configs"})," directory and named after the network they are used for. For instance, see the Mainnet configuration file ",(0,l.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:(0,l.jsx)(n.code,{children:"mainnet.cfg"})}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(t,{...e})}):t(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>r});var l=s(6540);const c={},i=l.createContext(c);function d(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:d(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6769],{7066:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>a,frontMatter:()=>i,metadata:()=>r,toc:()=>h});var l=s(4848),c=s(8453);const i={title:"Configuration",sidebar_position:1,toc_max_heading_level:4},d=void 0,r={id:"fundamentals/configuration",title:"Configuration",description:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:",source:"@site/versioned_docs/version-1.25.4/fundamentals/configuration.md",sourceDirName:"fundamentals",slug:"/fundamentals/configuration",permalink:"/1.25.4/fundamentals/configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/configuration.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Configuration",sidebar_position:1,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"Migrating from Geth",permalink:"/1.25.4/get-started/migrating-from-geth"},next:{title:"Sync",permalink:"/1.25.4/fundamentals/sync"}},o={},h=[{value:"Command line options",id:"command-line-options",level:2},{value:"Basic options",id:"basic-options",level:3},{value:"Options by namespaces",id:"options-by-namespaces",level:3},{value:"Aura",id:"aura",level:4},{value:"Blocks",id:"blocks",level:4},{value:"Bloom",id:"bloom",level:4},{value:"EthStats",id:"ethstats",level:4},{value:"HealthChecks",id:"healthchecks",level:4},{value:"Hive",id:"hive",level:4},{value:"Init",id:"init",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"KeyStore",id:"keystore",level:4},{value:"Merge",id:"merge",level:4},{value:"Metrics",id:"metrics",level:4},{value:"Mining",id:"mining",level:4},{value:"Network",id:"network",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Receipt",id:"receipt",level:4},{value:"Seq",id:"seq",level:4},{value:"Snapshot",id:"snapshot",level:4},{value:"Sync",id:"sync",level:4},{value:"TraceStore",id:"tracestore",level:4},{value:"TxPool",id:"txpool",level:4},{value:"Wallet",id:"wallet",level:4},{value:"Environment variables",id:"environment-variables",level:2},{value:"Configuration file",id:"configuration-file",level:2}];function t(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,c.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.p,{children:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"#command-line-options",children:"Command line options"})," (aka arguments or flags)"]}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#environment-variables",children:"Environment variables"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#configuration-file",children:"Configuration file"})}),"\n"]}),"\n",(0,l.jsx)(n.admonition,{type:"note",children:(0,l.jsx)(n.p,{children:"Given the above priority list, an option defined in a more priority way overrides the same option defined elsewhere if any."})}),"\n",(0,l.jsx)(n.h2,{id:"command-line-options",children:"Command line options"}),"\n",(0,l.jsx)(n.p,{children:"The full list of command line options can be displayed by running:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,l.jsx)(n.p,{children:"Below is the list of the basic options followed by an exhaustive list of options by namespace."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsx)(n.p,{children:"The command line options are case-sensitive and can be defined only once unless stated otherwise."})}),"\n",(0,l.jsx)(n.h3,{id:"basic-options",children:"Basic options"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-d, --baseDbPath "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind database directory. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-c, --config "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the ",(0,l.jsx)(n.a,{href:"#configuration-file",children:"configuration file"})," or the name (without extension) of any of the configuration files in the configuration directory. Defaults to ",(0,l.jsx)(n.code,{children:"mainnet"}),"."]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{children:"Available configurations"}),(0,l.jsxs)("p",{children:[(0,l.jsxs)(n.p,{children:["Nethermind provides the following pre-built configurations named as the networks they are for. Their respective versions for archive nodes are suffixed ",(0,l.jsx)(n.code,{children:"_archive"}),"."]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-goerli"})," ",(0,l.jsx)(n.code,{children:"base-goerli_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-mainnet"})," ",(0,l.jsx)(n.code,{children:"base-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-sepolia"})," ",(0,l.jsx)(n.code,{children:"base-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chiado"})," ",(0,l.jsx)(n.code,{children:"chiado_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"energyweb"})," ",(0,l.jsx)(n.code,{children:"energyweb_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"goerli"})," ",(0,l.jsx)(n.code,{children:"goerli_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gnosis"})," ",(0,l.jsx)(n.code,{children:"gnosis_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"holesky"})," ",(0,l.jsx)(n.code,{children:"holesky_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mainnet"})," ",(0,l.jsx)(n.code,{children:"mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-goerli"})," ",(0,l.jsx)(n.code,{children:"op-goerli_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-mainnet"})," ",(0,l.jsx)(n.code,{children:"op-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-sepolia"})," ",(0,l.jsx)(n.code,{children:"op-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sepolia"})," ",(0,l.jsx)(n.code,{children:"sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"volta"})," ",(0,l.jsx)(n.code,{children:"volta_archive"})]}),"\n"]})]})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-cd, --configsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the configuration files directory. Defaults to ",(0,l.jsx)(n.code,{children:"configs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-dd, --datadir "})})}),"\n",(0,l.jsx)(n.p,{children:"The path to the Nethermind data directory. Defaults to Nethermind's current directory."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsxs)(n.p,{children:["The absolute paths set by ",(0,l.jsx)(n.code,{children:"Init.BaseDbPath"}),", ",(0,l.jsx)(n.code,{children:"Init.LogDirectory"}),", or ",(0,l.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})," options in a configuration file are not overridden by ",(0,l.jsx)(n.code,{children:"--datadir"}),"."]})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-?, -h, --help"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the full list of available command line options."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-l, --log "})})}),"\n",(0,l.jsxs)(n.p,{children:["Log level (severity). Allowed values: ",(0,l.jsx)(n.code,{children:"TRACE"})," ",(0,l.jsx)(n.code,{children:"DEBUG"})," ",(0,l.jsx)(n.code,{children:"INFO"})," ",(0,l.jsx)(n.code,{children:"WARN"})," ",(0,l.jsx)(n.code,{children:"ERROR"})," ",(0,l.jsx)(n.code,{children:"OFF"}),". Defaults to ",(0,l.jsx)(n.code,{children:"INFO"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-lcs, --loggerConfigSource "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the NLog configuration file. Defaults to ",(0,l.jsx)(n.code,{children:"NLog.config"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-pd, --pluginsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind plugins directory. Defaults to ",(0,l.jsx)(n.code,{children:"plugins"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-v, --version"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the Nethermind version info."}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"options-by-namespaces",children:"Options by namespaces"}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"aura",children:"Aura"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.AllowAuRaPrivateChains "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_ALLOWAURAPRIVATECHAINS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to allow private Aura-based chains only. Do not use with existing Aura-based chains. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.ForceSealing "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_FORCESEALING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal empty blocks if mining. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_MINIMUM2MLNGASPERBLOCKWHENUSINGBLOCKGASLIMITCONTRACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use 2M gas if the contract returns less than that when using ",(0,l.jsx)(n.code,{children:"BlockGasLimitContractTransitions"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityConfigFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONFIGFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the transaction priority rules file to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityContractAddress "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONTRACTADDRESS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The address of the transaction priority contract to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"blocks",children:"Blocks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.ExtraData "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_EXTRADATA"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block header extra data up to 32 bytes in length. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.MinGasPrice "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_MINGASPRICE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum gas premium (or the gas price before the London hard fork) for transactions accepted by the block producer. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.RandomizedBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_RANDOMIZEDBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to change the difficulty of the block randomly within the constraints. Used in NethDev only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.SecondsPerSlot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_SECONDSPERSLOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block time slot, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"12"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.TargetBlockGasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_TARGETBLOCKGASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block gas limit that the block producer should try to reach in the fastest possible way based on the protocol rules. If not specified, then the block producer should follow others. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"bloom",children:"Bloom"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Index "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Bloom index. The Bloom index speeds up the RPC log searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.IndexLevelBucketSizes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEXLEVELBUCKETSIZES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of multipliers for index levels. Can be tweaked per chain to boost performance. Defaults to ",(0,l.jsx)(n.code,{children:"[4, 8, 8]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Migration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the previously downloaded blocks to the Bloom index. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.MigrationStatistics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATIONSTATISTICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether the migration statistics should be calculated and output. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"ethstats",children:"EthStats"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Contact "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_CONTACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node owner contact details displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"hello@nethermind.io"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use Ethstats publishing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Name "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_NAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node name displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Secret "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SECRET"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats secret. Defaults to ",(0,l.jsx)(n.code,{children:"secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.SendInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SENDINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The stats update interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"15"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Server "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SERVER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats server URL. Defaults to ",(0,l.jsx)(n.code,{children:"ws://localhost:3000/api"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"healthchecks",children:"HealthChecks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageCheckAwaitOnStartup "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGECHECKAWAITONSTARTUP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to check for low disk space on startup and suspend until enough space is available. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACESHUTDOWNTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which Nethermind shuts down. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACEWARNINGTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which a warning is displayed. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalClRequestTime "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALCLREQUESTTIME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max request interval, in seconds, in which the consensus client is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProcessedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPROCESSEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block processing is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProducedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPRODUCEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block production is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.PollingInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_POLLINGINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The health check updates polling interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Slug "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_SLUG"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL slug the health checks service is exposed at. Defaults to ",(0,l.jsx)(n.code,{children:"/health"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.UIEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_UIENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health checks UI. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable web hooks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksPayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on failure.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#FFCC00",\n "pretext": "Health Check Status :warning:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "Description",\n "value": "[[DESCRIPTIONS]]",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksRestorePayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSRESTOREPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on recovery.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#36a64f",\n "pretext": "Health Check Status :+1:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "description",\n "value": "The HealthCheck `[[LIVENESS]]` is recovered. Everything is up and running.",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksUri "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSURI"})]}),"\n",(0,l.jsxs)(n.p,{children:["The web hook URL. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"hive",children:"Hive"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.BlocksDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_BLOCKSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory with additional blocks. Defaults to ",(0,l.jsx)(n.code,{children:"/blocks"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.ChainFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_CHAINFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the test chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"/chain.rlp"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable Hive for debugging. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.GenesisFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_GENESISFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the genesis block file. Defaults to ",(0,l.jsx)(n.code,{children:"/genesis.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.KeysDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_KEYSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"/keys"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"init",children:"Init"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.AutoDump "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_AUTODUMP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Auto-dump on bad blocks for diagnostics. ",(0,l.jsx)(n.code,{children:"Default"})," combines ",(0,l.jsx)(n.code,{children:"Receipts"})," and ",(0,l.jsx)(n.code,{children:"Rlp"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Receipts"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Geth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rlp"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RlpLog"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Default"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BadBlocksStored "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BADBLOCKSSTORED"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum number of bad blocks observed on the network that will be stored to disk. Defaults to ",(0,l.jsx)(n.code,{children:"100"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BaseDbPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BASEDBPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The base path for all Nethermind databases. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_CHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/foundation.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiagnosticMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DIAGNOSTICMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"MemDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RpcDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ReadOnlyDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyRewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifySupply"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyTrie"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiscoveryEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DISCOVERYENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the node discovery. If disabled, Nethermind doesn't look for other nodes beyond the bootnodes specified. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.EnableUnsecuredDevWallet "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ENABLEUNSECUREDDEVWALLET"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the in-app wallet/keystore. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.GenesisHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_GENESISHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the genesis block. If not specified, the genesis block validity is not checked which is useful in the case of ad hoc test/private networks. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.HiveChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_HIVECHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file for Hive tests. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/test.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.IsMining "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ISMINING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal/mine new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KeepDevWalletInMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KEEPDEVWALLETINMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to create session-only accounts and delete them on shutdown. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KzgSetupPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KZGSETUPPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to KZG trusted setup file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind logs directory. Defaults to ",(0,l.jsx)(n.code,{children:"logs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the log file. Defaults to ",(0,l.jsx)(n.code,{children:"log.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogRules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGRULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The logs format as ",(0,l.jsx)(n.code,{children:"LogPath:LogLevel;*"})," Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.MemoryHint "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_MEMORYHINT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hint on the max memory limit, in bytes, to configure the database and networking memory allocations. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.PeerManagerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PEERMANAGERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to newly discovered peers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ProcessingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PROCESSINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download/process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.RpcDbUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_RPCDBURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the remote node used as a database source when ",(0,l.jsx)(n.code,{children:"DiagnosticMode"})," is set to ",(0,l.jsx)(n.code,{children:"RpcDb"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.StaticNodesPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_STATICNODESPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the static nodes file. Defaults to ",(0,l.jsx)(n.code,{children:"Data/static-nodes.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.WebSocketsEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_WEBSOCKETSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable WebSocket service for the defaut JSON-RPC port on startup. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ADDITIONALRPCURLS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list. For instance, ",(0,l.jsx)(n.code,{children:"[http://localhost:8546|http;ws|eth;web3]"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.BufferResponses "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_BUFFERRESPONSES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to buffer responses before sending them. This allows using of ",(0,l.jsx)(n.code,{children:"Content-Length"})," instead of ",(0,l.jsx)(n.code,{children:"Transfer-Encoding: chunked"}),". Note that it may degrade performance on large responses. The max buffered response length is 2GB. Chunked responses can be larger. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.CallsFilterFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_CALLSFILTERFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to a file with the list of new-line-separated JSON-RPC calls. If specified, only the calls from that file are allowed. Defaults to ",(0,l.jsx)(n.code,{children:"Data/jsonrpc.filter"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the JSON-RPC service. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of JSON-RPC namespaces to enable. For instance, ",(0,l.jsx)(n.code,{children:"[debug,eth]"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Built-in namespaces:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"admin"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"client"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"debug"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"engine"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"evm"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"health"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"net"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"personal"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"proof"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"rpc"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"subscribe"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"txpool"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"web3"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"[Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health,Rpc]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineEnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list for Engine API. Defaults to ",(0,l.jsx)(n.code,{children:"[Net,Eth,Subscribe,Web3]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnginePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API port. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EthModuleConcurrentInstances "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ETHMODULECONCURRENTINSTANCES"})]}),"\n",(0,l.jsx)(n.p,{children:"The number of concurrent instances for non-sharable calls:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"This limits the load on the CPU and I/O to reasonable levels. If the limit is exceeded, HTTP 503 is returned along with the JSON-RPC error. Defaults to the number of logical processors."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.GasCap "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_GASCAP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The gas limit for ",(0,l.jsx)(n.code,{children:"eth_call"})," and ",(0,l.jsx)(n.code,{children:"eth_estimateGas"}),". Defaults to ",(0,l.jsx)(n.code,{children:"100000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Host "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_HOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_IPCUNIXDOMAINSOCKETPATH"})]}),"\n",(0,l.jsx)(n.p,{children:"The path to connect a UNIX domain socket over."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the JWT secret file required for the Engine API authentication. Defaults to ",(0,l.jsx)(n.code,{children:"keystore/jwt-secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchResponseBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHRESPONSEBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max batch size limit for batched JSON-RPC calls. Defaults to ",(0,l.jsx)(n.code,{children:"30000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of JSON-RPC requests in a batch. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxLoggedRequestParametersCharacters "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGGEDREQUESTPARAMETERSCHARACTERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of characters of a JSON-RPC request parameter printing to the log. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxRequestBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXREQUESTBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max length of HTTP request body, in bytes. Defaults to ",(0,l.jsx)(n.code,{children:"30000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MethodsLoggingFiltering "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_METHODSLOGGINGFILTERING"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of the method names not to log. Defaults to ",(0,l.jsx)(n.code,{children:"[engine_newPayloadV1,engine_newPayloadV2,engine_newPayloadV3,engine_forkchoiceUpdatedV1,engine_forkchoiceUpdatedV2]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Port "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_PORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service HTTP port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.ReportIntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REPORTINTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The interval, in seconds, between the JSON-RPC stats report log. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RequestQueueLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REQUESTQUEUELIMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of concurrent requests in the queue for:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"500"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderBaseFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERBASEFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the base file for diagnostic recording. Defaults to ",(0,l.jsx)(n.code,{children:"logs/rpc.{counter}.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderState "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERSTATE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic recording mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Request"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Response"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Timeout "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_TIMEOUT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The request timeout, in milliseconds. Defaults to ",(0,l.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_WEBSOCKETSPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service WebSockets port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"keystore",children:"KeyStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.BlockAuthorAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_BLOCKAUTHORACCOUNT"})]}),"\n",(0,l.jsx)(n.p,{children:"An account to use as the block author (coinbase)."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Cipher "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_CIPHER"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"aes-128-ctr"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEACCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["An account to use for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeKeyFile"})," option is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeKeyFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEKEYFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the key file to use by for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeAccount"})," is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.IVSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_IVSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Kdf "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDF"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"scrypt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsDklen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSDKLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsN "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"262144"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSP"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsR "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSR"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsSaltLen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSSALTLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"keystore"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreEncoding "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREENCODING"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"UTF-8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.PasswordFiles "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDFILES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of password files paths used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Passwords "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of passwords used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterBlockSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERBLOCKSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterKeySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERKEYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.TestNodeKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_TESTNODEKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"A plaintext private key to use for testing purposes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.UnlockAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_UNLOCKACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of accounts to unlock on startup using passwords either in ",(0,l.jsx)(n.code,{children:"PasswordFiles"})," and ",(0,l.jsx)(n.code,{children:"Passwords"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"merge",children:"Merge"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.BuilderRelayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_BUILDERRELAYURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of a builder relay. If specified, blocks are sent to the relay. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CollectionsPerDecommit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COLLECTIONSPERDECOMMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"Request the garbage collector (GC) to release the process memory."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to disable"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to release every time"]}),"\n",(0,l.jsx)(n.li,{children:"A positive number to release memory after that many Engine API calls"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"25"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CompactMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COMPACTMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory compaction mode. When set to ",(0,l.jsx)(n.code,{children:"Full"}),", compacts the large object heap (LOH) if ",(0,l.jsx)(n.code,{children:"SweepMemory"})," is set to ",(0,l.jsx)(n.code,{children:"Gen2"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"No"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Yes"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Yes"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Merge hard fork. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.FinalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_FINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the last PoW block. Must be greater than or equal to the terminal total difficulty (TTD). Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.PrioritizeBlockLatency "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_PRIORITIZEBLOCKLATENCY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to reduce block latency by disabling garbage collection during Engine API calls. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.SweepMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_SWEEPMEMORY"})]}),"\n",(0,l.jsx)(n.p,{children:"The garbage collection (GC) mode between Engine API calls."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"NoGC"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen0"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen1"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen2"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Gen1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal PoW block hash used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKNUMBER"})]}),"\n",(0,l.jsx)(n.p,{children:"The terminal PoW block number used for the transition."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal total difficulty (TTD) used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"metrics",children:"Metrics"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.CountersEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_COUNTERSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish metrics using .NET diagnostics that can be collected with dotnet-counters. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish various metrics to Prometheus Pushgateway at a given interval. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.EnableDbSizeMetrics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLEDBSIZEMETRICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish database size metrics. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposeHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The IP address to expose Prometheus metrics at. The value of ",(0,l.jsx)(n.code,{children:"+"})," means listening on all available hostnames. Setting this to ",(0,l.jsx)(n.code,{children:"localhost"})," prevents remote access. Defaults to ",(0,l.jsx)(n.code,{children:"+"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The port to expose Prometheus metrics at. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.IntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_INTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The frequency of pushing metrics to Prometheus, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.NodeName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_NODENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name to display on the Grafana dashboard. Defaults to ",(0,l.jsx)(n.code,{children:'"Nethermind"'}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.PushGatewayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_PUSHGATEWAYURL"})]}),"\n",(0,l.jsx)(n.p,{children:"The Prometheus Pushgateway instance URL."}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"mining",children:"Mining"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Mining.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to produce blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"network",children:"Network"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.Bootnodes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_BOOTNODES"})]}),"\n",(0,l.jsx)(n.p,{children:"A comma-separated enode list to be used as boot nodes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiagTracerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DIAGTRACERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable a verbose diagnostic tracing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryDns "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYDNS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Use tree is available through a DNS name. For the default of ",(0,l.jsx)(n.code,{children:".ethdisco.net"}),", leave unspecified. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The UDP port number for incoming discovery connections. It's recommended to keep it the same as the TCP port (",(0,l.jsx)(n.code,{children:"P2PPort"}),") because other values have not been tested yet. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.EnableUPnP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ENABLEUPNP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable automatic port forwarding via UPnP. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.ExternalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_EXTERNALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The external IP. Use only when the external IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.LocalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_LOCALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The local IP. Use only when the local IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxActivePeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max allowed number of connected peers. Defaults to ",(0,l.jsx)(n.code,{children:"50"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxNettyArenaCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXNETTYARENACOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum DotNetty arena count. Increasing this on a high-core CPU without increasing the memory budget may reduce chunk size so much that it causes a huge memory allocation. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.NettyArenaOrder "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_NETTYARENAORDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The size of the DotNetty arena order. ",(0,l.jsx)(n.code,{children:"-1"})," to depend on the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.OnlyStaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ONLYSTATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use static peers only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.P2PPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_P2PPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The TCP port for incoming P2P connections. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.PriorityPeersMaxCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_PRIORITYPEERSMAXCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of priority peers. Can be overridden by a plugin. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.StaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_STATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["A list of peers to keep connection for. Static peers are affected by ",(0,l.jsx)(n.code,{children:"MaxActivePeers"}),". Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"pruning",children:"Pruning"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.AvailableSpaceCheckEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_AVAILABLESPACECHECKENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enables available disk space check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.CacheMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_CACHEMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The in-memory cache size, in MB. The bigger the cache size, the bigger the disk space savings. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningCompletionBehavior "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGCOMPLETIONBEHAVIOR"})]}),"\n",(0,l.jsx)(n.p,{children:"The behavior after pruning completion:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": Do nothing."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Shut Nethermind down if pruning has succeeded but leave it running if failed."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"AlwaysShutdown"}),": Shut Nethermind down when pruning completes, regardless of its status."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AlwaysShutdown"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningDisableLowPriorityWrites "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGDISABLELOWPRIORITYWRITES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable low-priority for pruning writes. Full pruning uses low-priority write operations to prevent blocking block processing. If block processing is not high-priority, set this option to ",(0,l.jsx)(n.code,{children:"true"})," for faster pruning. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMaxDegreeOfParallelism "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMAXDEGREEOFPARALLELISM"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of parallel tasks that can be used by full pruning:"}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to use the number of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to use 25% of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"1"})," to run on single thread"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"The recommended value depends on the type of the node:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["If the node needs to be responsive (serves for RPC or validator), then the recommended value is ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have many other responsibilities but needs to be able to follow the chain reliably without any delays and produce live logs, the ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"1"})," is recommended."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have to be responsive, has very fast I/O (like NVMe) and the shortest pruning time is to be achieved, then ",(0,l.jsx)(n.code,{children:"-1"})," is recommended. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMemoryBudgetMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMEMORYBUDGETMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory budget, in MB, used for the trie visit. Increasing this value significantly reduces the IOPS requirement at the expense of memory usage. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMinimumDelayHours "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMINIMUMDELAYHOURS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum delay, in hours, between full pruning operations not to exhaust disk writes. Defaults to ",(0,l.jsx)(n.code,{children:"240"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningThresholdMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTHRESHOLDMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The threshold, in MB, to trigger full pruning. Depends on ",(0,l.jsx)(n.code,{children:"Mode"})," and ",(0,l.jsx)(n.code,{children:"FullPruningTrigger"}),". Defaults to ",(0,l.jsx)(n.code,{children:"256000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningTrigger "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTRIGGER"})]}),"\n",(0,l.jsx)(n.p,{children:"The full pruning trigger:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Manual"}),": Triggered manually."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StateDbSize"}),": Trigger when the state DB size is above the threshold."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"VolumeFreeSpace"}),": Trigger when the free disk space where the state DB is stored is below the threshold."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Manual"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDbSize"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VolumeFreeSpace"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Manual"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.Mode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_MODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The pruning mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": No pruning (full archive)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Memory"}),": In-memory pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Full"}),": Full pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Hybrid"}),": Combined in-memory and full pruning"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Memory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Hybrid"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Hybrid"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.PersistenceInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PERSISTENCEINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block persistence frequency. If set to ",(0,l.jsx)(n.code,{children:"N"}),", it caches after each ",(0,l.jsx)(n.code,{children:"Nth"})," block even if not required by cache memory usage. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"receipt",children:"Receipt"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactReceiptStore "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTRECEIPTSTORE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactTxIndex "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTTXINDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts transaction index database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.ReceiptsMigration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_RECEIPTSMIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the receipts database to the new schema. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.StoreReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_STORERECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to store receipts after a new block is processed. This setting is independent from downloading receipts in fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.TxLookupLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_TXLOOKUPLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of recent blocks to maintain transaction index for. ",(0,l.jsx)(n.code,{children:"0"})," to never remove indices, ",(0,l.jsx)(n.code,{children:"-1"})," to never index. Defaults to ",(0,l.jsx)(n.code,{children:"2350000"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"seq",children:"Seq"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ApiKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_APIKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"The Seq API key."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.MinLevel "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_MINLEVEL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The min log level to sent to Seq. Defaults to ",(0,l.jsx)(n.code,{children:"Off"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ServerUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_SERVERURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Seq instance URL. Defaults to ",(0,l.jsx)(n.code,{children:"http://localhost:5341"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"snapshot",children:"Snapshot"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Checksum "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_CHECKSUM"})]}),"\n",(0,l.jsxs)(n.p,{children:["The SHA-256 checksum of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.DownloadUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_DOWNLOADURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Snapshot plugin. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory to store the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot.zip"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"sync",children:"Sync"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientBodiesBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.em,{children:"Experimental."})," The earliest body downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, AncientBodiesBarrier } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientReceiptsBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.em,{children:"Experimental."})," The earliest receipt downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as folows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, max{ AncientBodiesBarrier, AncientReceiptsBarrier } } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.BlocksDbTuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_BLOCKSDBTUNEDBMODE"})]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.em,{children:"Experimental."})," Configure the blocks database for write optimizations during sync."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"EnableBlobFiles"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the block bodies in the Fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadHeadersInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADHEADERSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the old block headers in the Fast sync mode. If ",(0,l.jsx)(n.code,{children:"false"}),", Nethermind downloads only recent blocks headers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadReceiptsInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download receipts in the Fast sync mode. This slows down the process by a few hours but allows to interact with dApps that perform extensive historical logs searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSynced "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to shut down Nethermind once sync is finished. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSyncedWaitTimeSec "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCEDWAITTIMESEC"})]}),"\n",(0,l.jsxs)(n.p,{children:["The time, in seconds, to wait before shutting down Nethermind once sync is finished. Defaults to ",(0,l.jsx)(n.code,{children:"60"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to first download blocks from the provided pivot number downwards in the Fast sync mode. This allows for parallelization of requests with many sync peers and with no need to worry about syncing a valid branch (syncing downwards to 0). You need to provide the pivot block number, hash, and total difficulty from a trusted source (e.g., Etherscan) and confirm with other sources if you want to change it. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Fast sync mode (the eth/63 synchronization algorithm). Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSyncCatchUpHeightDelta "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNCCATCHUPHEIGHTDELTA"})]}),"\n",(0,l.jsxs)(n.p,{children:["In Fast sync mode, the min height threshold limit up to which the Full sync, if already on, stays on when the chain is behind the network head. If the limit is exceeded, it switches back to Fast sync. For regular usage scenarios, setting this value lower than 32 is not recommended as this can cause issues with chain reorgs. Note that the last 2 blocks are always processed in Full sync, so setting it lower than 2 has no effect. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXRECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable receipts validation that checks for receipts that might be missing because of a bug. If needed, receipts are downloaded from the network. If ",(0,l.jsx)(n.code,{children:"true"}),", the pivot number must be same one used originally as it's used as a cut-off point. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to recalculate the total difficulty from ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyStartingBlock"})," to ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyLastBlock"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyLastBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYLASTBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The last block to recalculate the total difficulty for. If not specified, the best known block is used.\nDefaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyStartingBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYSTARTINGBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The first block to recalculate the total difficulty for. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxAttemptsToUpdatePivot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXATTEMPTSTOUPDATEPIVOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of attempts to update the pivot block based on the FCU message from the consensus client. Defaults to ",(0,l.jsx)(n.code,{children:"2147483647"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxProcessingThreads "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXPROCESSINGTHREADS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of threads used for syncing. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NetworkingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NETWORKINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to peers and sync. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NonValidatorNode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NONVALIDATORNODE"})]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.em,{children:"Experimental."})," Whether to operate as a non-validator. If ",(0,l.jsx)(n.code,{children:"true"}),", the ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," and ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," can be set to ",(0,l.jsx)(n.code,{children:"false"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTNUMBER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Snap sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSyncAccountRangePartitionCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNCACCOUNTRANGEPARTITIONCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of account range partitions to create. Increases the Snap sync request concurrency. Allowed values are between between 1 and 256. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.StrictMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_STRICTMODE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable some optimizations and do a more extensive sync. Useful when sync state is corrupted. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SynchronizationEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SYNCHRONIZATIONENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download and process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.TuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_TUNEDBMODE"})]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.em,{children:"Experimental."})," Configure the database for write optimizations during sync. Significantly reduces the total number of writes and sync time if you are not network limited."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"HeavyWrite"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.UseGethLimitsInFastBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to make smaller requests, in Fast Blocks mode, to avoid Geth from disconnecting. On the Geth-heavy networks (e.g., Mainnet), it's a desired behavior while on Nethermind- or OpenEthereum-heavy networks (Goerli, Aura), it slows down the sync by a factor of ~4. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.WitnessProtocolEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_WITNESSPROTOCOLENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Witness protocol. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"tracestore",children:"TraceStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.BlocksToKeep "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_BLOCKSTOKEEP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of blocks to store, counting from the head. If ",(0,l.jsx)(n.code,{children:"0"}),", all traces of the processed blocks are stored. Defaults to ",(0,l.jsx)(n.code,{children:"10000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.DeserializationParallelization "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_DESERIALIZATIONPARALLELIZATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max parallelization when deserialization requests the ",(0,l.jsx)(n.code,{children:"trace_filter"})," method. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. If you experience a resource shortage, set to a low number. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the TraceStore plugin. If enabled, traces come from the database whenever possible. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.TraceTypes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_TRACETYPES"})]}),"\n",(0,l.jsx)(n.p,{children:"The type of traces to store."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VmTrace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDiff"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Trace, Rewards"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"txpool",children:"TxPool"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions cached in memory. The default value uses max 200MB for 6 blobs where one blob is 33MB (256 * 128KB) Defaults to ",(0,l.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobsSupport "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBSSUPPORT"})]}),"\n",(0,l.jsx)(n.p,{children:"Blobs support mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Disabled"}),": No support for blob transactions"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"InMemory"}),": Blob transactions stored only in memory"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Storage"}),": Blob transactions stored in db"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),": Blob transactions stored in db with support for restoring reorganized blob transactions to blob pool"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Disabled"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"InMemory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Storage"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StorageWithReorgs"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.GasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_GASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max transaction gas allowed. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.HashCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_HASHCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of cached hashes of already known transactions. Set automatically by the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"524288"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.InMemoryBlobPoolSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_INMEMORYBLOBPOOLSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in memory. Used only if persistent storage is disabled. Defaults to ",(0,l.jsx)(n.code,{children:"512"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingBlobTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGBLOBTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending blob transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MinBaseFeeThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MINBASEFEETHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimal percentage of the current base fee that must be surpassed by the max fee (",(0,l.jsx)(n.code,{children:"max_fee_per_gas"}),") for the transaction to be broadcasted. Defaults to ",(0,l.jsx)(n.code,{children:"70"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PeerNotificationThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PEERNOTIFICATIONTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The average percentage of transaction hashes from persistent broadcast sent to a peer together with hashes of the last added transactions. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PersistentBlobStorageSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PERSISTENTBLOBSTORAGESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in the database (increasing the number of transactions in the blob pool also results in higher memory usage). The default value uses max 13GB for 6 blobs where one blob is 2GB (16386 * 128KB). Defaults to ",(0,l.jsx)(n.code,{children:"16384"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.ReportMinutes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_REPORTMINUTES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The current transaction pool state reporting interval, in minutes. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.Size "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_SIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of transactions held in the mempool (the more transactions in the mempool, the more memory used). Defaults to ",(0,l.jsx)(n.code,{children:"2048"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"wallet",children:"Wallet"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Wallet.DevAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_WALLETCONFIG_DEVACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of autogenerated developer accounts to work with. Developer accounts have private keys from ",(0,l.jsx)(n.code,{children:"00...01"})," to ",(0,l.jsx)(n.code,{children:"00...n"}),". Defaults to ",(0,l.jsx)(n.code,{children:"10"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsx)(n.h2,{id:"environment-variables",children:"Environment variables"}),"\n",(0,l.jsx)(n.p,{children:"To configure Nethermind using environment variables, the following naming convention is used in all uppercase:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-text",children:"NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}\n"})}),"\n",(0,l.jsxs)(n.p,{children:["For instance, the environment variable equivalent of the command line ",(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile"})," option is ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"}),". For the list of configuration namespaces and their options, see ",(0,l.jsx)(n.a,{href:"#options-by-namespaces",children:"Options by namespaces"}),"."]}),"\n",(0,l.jsx)(n.h2,{id:"configuration-file",children:"Configuration file"}),"\n",(0,l.jsxs)(n.p,{children:["The configuration file is a JSON file with ",(0,l.jsx)(n.code,{children:".cfg"})," extension. The bundled configuration files are located in the ",(0,l.jsx)(n.code,{children:"configs"})," directory and named after the network they are used for. For instance, see the Mainnet configuration file ",(0,l.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:(0,l.jsx)(n.code,{children:"mainnet.cfg"})}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(t,{...e})}):t(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>r});var l=s(6540);const c={},i=l.createContext(c);function d(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:d(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2eaf300b.23475d07.js b/assets/js/2eaf300b.bbc912d4.js similarity index 99% rename from assets/js/2eaf300b.23475d07.js rename to assets/js/2eaf300b.bbc912d4.js index 9b4d62f60..d6ea927ff 100644 --- a/assets/js/2eaf300b.23475d07.js +++ b/assets/js/2eaf300b.bbc912d4.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[614],{9070:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var i=s(4848),t=s(8453),r=s(1470),l=s(9365);const d={title:"Sync",sidebar_position:2},o=void 0,a={id:"fundamentals/sync",title:"Sync",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.28.0/fundamentals/sync.md",sourceDirName:"fundamentals",slug:"/fundamentals/sync",permalink:"/1.28.0/fundamentals/sync",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/sync.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Sync",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/1.28.0/fundamentals/configuration"},next:{title:"Security",permalink:"/1.28.0/fundamentals/security"}},c={},h=[{value:"There are three main synchronization modes",id:"there-are-three-main-synchronization-modes",level:2},{value:"Snap Sync",id:"snap-sync",level:2},{value:"How to Enable",id:"how-to-enable",level:4},{value:"Snap Sync vs Other Sync Modes",id:"snap-sync-vs-other-sync-modes",level:4},{value:"Current limitations and future development",id:"current-limitations-and-future-development",level:4},{value:"Fast Sync",id:"fast-sync",level:2},{value:"Archive Sync",id:"archive-sync",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Resync a node from scratch",id:"resync-a-node-from-scratch",level:2},{value:"Steps to Resync a Nethermind Node",id:"steps-to-resync-a-nethermind-node",level:3}];function u(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"there-are-three-main-synchronization-modes",children:"There are three main synchronization modes"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["snap sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"the fastest way to sync to the network (syncs to mainnet in ~3 hours)"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["fast sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"slower than snap sync"}),"\n",(0,i.jsx)(n.li,{children:"useful on nethermind-only chains (like Gnosis), where snap sync is not available for now"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["archive sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"heavy historical sync verifying all the transactions and keeping all the historical state"}),"\n",(0,i.jsxs)(n.li,{children:["you can run it like this ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Sync Mode"}),(0,i.jsx)(n.th,{children:"Disk Space needed"}),(0,i.jsx)(n.th,{children:"Full current state"}),(0,i.jsx)(n.th,{children:"Full current and all historical states"}),(0,i.jsx)(n.th,{children:"Can sync a full archive node from this"}),(0,i.jsx)(n.th,{children:"Time to sync"}),(0,i.jsx)(n.th,{children:"Time to RPC"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"archive"}),(0,i.jsx)(n.td,{children:"~12TB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~3 weeks"}),(0,i.jsx)(n.td,{children:"~3 weeks"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync with all bodies and receipts"}),(0,i.jsx)(n.td,{children:"~800GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~20 hours"}),(0,i.jsx)(n.td,{children:"~20 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"default snap/fast sync (with barriers set to support Eth2)"}),(0,i.jsx)(n.td,{children:"~500GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~11 hours"}),(0,i.jsx)(n.td,{children:"~11 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without receipts"}),(0,i.jsx)(n.td,{children:"~450GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~12 hours"}),(0,i.jsx)(n.td,{children:"~12 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without bodies and receipts"}),(0,i.jsx)(n.td,{children:"~200GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~9 hours"}),(0,i.jsx)(n.td,{children:"~9 hours"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"snap-sync",children:"Snap Sync"}),"\n",(0,i.jsx)(n.p,{children:"Snap sync allows a node to perform the initial synchronization and download of Ethereum\u2019s state up to 10 times faster\nthan using fast sync."}),"\n",(0,i.jsx)(n.h4,{id:"how-to-enable",children:"How to Enable"}),"\n",(0,i.jsxs)(n.p,{children:["Snap sync is enabled by default for majority of networks. To make sure, check if",(0,i.jsx)(n.code,{children:"SnapSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"})," in the Sync\nmodule of your ",(0,i.jsx)(n.code,{children:".cfg"})," file"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true\n}\n'})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not enable snap sync on a previously synced node. Only use when syncing to the network for the first\ntime."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not remove other configurations from Sync module. Just add ",(0,i.jsx)(n.code,{children:'"SnapSync": true'}),", e.g."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true,\n\t"PivotNumber": 15011000,\n "PivotHash": "0x46c838d02d5fa5bc070080ed7965da1d888f6eb1797045365407c7011280af56",\n \t"PivotTotalDifficulty": "52367203434576253689712",\n \t"FastBlocks": true\n}\n'})}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"snap-sync-vs-other-sync-modes",children:"Snap Sync vs Other Sync Modes"}),"\n",(0,i.jsx)(n.p,{children:"More than 12TB of storage is needed today to run a full archive node \u2014 one that stores all the state since genesis.\nBecause of that, setting up an archive node can take days or even weeks. Fast Sync can still take more than 24 hours on\nthe fast machine and download about 90GB state data. With Snap Sync, sync time is reduced to 2-3h with a download of\nabout 30GB."}),"\n",(0,i.jsx)(n.p,{children:"This reduction in sync time and download size has to do with the specific way in which Ethereum\u2019s state is stored in a\nnode: Merkle trees."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(5330).A+"",width:"1168",height:"939"})}),"\n",(0,i.jsx)(n.p,{children:"With Fast Sync, a node downloads the headers of each block and retrieves all the nodes beneath it until it reaches the\nleaves. By contrast, Snap Sync only downloads the leaf nodes, generating the remaining nodes locally which saves time\nand packets downloaded."}),"\n",(0,i.jsx)(n.h4,{id:"current-limitations-and-future-development",children:"Current limitations and future development"}),"\n",(0,i.jsx)(n.p,{children:"For now Snap Sync on the Nethermind client can only download the Ethereum state but not serve it to other clients - snap\nserving development is in progress, expected late 2023/early 2024."}),"\n",(0,i.jsx)(n.p,{children:"The only Ethereum client that supports serving Snap Sync requests is Geth, so only networks supported by Geth can be\nsynced using that method: Mainnet, Goerli, Sepolia."}),"\n",(0,i.jsx)(n.h2,{id:"fast-sync",children:"Fast Sync"}),"\n",(0,i.jsxs)(n.p,{children:["After completing the fast sync your node will have the ability to answer questions like ",(0,i.jsxs)(n.em,{children:["'what is my account\nbalance ",(0,i.jsx)(n.strong,{children:"now"}),"'"]}),", ",(0,i.jsxs)(n.em,{children:["'how many XYZ tokens SomeExchange holds ",(0,i.jsx)(n.strong,{children:"at the moment"}),"'"]}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Fast sync has multiple stages. Nethermind uses a ",(0,i.jsx)(n.code,{children:"pivot block"})," number to improve fast sync performance.\nThe ",(0,i.jsx)(n.code,{children:"pivot block"})," data is automatically updated after initialization of the client and consists of\nthe ",(0,i.jsx)(n.code,{children:"block number"}),", ",(0,i.jsx)(n.code,{children:"block hash"})," and ",(0,i.jsx)(n.code,{children:"block total difficulty"})," (please note that ",(0,i.jsx)(n.code,{children:"total difficulty"})," is different\nthan ",(0,i.jsx)(n.code,{children:"difficulty"}),"). Before synchronizing state data Nethermind synchronizes in two directions - backwards\nfrom ",(0,i.jsx)(n.code,{children:"pivot block"})," to 0 for headers and forward to the head of the chain for headers, blocks and receipts. Forward sync\nmight be very slow (5 - 50 bps) so having fresh pivot block is very important - it is guaranteed by recently implemented\nauto-update."]}),"\n",(0,i.jsx)(n.p,{children:"After downloading the block data Nethermind will start state sync (downloading the latest state trie nodes). We are\nproviding an estimate for the download size and progress but the real value may be different than the estimate (\nespecially if you are using an old version of Nethermind as we sometimes manually adjust the estimator based on our\nobservations of the chain growth rate). Because of this sometimes your sync may continue even when it shows ~100%\nfinished. The other important component is the speed of your sync - if your IO / network / file system causes the state\nsync to go much slower than around 1.5MB per second on average then you will start downloading some parts of the trie\nover and over again. In such cases you may be surprised to see something like 58000MB / 53000MB (100%). It means that\nyou downloaded around 5GB of data that is no longer needed. If your sync is very slow (extended beyond two days) then\nvery likely your setup cannot catch up with the chain progress."}),"\n",(0,i.jsxs)(n.p,{children:["After the state sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," messages like in archive sync - it means that your node\nis in sync and is processing the latest blocks."]}),"\n",(0,i.jsx)(n.p,{children:"Mainnet sync, at the time of writing (December 2020), takes around 8 hours on an UpCloud 16GB RAM 8 CPU $40 VM (and then\nsyncs receipts and bodies in the background if you enabled them in the configuration). Goerli sync should take around 40\nminutes."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast sync logs example for mainnet.",src:s(7017).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsxs)(n.p,{children:["State sync log messages have multiple values displayed. First ",(0,i.jsx)(n.code,{children:"dd.HH:mm:ss"})," total state sync time is displayed, followed\nby an estimated sync progress (percentage of total database data synced), then the current download speed is displayed (\nthere will be times when it will slow down to 0 or single digit numbers, especially towards the end of the sync). In\ngeneral 6 hours sync times shown on screenshots are with around 2000 kB/s (kilobytes per second) average sync rate. You\ncan calculate it in the example as ~45GB / (2MB/s) ~ 22500 seconds ~6.25 hours. We also display the number of state\naccounts synced, number of trie nodes synced and a diagnostic message in the format of ",(0,i.jsx)(n.em,{children:"[number_of_pending_requests]\n.[average time spent in response handler displayed as milliseconds]"}),". So ",(0,i.jsx)(n.code,{children:"5.6.20ms"})," means that we are awaiting for\nresponses to 5 requests that have been sent to peers and the average time it takes us to process a single response is\n6.20ms. The response handling times will differ depending on how many trie nodes are already cached (so they will be\nsignificantly slower for a while after the node restart when cache has to be rebuilt) and based on how fast the database\nIO is (SSD vs NVMe vs cloud drives). For a reasonable sync time you probably should expect these values to be below\n15ms (but they may be as high as 700ms for a while after restarting the node)."]}),"\n",(0,i.jsx)(n.p,{children:"A single restart of the node during the fast sync may extend the sync time by up to two hours because the node has to\nrebuild the caches by reading millions of values from the database."}),"\n",(0,i.jsx)(n.p,{children:"At the last stages of the sync the node will be repeatedly displaying the branch sync progress and changing the block\nnumber to which it tries to catch up. This stage should take between 30 minutes and two hours. If it lasts much more\nthen it is possible that you will not be able to catch up with the network progress."}),"\n",(0,i.jsx)(n.p,{children:"One of the best indicators that you are close to be synced is combined ~100% state size progress and nearly 100% branch\nsync progress."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(2725).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(3203).A+"",width:"1895",height:"795"})}),"\n",(0,i.jsx)(n.h2,{id:"archive-sync",children:"Archive Sync"}),"\n",(0,i.jsxs)(n.p,{children:["Archive sync is the 'heaviest' and slowest sync mode but allows to ask questions like ",(0,i.jsx)(n.em,{children:"'what was the balance of my\naccount 2 years ago?'"}),", ",(0,i.jsx)(n.em,{children:"'how many XYZ token were held in SomeExchange custody in 2017?'"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["We have prepared default archive sync configurations and they can be launched from Nethermind Launcher (just choose the\narchive options) or by simply loading appropriate config when launching ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config goerli_archive"})}),"\n",(0,i.jsx)(n.p,{children:"While for some smaller networks archive sync can complete very quickly (in minutes or hours) mainnet sync would take 2 -\n6 weeks depending on the speed of your IO (whether you use SSD or NVMe or depending on the cloud provider IOPS).\nDatabase size in archive sync is the biggest from all modes as you will store all the historical data."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Example of the archive sync logs",src:s(4466).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(9175).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:"Explanation of some data in the logs:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["at the beginning you may see a ",(0,i.jsx)(n.em,{children:"'Waiting for peers...'"})," message while the node is trying to discover nodes that it can\nsync with."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Downloaded 1234/8000000'"})," shows the number of unprocessed blocks (with transactions) downloaded from the network.\nFor ",(0,i.jsx)(n.code,{children:"mainnet"}),"this value may be slower than processing at first but very quickly you will see blocks being downloaded\nmuch faster than processed. Empty blocks can be as small as 512 bytes (just headers without transactions) and full\nblocks with heavy transactions can reach a few hundred kilobytes. We display both current download speed (calculated\nin the last second) and average (total) speed since starting the node."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Processed ...'"})," displays the blocks that have been processed by the EVM. The first number shows the current head\nblock number, then you can see ",(0,i.jsx)(n.code,{children:"mgasps"})," (million gas per second) - current and total, then ",(0,i.jsx)(n.code,{children:"tps"})," (transactions per\nsecond) - current and total, ",(0,i.jsx)(n.code,{children:"bps"})," (blocks per second). Then ",(0,i.jsx)(n.code,{children:"recv queue"})," (transactions signature public key recovery\nqueue), ",(0,i.jsx)(n.code,{children:"proc queue"})," (processor queue). Both recovery queue and processor queue are designed so when too many blocks\nare waiting for processing then only their hashes are kept in memory and remaining data are stored in the database.\nThus, the queues numbers that you can see will be capped by some number."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Cache for epoch...'"})," informs about ",(0,i.jsx)(n.code,{children:"ethash"})," cache needed for block seal verification (only on ",(0,i.jsx)(n.code,{children:"mainnet"}),"\nand ",(0,i.jsx)(n.code,{children:"ropsten"}),"). Caches will be calculated every 30000 blocks (length of an epoch) but can also be calculated for the\nlatest blocks that are being broadcast on the network."]}),"\n",(0,i.jsxs)(n.li,{children:["After the archive sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," message appearing on average every 15 seconds when\nthe new block is processed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mgasps"}),", ",(0,i.jsx)(n.code,{children:"tps"}),", ",(0,i.jsx)(n.code,{children:"bps"})," values should not be treated as comparable as they may differ massively on different parts of\nthe chain. For example when blocks are empty you may see very high ",(0,i.jsx)(n.code,{children:"bps"})," values with very low (or even zero) ",(0,i.jsx)(n.code,{children:"tps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," values as there are no transactions and no gas for EVM processing and blocks are very light. On the other\nhand when blocks are filled with very heavy transactions then ",(0,i.jsx)(n.code,{children:"bps"})," might be very low while ",(0,i.jsx)(n.code,{children:"mgasps"})," will be very\nhigh. It is even possible that you will see a lot of very light transactions where ",(0,i.jsx)(n.code,{children:"tps"})," will be high while ",(0,i.jsx)(n.code,{children:"bps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," will be average."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,i.jsx)(n.p,{children:"Sync time heavily depends on the hardware used for the node, network speed, and peering. We are constantly pursuing to make it as fast as possible. Below is a brief on how the sync time looks on different machines and various chains (tested with Nethermind v1.21.0)."}),"\n",(0,i.jsxs)(r.A,{children:[(0,i.jsxs)(l.A,{value:"highend-vm",label:"High-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Akamai (formerly Linode)"}),"\n",(0,i.jsx)(n.li,{children:"CPU: AMD EPYC 7601, 16 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 64 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1.2 TB, ~40k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 7h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 58m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 2m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 5m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 21m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 22m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 17m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 46m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 31m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 10m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"midend-vm",label:"Mid-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: AWS"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/c7g/",children:"c7g.2xlarge"}),": 8 vCPU, 16 GiB memory"]}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~10k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 12h 37m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 35m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1h 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 43m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 2h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 4h 28m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 10m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 23m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 35m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 17m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 29m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 18h 28m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 52m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 25m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 5m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"oldspec-vm",label:"Old-spec VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Scaleway"}),"\n",(0,i.jsx)(n.li,{children:"CPU: Intel Xeon Processor E5-2620 v2, 2 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 192 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~44k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 1m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 29m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 25m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 3h 39m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 8h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 5h 55m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 34m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 14m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 16m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 2h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 26m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 45m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 56m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 30m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 3h 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 25m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"energyweb",label:"Energy Web",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 7m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 15h 20m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"volta",label:"Volta",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 14h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 42m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 16h 10m"]}),"\n"]})]})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"resync-a-node-from-scratch",children:"Resync a node from scratch"}),"\n",(0,i.jsx)(n.p,{children:"This guide explains how to resync a Nethermind node using the existing Pivot block or updating it to a more recent one."}),"\n",(0,i.jsx)(n.h3,{id:"steps-to-resync-a-nethermind-node",children:"Steps to Resync a Nethermind Node"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Stop the Nethermind node"}),": If your Nethermind node is currently running, stop it to ensure that no new data is\nbeing written to the database during the resync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Delete the existing database"}),": Navigate to the Nethermind data directory. The location of this directory depends\non how Nethermind was installed and your configuration settings. Inside the data directory, find the ",(0,i.jsx)(n.code,{children:"nethermind_db"}),"\nfolder and delete the ",(0,i.jsx)(n.code,{children:"mainnet"})," subfolder to remove the existing database for the mainnet."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the configuration file (optional)"}),": If you want to change any configuration settings before resyncing the\nnode, edit the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file located in the Nethermind directory. For example, you might want to adjust the\npruning settings or specify a different network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the Pivot block (optional)"}),"\\","\n",(0,i.jsx)(n.admonition,{type:"danger",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Only for versions before 1.19.0 where Auto-Pivot approach was introduced"})})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Etherscan"}),": If you want to speed up the syncing process, you can update the Pivot block to a more recent\none. To do this, find the ",(0,i.jsx)(n.code,{children:"Sync"})," section in the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file and update the ",(0,i.jsx)(n.code,{children:"PivotNumber"})," and ",(0,i.jsx)(n.code,{children:"PivotHash"}),'\nfields to match a recent "finalized" block number and its corresponding hash. You can obtain this information from\na block explorer such as ',(0,i.jsx)(n.a,{href:"https://etherscan.io/",children:"Etherscan"}),".",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.br,{}),"\n","Using block number 17165278 from ",(0,i.jsx)(n.a,{href:"https://etherscan.io/block/17165278",children:"Etherscan"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:' { \n \t "PivotNumber": 17165278,\n \t "PivotHash": "0xa665315efd923f3b11215feee09a9d3e13c5e6ee602fa19b642824682ec0a752"\n }\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Nethermind's GitHub"}),": Alternatively, you can update the Pivot block by referring to\nthe ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:"Nethermind's mainnet.cfg file on GitHub"}),".\nThe Pivot block is periodically bumped to the HEAD-8192 block of the mainnet chain. Copy the ",(0,i.jsx)(n.code,{children:"PivotNumber"}),"\nand ",(0,i.jsx)(n.code,{children:"PivotHash"})," values from the GitHub file and update your local ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file accordingly."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Restart the Nethermind node"}),": Start the Nethermind node again to initiate the resync process. The node will begin\nsyncing from the existing Pivot block or the specified updated Pivot block, downloading and processing all the blocks\nin the blockchain."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To ensure that your Nethermind node is resyncing, you can monitor the logs for the node's progress. The logs will\ndisplay information about the block processing, synchronization status and ",(0,i.jsx)(n.code,{children:"OldHeaders"})," being processed. By observing\nthe increasing block numbers and synchronization messages in the logs, you can confirm that the resync process is active\nand working as expected."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Old Headers 0 / 17154000 | queue 0 | current 0.00bps | total 0.00bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 768 / 17154000 | queue 0 | current 766.07bps | total 762.49bps"}),"\n",(0,i.jsx)(n.p,{children:"Beacon Headers from block 17154001 to block 17169722 | 960 / 15722 | queue 4992 | current 0.00bps | total\n40622848.83bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 9024 / 17154000 | queue 0 | current 576.40bps | total 1286.40bps"}),"\n",(0,i.jsxs)(n.p,{children:["Beacon Headers from block 17154001 to block 17169723 | 9024 / 15723 | queue 6698 | current 2694.81bps | total\n3882943.63bps",(0,i.jsx)(n.br,{}),"\n","Downloaded 17154031 / 17172359 | current 0.00bps | total 0.00bps"]}),"\n",(0,i.jsx)(n.p,{children:"Downloaded 17154062 / 17169724 | current 0.00bps | total 2.88bps"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Keep in mind that resyncing a Nethermind node can take a considerable amount of time. It depends on your hardware,\ninternet connection, and the size of the blockchain."})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var i=s(4164);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>w});var i=s(6540),t=s(4164),r=s(3104),l=s(6347),d=s(205),o=s(7485),a=s(1682),c=s(679);function h(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:i,default:t}}=e;return{value:n,label:s,attributes:i,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,o.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=u(e),[l,o]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=s.find((e=>e.default))??s[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[a,h]=j({queryString:s,groupId:t}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,c.Dv)(s);return[t,(0,i.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),g=(()=>{const e=a??m;return x({value:e,tabValues:r})?e:null})();(0,d.A)((()=>{g&&o(g)}),[g]);return{selectedValue:l,selectValue:(0,i.useCallback)((e=>{if(!x({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),h(e),p(e)}),[h,p,r]),tabValues:r}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function b(e){let{className:n,block:s,selectedValue:i,selectValue:l,tabValues:d}=e;const o=[],{blockElementScrollPositionUntilNextRender:a}=(0,r.a_)(),c=e=>{const n=e.currentTarget,s=o.indexOf(n),t=d[s].value;t!==i&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const s=o.indexOf(e.currentTarget)+1;n=o[s]??o[0];break}case"ArrowLeft":{const s=o.indexOf(e.currentTarget)-1;n=o[s]??o[o.length-1];break}}n?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>o.push(e),onKeyDown:h,onClick:c,...r,className:(0,t.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":i===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:r}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=m(e);return(0,y.jsxs)("div",{className:(0,t.A)("tabs-container",g.tabList),children:[(0,y.jsx)(b,{...n,...e}),(0,y.jsx)(f,{...n,...e})]})}function w(e){const n=(0,p.A)();return(0,y.jsx)(v,{...e,children:h(e.children)},String(n))}},5330:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png"},9175:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png"},4466:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png"},7017:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png"},3203:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png"},2725:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png"},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var i=s(6540);const t={},r=i.createContext(t);function l(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[614],{9070:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var i=s(4848),t=s(8453),r=s(1470),l=s(9365);const d={title:"Sync",sidebar_position:2},o=void 0,a={id:"fundamentals/sync",title:"Sync",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.28.0/fundamentals/sync.md",sourceDirName:"fundamentals",slug:"/fundamentals/sync",permalink:"/1.28.0/fundamentals/sync",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/sync.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Sync",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/1.28.0/fundamentals/configuration"},next:{title:"Security",permalink:"/1.28.0/fundamentals/security"}},c={},h=[{value:"There are three main synchronization modes",id:"there-are-three-main-synchronization-modes",level:2},{value:"Snap Sync",id:"snap-sync",level:2},{value:"How to Enable",id:"how-to-enable",level:4},{value:"Snap Sync vs Other Sync Modes",id:"snap-sync-vs-other-sync-modes",level:4},{value:"Current limitations and future development",id:"current-limitations-and-future-development",level:4},{value:"Fast Sync",id:"fast-sync",level:2},{value:"Archive Sync",id:"archive-sync",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Resync a node from scratch",id:"resync-a-node-from-scratch",level:2},{value:"Steps to Resync a Nethermind Node",id:"steps-to-resync-a-nethermind-node",level:3}];function u(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"there-are-three-main-synchronization-modes",children:"There are three main synchronization modes"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["snap sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"the fastest way to sync to the network (syncs to mainnet in ~3 hours)"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["fast sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"slower than snap sync"}),"\n",(0,i.jsx)(n.li,{children:"useful on nethermind-only chains (like Gnosis), where snap sync is not available for now"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["archive sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"heavy historical sync verifying all the transactions and keeping all the historical state"}),"\n",(0,i.jsxs)(n.li,{children:["you can run it like this ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Sync Mode"}),(0,i.jsx)(n.th,{children:"Disk Space needed"}),(0,i.jsx)(n.th,{children:"Full current state"}),(0,i.jsx)(n.th,{children:"Full current and all historical states"}),(0,i.jsx)(n.th,{children:"Can sync a full archive node from this"}),(0,i.jsx)(n.th,{children:"Time to sync"}),(0,i.jsx)(n.th,{children:"Time to RPC"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"archive"}),(0,i.jsx)(n.td,{children:"~12TB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~3 weeks"}),(0,i.jsx)(n.td,{children:"~3 weeks"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync with all bodies and receipts"}),(0,i.jsx)(n.td,{children:"~800GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~20 hours"}),(0,i.jsx)(n.td,{children:"~20 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"default snap/fast sync (with barriers set to support Eth2)"}),(0,i.jsx)(n.td,{children:"~500GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~11 hours"}),(0,i.jsx)(n.td,{children:"~11 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without receipts"}),(0,i.jsx)(n.td,{children:"~450GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~12 hours"}),(0,i.jsx)(n.td,{children:"~12 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without bodies and receipts"}),(0,i.jsx)(n.td,{children:"~200GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~9 hours"}),(0,i.jsx)(n.td,{children:"~9 hours"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"snap-sync",children:"Snap Sync"}),"\n",(0,i.jsx)(n.p,{children:"Snap sync allows a node to perform the initial synchronization and download of Ethereum\u2019s state up to 10 times faster\nthan using fast sync."}),"\n",(0,i.jsx)(n.h4,{id:"how-to-enable",children:"How to Enable"}),"\n",(0,i.jsxs)(n.p,{children:["Snap sync is enabled by default for majority of networks. To make sure, check if",(0,i.jsx)(n.code,{children:"SnapSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"})," in the Sync\nmodule of your ",(0,i.jsx)(n.code,{children:".cfg"})," file"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true\n}\n'})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not enable snap sync on a previously synced node. Only use when syncing to the network for the first\ntime."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not remove other configurations from Sync module. Just add ",(0,i.jsx)(n.code,{children:'"SnapSync": true'}),", e.g."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true,\n\t"PivotNumber": 15011000,\n "PivotHash": "0x46c838d02d5fa5bc070080ed7965da1d888f6eb1797045365407c7011280af56",\n \t"PivotTotalDifficulty": "52367203434576253689712",\n \t"FastBlocks": true\n}\n'})}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"snap-sync-vs-other-sync-modes",children:"Snap Sync vs Other Sync Modes"}),"\n",(0,i.jsx)(n.p,{children:"More than 12TB of storage is needed today to run a full archive node \u2014 one that stores all the state since genesis.\nBecause of that, setting up an archive node can take days or even weeks. Fast Sync can still take more than 24 hours on\nthe fast machine and download about 90GB state data. With Snap Sync, sync time is reduced to 2-3h with a download of\nabout 30GB."}),"\n",(0,i.jsx)(n.p,{children:"This reduction in sync time and download size has to do with the specific way in which Ethereum\u2019s state is stored in a\nnode: Merkle trees."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(5330).A+"",width:"1168",height:"939"})}),"\n",(0,i.jsx)(n.p,{children:"With Fast Sync, a node downloads the headers of each block and retrieves all the nodes beneath it until it reaches the\nleaves. By contrast, Snap Sync only downloads the leaf nodes, generating the remaining nodes locally which saves time\nand packets downloaded."}),"\n",(0,i.jsx)(n.h4,{id:"current-limitations-and-future-development",children:"Current limitations and future development"}),"\n",(0,i.jsx)(n.p,{children:"For now Snap Sync on the Nethermind client can only download the Ethereum state but not serve it to other clients - snap\nserving development is in progress, expected late 2023/early 2024."}),"\n",(0,i.jsx)(n.p,{children:"The only Ethereum client that supports serving Snap Sync requests is Geth, so only networks supported by Geth can be\nsynced using that method: Mainnet, Goerli, Sepolia."}),"\n",(0,i.jsx)(n.h2,{id:"fast-sync",children:"Fast Sync"}),"\n",(0,i.jsxs)(n.p,{children:["After completing the fast sync your node will have the ability to answer questions like ",(0,i.jsxs)(n.em,{children:["'what is my account\nbalance ",(0,i.jsx)(n.strong,{children:"now"}),"'"]}),", ",(0,i.jsxs)(n.em,{children:["'how many XYZ tokens SomeExchange holds ",(0,i.jsx)(n.strong,{children:"at the moment"}),"'"]}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Fast sync has multiple stages. Nethermind uses a ",(0,i.jsx)(n.code,{children:"pivot block"})," number to improve fast sync performance.\nThe ",(0,i.jsx)(n.code,{children:"pivot block"})," data is automatically updated after initialization of the client and consists of\nthe ",(0,i.jsx)(n.code,{children:"block number"}),", ",(0,i.jsx)(n.code,{children:"block hash"})," and ",(0,i.jsx)(n.code,{children:"block total difficulty"})," (please note that ",(0,i.jsx)(n.code,{children:"total difficulty"})," is different\nthan ",(0,i.jsx)(n.code,{children:"difficulty"}),"). Before synchronizing state data Nethermind synchronizes in two directions - backwards\nfrom ",(0,i.jsx)(n.code,{children:"pivot block"})," to 0 for headers and forward to the head of the chain for headers, blocks and receipts. Forward sync\nmight be very slow (5 - 50 bps) so having fresh pivot block is very important - it is guaranteed by recently implemented\nauto-update."]}),"\n",(0,i.jsx)(n.p,{children:"After downloading the block data Nethermind will start state sync (downloading the latest state trie nodes). We are\nproviding an estimate for the download size and progress but the real value may be different than the estimate (\nespecially if you are using an old version of Nethermind as we sometimes manually adjust the estimator based on our\nobservations of the chain growth rate). Because of this sometimes your sync may continue even when it shows ~100%\nfinished. The other important component is the speed of your sync - if your IO / network / file system causes the state\nsync to go much slower than around 1.5MB per second on average then you will start downloading some parts of the trie\nover and over again. In such cases you may be surprised to see something like 58000MB / 53000MB (100%). It means that\nyou downloaded around 5GB of data that is no longer needed. If your sync is very slow (extended beyond two days) then\nvery likely your setup cannot catch up with the chain progress."}),"\n",(0,i.jsxs)(n.p,{children:["After the state sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," messages like in archive sync - it means that your node\nis in sync and is processing the latest blocks."]}),"\n",(0,i.jsx)(n.p,{children:"Mainnet sync, at the time of writing (December 2020), takes around 8 hours on an UpCloud 16GB RAM 8 CPU $40 VM (and then\nsyncs receipts and bodies in the background if you enabled them in the configuration). Goerli sync should take around 40\nminutes."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast sync logs example for mainnet.",src:s(7017).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsxs)(n.p,{children:["State sync log messages have multiple values displayed. First ",(0,i.jsx)(n.code,{children:"dd.HH:mm:ss"})," total state sync time is displayed, followed\nby an estimated sync progress (percentage of total database data synced), then the current download speed is displayed (\nthere will be times when it will slow down to 0 or single digit numbers, especially towards the end of the sync). In\ngeneral 6 hours sync times shown on screenshots are with around 2000 kB/s (kilobytes per second) average sync rate. You\ncan calculate it in the example as ~45GB / (2MB/s) ~ 22500 seconds ~6.25 hours. We also display the number of state\naccounts synced, number of trie nodes synced and a diagnostic message in the format of ",(0,i.jsx)(n.em,{children:"[number_of_pending_requests]\n.[average time spent in response handler displayed as milliseconds]"}),". So ",(0,i.jsx)(n.code,{children:"5.6.20ms"})," means that we are awaiting for\nresponses to 5 requests that have been sent to peers and the average time it takes us to process a single response is\n6.20ms. The response handling times will differ depending on how many trie nodes are already cached (so they will be\nsignificantly slower for a while after the node restart when cache has to be rebuilt) and based on how fast the database\nIO is (SSD vs NVMe vs cloud drives). For a reasonable sync time you probably should expect these values to be below\n15ms (but they may be as high as 700ms for a while after restarting the node)."]}),"\n",(0,i.jsx)(n.p,{children:"A single restart of the node during the fast sync may extend the sync time by up to two hours because the node has to\nrebuild the caches by reading millions of values from the database."}),"\n",(0,i.jsx)(n.p,{children:"At the last stages of the sync the node will be repeatedly displaying the branch sync progress and changing the block\nnumber to which it tries to catch up. This stage should take between 30 minutes and two hours. If it lasts much more\nthen it is possible that you will not be able to catch up with the network progress."}),"\n",(0,i.jsx)(n.p,{children:"One of the best indicators that you are close to be synced is combined ~100% state size progress and nearly 100% branch\nsync progress."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(2725).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(3203).A+"",width:"1895",height:"795"})}),"\n",(0,i.jsx)(n.h2,{id:"archive-sync",children:"Archive Sync"}),"\n",(0,i.jsxs)(n.p,{children:["Archive sync is the 'heaviest' and slowest sync mode but allows to ask questions like ",(0,i.jsx)(n.em,{children:"'what was the balance of my\naccount 2 years ago?'"}),", ",(0,i.jsx)(n.em,{children:"'how many XYZ token were held in SomeExchange custody in 2017?'"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["We have prepared default archive sync configurations and they can be launched from Nethermind Launcher (just choose the\narchive options) or by simply loading appropriate config when launching ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config goerli_archive"})}),"\n",(0,i.jsx)(n.p,{children:"While for some smaller networks archive sync can complete very quickly (in minutes or hours) mainnet sync would take 2 -\n6 weeks depending on the speed of your IO (whether you use SSD or NVMe or depending on the cloud provider IOPS).\nDatabase size in archive sync is the biggest from all modes as you will store all the historical data."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Example of the archive sync logs",src:s(4466).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(9175).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:"Explanation of some data in the logs:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["at the beginning you may see a ",(0,i.jsx)(n.em,{children:"'Waiting for peers...'"})," message while the node is trying to discover nodes that it can\nsync with."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Downloaded 1234/8000000'"})," shows the number of unprocessed blocks (with transactions) downloaded from the network.\nFor ",(0,i.jsx)(n.code,{children:"mainnet"}),"this value may be slower than processing at first but very quickly you will see blocks being downloaded\nmuch faster than processed. Empty blocks can be as small as 512 bytes (just headers without transactions) and full\nblocks with heavy transactions can reach a few hundred kilobytes. We display both current download speed (calculated\nin the last second) and average (total) speed since starting the node."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Processed ...'"})," displays the blocks that have been processed by the EVM. The first number shows the current head\nblock number, then you can see ",(0,i.jsx)(n.code,{children:"mgasps"})," (million gas per second) - current and total, then ",(0,i.jsx)(n.code,{children:"tps"})," (transactions per\nsecond) - current and total, ",(0,i.jsx)(n.code,{children:"bps"})," (blocks per second). Then ",(0,i.jsx)(n.code,{children:"recv queue"})," (transactions signature public key recovery\nqueue), ",(0,i.jsx)(n.code,{children:"proc queue"})," (processor queue). Both recovery queue and processor queue are designed so when too many blocks\nare waiting for processing then only their hashes are kept in memory and remaining data are stored in the database.\nThus, the queues numbers that you can see will be capped by some number."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Cache for epoch...'"})," informs about ",(0,i.jsx)(n.code,{children:"ethash"})," cache needed for block seal verification (only on ",(0,i.jsx)(n.code,{children:"mainnet"}),"\nand ",(0,i.jsx)(n.code,{children:"ropsten"}),"). Caches will be calculated every 30000 blocks (length of an epoch) but can also be calculated for the\nlatest blocks that are being broadcast on the network."]}),"\n",(0,i.jsxs)(n.li,{children:["After the archive sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," message appearing on average every 15 seconds when\nthe new block is processed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mgasps"}),", ",(0,i.jsx)(n.code,{children:"tps"}),", ",(0,i.jsx)(n.code,{children:"bps"})," values should not be treated as comparable as they may differ massively on different parts of\nthe chain. For example when blocks are empty you may see very high ",(0,i.jsx)(n.code,{children:"bps"})," values with very low (or even zero) ",(0,i.jsx)(n.code,{children:"tps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," values as there are no transactions and no gas for EVM processing and blocks are very light. On the other\nhand when blocks are filled with very heavy transactions then ",(0,i.jsx)(n.code,{children:"bps"})," might be very low while ",(0,i.jsx)(n.code,{children:"mgasps"})," will be very\nhigh. It is even possible that you will see a lot of very light transactions where ",(0,i.jsx)(n.code,{children:"tps"})," will be high while ",(0,i.jsx)(n.code,{children:"bps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," will be average."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,i.jsx)(n.p,{children:"Sync time heavily depends on the hardware used for the node, network speed, and peering. We are constantly pursuing to make it as fast as possible. Below is a brief on how the sync time looks on different machines and various chains (tested with Nethermind v1.21.0)."}),"\n",(0,i.jsxs)(r.A,{children:[(0,i.jsxs)(l.A,{value:"highend-vm",label:"High-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Akamai (formerly Linode)"}),"\n",(0,i.jsx)(n.li,{children:"CPU: AMD EPYC 7601, 16 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 64 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1.2 TB, ~40k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 7h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 58m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 2m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 5m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 21m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 22m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 17m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 46m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 31m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 10m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"midend-vm",label:"Mid-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: AWS"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/c7g/",children:"c7g.2xlarge"}),": 8 vCPU, 16 GiB memory"]}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~10k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 12h 37m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 35m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1h 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 43m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 2h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 4h 28m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 10m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 23m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 35m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 17m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 29m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 18h 28m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 52m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 25m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 5m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"oldspec-vm",label:"Old-spec VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Scaleway"}),"\n",(0,i.jsx)(n.li,{children:"CPU: Intel Xeon Processor E5-2620 v2, 2 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 192 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~44k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 1m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 29m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 25m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 3h 39m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 8h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 5h 55m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 34m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 14m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 16m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 2h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 26m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 45m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 56m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 30m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 3h 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 25m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"energyweb",label:"Energy Web",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 7m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 15h 20m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"volta",label:"Volta",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 14h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 42m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 16h 10m"]}),"\n"]})]})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"resync-a-node-from-scratch",children:"Resync a node from scratch"}),"\n",(0,i.jsx)(n.p,{children:"This guide explains how to resync a Nethermind node using the existing Pivot block or updating it to a more recent one."}),"\n",(0,i.jsx)(n.h3,{id:"steps-to-resync-a-nethermind-node",children:"Steps to Resync a Nethermind Node"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Stop the Nethermind node"}),": If your Nethermind node is currently running, stop it to ensure that no new data is\nbeing written to the database during the resync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Delete the existing database"}),": Navigate to the Nethermind data directory. The location of this directory depends\non how Nethermind was installed and your configuration settings. Inside the data directory, find the ",(0,i.jsx)(n.code,{children:"nethermind_db"}),"\nfolder and delete the ",(0,i.jsx)(n.code,{children:"mainnet"})," subfolder to remove the existing database for the mainnet."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the configuration file (optional)"}),": If you want to change any configuration settings before resyncing the\nnode, edit the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file located in the Nethermind directory. For example, you might want to adjust the\npruning settings or specify a different network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the Pivot block (optional)"}),"\\","\n",(0,i.jsx)(n.admonition,{type:"danger",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Only for versions before 1.19.0 where Auto-Pivot approach was introduced"})})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Etherscan"}),": If you want to speed up the syncing process, you can update the Pivot block to a more recent\none. To do this, find the ",(0,i.jsx)(n.code,{children:"Sync"})," section in the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file and update the ",(0,i.jsx)(n.code,{children:"PivotNumber"})," and ",(0,i.jsx)(n.code,{children:"PivotHash"}),'\nfields to match a recent "finalized" block number and its corresponding hash. You can obtain this information from\na block explorer such as ',(0,i.jsx)(n.a,{href:"https://etherscan.io/",children:"Etherscan"}),".",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.br,{}),"\n","Using block number 17165278 from ",(0,i.jsx)(n.a,{href:"https://etherscan.io/block/17165278",children:"Etherscan"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:' { \n \t "PivotNumber": 17165278,\n \t "PivotHash": "0xa665315efd923f3b11215feee09a9d3e13c5e6ee602fa19b642824682ec0a752"\n }\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Nethermind's GitHub"}),": Alternatively, you can update the Pivot block by referring to\nthe ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:"Nethermind's mainnet.cfg file on GitHub"}),".\nThe Pivot block is periodically bumped to the HEAD-8192 block of the mainnet chain. Copy the ",(0,i.jsx)(n.code,{children:"PivotNumber"}),"\nand ",(0,i.jsx)(n.code,{children:"PivotHash"})," values from the GitHub file and update your local ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file accordingly."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Restart the Nethermind node"}),": Start the Nethermind node again to initiate the resync process. The node will begin\nsyncing from the existing Pivot block or the specified updated Pivot block, downloading and processing all the blocks\nin the blockchain."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To ensure that your Nethermind node is resyncing, you can monitor the logs for the node's progress. The logs will\ndisplay information about the block processing, synchronization status and ",(0,i.jsx)(n.code,{children:"OldHeaders"})," being processed. By observing\nthe increasing block numbers and synchronization messages in the logs, you can confirm that the resync process is active\nand working as expected."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Old Headers 0 / 17154000 | queue 0 | current 0.00bps | total 0.00bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 768 / 17154000 | queue 0 | current 766.07bps | total 762.49bps"}),"\n",(0,i.jsx)(n.p,{children:"Beacon Headers from block 17154001 to block 17169722 | 960 / 15722 | queue 4992 | current 0.00bps | total\n40622848.83bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 9024 / 17154000 | queue 0 | current 576.40bps | total 1286.40bps"}),"\n",(0,i.jsxs)(n.p,{children:["Beacon Headers from block 17154001 to block 17169723 | 9024 / 15723 | queue 6698 | current 2694.81bps | total\n3882943.63bps",(0,i.jsx)(n.br,{}),"\n","Downloaded 17154031 / 17172359 | current 0.00bps | total 0.00bps"]}),"\n",(0,i.jsx)(n.p,{children:"Downloaded 17154062 / 17169724 | current 0.00bps | total 2.88bps"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Keep in mind that resyncing a Nethermind node can take a considerable amount of time. It depends on your hardware,\ninternet connection, and the size of the blockchain."})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var i=s(4164);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>w});var i=s(6540),t=s(4164),r=s(3104),l=s(6347),d=s(205),o=s(7485),a=s(1682),c=s(679);function h(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:i,default:t}}=e;return{value:n,label:s,attributes:i,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,o.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=u(e),[l,o]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=s.find((e=>e.default))??s[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[a,h]=j({queryString:s,groupId:t}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,c.Dv)(s);return[t,(0,i.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),g=(()=>{const e=a??m;return x({value:e,tabValues:r})?e:null})();(0,d.A)((()=>{g&&o(g)}),[g]);return{selectedValue:l,selectValue:(0,i.useCallback)((e=>{if(!x({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),h(e),p(e)}),[h,p,r]),tabValues:r}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function b(e){let{className:n,block:s,selectedValue:i,selectValue:l,tabValues:d}=e;const o=[],{blockElementScrollPositionUntilNextRender:a}=(0,r.a_)(),c=e=>{const n=e.currentTarget,s=o.indexOf(n),t=d[s].value;t!==i&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const s=o.indexOf(e.currentTarget)+1;n=o[s]??o[0];break}case"ArrowLeft":{const s=o.indexOf(e.currentTarget)-1;n=o[s]??o[o.length-1];break}}n?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>o.push(e),onKeyDown:h,onClick:c,...r,className:(0,t.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":i===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:r}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=m(e);return(0,y.jsxs)("div",{className:(0,t.A)("tabs-container",g.tabList),children:[(0,y.jsx)(b,{...n,...e}),(0,y.jsx)(f,{...n,...e})]})}function w(e){const n=(0,p.A)();return(0,y.jsx)(v,{...e,children:h(e.children)},String(n))}},5330:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png"},9175:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png"},4466:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png"},7017:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png"},3203:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png"},2725:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png"},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var i=s(6540);const t={},r=i.createContext(t);function l(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2f0928d9.eab39528.js b/assets/js/2f0928d9.712c0bf5.js similarity index 99% rename from assets/js/2f0928d9.eab39528.js rename to assets/js/2f0928d9.712c0bf5.js index 2a30eb414..50938fa46 100644 --- a/assets/js/2f0928d9.eab39528.js +++ b/assets/js/2f0928d9.712c0bf5.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5641],{1326:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const t={title:"parity namespace",sidebar_label:"parity",sidebar_position:5},d=void 0,a={id:"interacting/json-rpc-ns/parity",title:"parity namespace",description:"parity_clearEngineSigner",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/parity.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/parity",permalink:"/1.27.0/interacting/json-rpc-ns/parity",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/parity.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:5,frontMatter:{title:"parity namespace",sidebar_label:"parity",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"net",permalink:"/1.27.0/interacting/json-rpc-ns/net"},next:{title:"personal",permalink:"/1.27.0/interacting/json-rpc-ns/personal"}},o={},h=[{value:"parity_clearEngineSigner",id:"parity_clearenginesigner",level:3},{value:"parity_enode",id:"parity_enode",level:3},{value:"parity_getBlockReceipts",id:"parity_getblockreceipts",level:3},{value:"parity_netPeers",id:"parity_netpeers",level:3},{value:"parity_pendingTransactions",id:"parity_pendingtransactions",level:3},{value:"parity_setEngineSigner",id:"parity_setenginesigner",level:3},{value:"parity_setEngineSignerSecret",id:"parity_setenginesignersecret",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"parity_clearenginesigner",children:"parity_clearEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_clearEngineSigner",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_enode",children:"parity_enode"}),"\n",(0,r.jsx)(n.p,{children:"Returns the node enode URI."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_enode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_getblockreceipts",children:"parity_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_netpeers",children:"parity_netPeers"}),"\n",(0,r.jsx)(n.p,{children:"Returns connected peers. Peers with non-empty protocols have completed handshake."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_netPeers",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"active"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"connected"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"max"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"peers"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"caps"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"network"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"localAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"remoteAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"version"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_pendingtransactions",children:"parity_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given sender address."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_pendingTransactions",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"condition"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creates"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"publicKey"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prefixedBytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"raw"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"standardV"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesigner",children:"parity_setEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"password"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSigner",\n "params": [address, password]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesignersecret",children:"parity_setEngineSignerSecret"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"privateKey"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSignerSecret",\n "params": [privateKey]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),t=s(205),d=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function p(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[c,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:s,groupId:i}),[p,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),m=(()=>{const e=a??p;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{m&&d(m)}),[m]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,l]),tabValues:l}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),i=t[s].value;i!==r&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",m.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=p(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",m.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,g.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>t});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5641],{1326:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const t={title:"parity namespace",sidebar_label:"parity",sidebar_position:5},d=void 0,a={id:"interacting/json-rpc-ns/parity",title:"parity namespace",description:"parity_clearEngineSigner",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/parity.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/parity",permalink:"/1.27.0/interacting/json-rpc-ns/parity",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/parity.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:5,frontMatter:{title:"parity namespace",sidebar_label:"parity",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"net",permalink:"/1.27.0/interacting/json-rpc-ns/net"},next:{title:"personal",permalink:"/1.27.0/interacting/json-rpc-ns/personal"}},o={},h=[{value:"parity_clearEngineSigner",id:"parity_clearenginesigner",level:3},{value:"parity_enode",id:"parity_enode",level:3},{value:"parity_getBlockReceipts",id:"parity_getblockreceipts",level:3},{value:"parity_netPeers",id:"parity_netpeers",level:3},{value:"parity_pendingTransactions",id:"parity_pendingtransactions",level:3},{value:"parity_setEngineSigner",id:"parity_setenginesigner",level:3},{value:"parity_setEngineSignerSecret",id:"parity_setenginesignersecret",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"parity_clearenginesigner",children:"parity_clearEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_clearEngineSigner",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_enode",children:"parity_enode"}),"\n",(0,r.jsx)(n.p,{children:"Returns the node enode URI."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_enode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_getblockreceipts",children:"parity_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_netpeers",children:"parity_netPeers"}),"\n",(0,r.jsx)(n.p,{children:"Returns connected peers. Peers with non-empty protocols have completed handshake."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_netPeers",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"active"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"connected"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"max"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"peers"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"caps"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"network"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"localAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"remoteAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"version"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_pendingtransactions",children:"parity_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given sender address."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_pendingTransactions",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"condition"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creates"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"publicKey"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prefixedBytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"raw"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"standardV"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesigner",children:"parity_setEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"password"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSigner",\n "params": [address, password]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesignersecret",children:"parity_setEngineSignerSecret"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"privateKey"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSignerSecret",\n "params": [privateKey]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),t=s(205),d=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function p(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[c,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:s,groupId:i}),[p,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),m=(()=>{const e=a??p;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{m&&d(m)}),[m]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,l]),tabValues:l}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),i=t[s].value;i!==r&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",m.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=p(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",m.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,g.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>t});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2ffe730f.f0b33092.js b/assets/js/2ffe730f.de043466.js similarity index 98% rename from assets/js/2ffe730f.f0b33092.js rename to assets/js/2ffe730f.de043466.js index 936088b74..0dd5416a9 100644 --- a/assets/js/2ffe730f.f0b33092.js +++ b/assets/js/2ffe730f.de043466.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1352],{8661:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>a});var r=i(4848),t=i(8453);const s={title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},d=void 0,o={id:"developers/building-from-source",title:"Building from source",description:"The Nethermind's source code can be obtained from our repository on",source:"@site/versioned_docs/version-1.26.0/developers/building-from-source.md",sourceDirName:"developers",slug:"/developers/building-from-source",permalink:"/1.26.0/developers/building-from-source",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/developers/building-from-source.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Aura-based validators",permalink:"/1.26.0/validators/aura"},next:{title:"Plugins",permalink:"/1.26.0/developers/plugins"}},l={},a=[{value:"Building standalone binaries",id:"building-standalone-binaries",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Building",id:"building",level:3},{value:"Running",id:"running",level:4},{value:"Testing",id:"testing",level:4},{value:"Bulding Docker image",id:"bulding-docker-image",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["The Nethermind's source code can be obtained from ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind",children:"our repository"})," on\nGitHub:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone --recursive https://github.com/nethermindeth/nethermind.git\n"})}),"\n",(0,r.jsx)(n.p,{children:"There are two options buiding Nethermind from source code:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#building-standalone-binaries",children:"Standalone binaries"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#bulding-docker-image",children:"Docker image"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"building-standalone-binaries",children:"Building standalone binaries"}),"\n",(0,r.jsx)(n.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(n.p,{children:["To build Nethermind from source, install ",(0,r.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/download",children:".NET SDK"})," 8 or later."]}),"\n",(0,r.jsx)(n.h3,{id:"building",children:"Building"}),"\n",(0,r.jsx)(n.p,{children:"To build both the client and tests, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"dotnet build src/Nethermind/Nethermind.sln -c release\n"})}),"\n",(0,r.jsx)(n.p,{children:"To simply run the client with a specific configuration without building tests, see below."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Before running the client or tests, ensure the\nplatform-specific ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#prerequisites",children:"prerequisites"})," are met."]})}),"\n",(0,r.jsx)(n.h4,{id:"running",children:"Running"}),"\n",(0,r.jsx)(n.p,{children:"Nethermind can be launched immediately without compiling explicitly (thus, the previous step can be skipped). The following command builds Nethermind if needed and runs it:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind/Nethermind.Runner\ndotnet run -c release -- -c mainnet\n"})}),"\n",(0,r.jsxs)(n.p,{children:["All Nethermind-specific parameters can be specified after ",(0,r.jsx)(n.code,{children:"--"}),". For instance, the command above specifies the Mainnet\nconfiguration only."]}),"\n",(0,r.jsxs)(n.p,{children:["The build artifacts can be found in the ",(0,r.jsx)(n.code,{children:"src/Nethermind/artifacts/bin/Nethermind.Runner/release"})," directory. By default, the logs and database directories are located here as well."]}),"\n",(0,r.jsxs)(n.p,{children:["For more info, see ",(0,r.jsx)(n.a,{href:"/1.26.0/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"testing",children:"Testing"}),"\n",(0,r.jsx)(n.p,{children:"There are two test suites \u2014 Nethermind and Ethereum Foundation. Tests can be run with the following commands (the\ninitial step of the build is not required):"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind\n\n# Run Nethermind tests\ndotnet test Nethermind.sln -c release\n\n# Run Ethereum Foundation tests\ndotnet test EthereumTests.sln -c release\n"})}),"\n",(0,r.jsx)(n.h2,{id:"bulding-docker-image",children:"Bulding Docker image"}),"\n",(0,r.jsx)(n.p,{children:"To build Nethermind Docker image, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker build -t nethermind .\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For more info about running Docker containers,\nsee ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#docker-container",children:"Installing Nethermind"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>o});var r=i(6540);const t={},s=r.createContext(t);function d(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1352],{8661:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>a});var r=i(4848),t=i(8453);const s={title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},d=void 0,o={id:"developers/building-from-source",title:"Building from source",description:"The Nethermind's source code can be obtained from our repository on",source:"@site/versioned_docs/version-1.26.0/developers/building-from-source.md",sourceDirName:"developers",slug:"/developers/building-from-source",permalink:"/1.26.0/developers/building-from-source",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/developers/building-from-source.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Aura-based validators",permalink:"/1.26.0/validators/aura"},next:{title:"Plugins",permalink:"/1.26.0/developers/plugins"}},l={},a=[{value:"Building standalone binaries",id:"building-standalone-binaries",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Building",id:"building",level:3},{value:"Running",id:"running",level:4},{value:"Testing",id:"testing",level:4},{value:"Bulding Docker image",id:"bulding-docker-image",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["The Nethermind's source code can be obtained from ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind",children:"our repository"})," on\nGitHub:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone --recursive https://github.com/nethermindeth/nethermind.git\n"})}),"\n",(0,r.jsx)(n.p,{children:"There are two options buiding Nethermind from source code:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#building-standalone-binaries",children:"Standalone binaries"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#bulding-docker-image",children:"Docker image"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"building-standalone-binaries",children:"Building standalone binaries"}),"\n",(0,r.jsx)(n.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(n.p,{children:["To build Nethermind from source, install ",(0,r.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/download",children:".NET SDK"})," 8 or later."]}),"\n",(0,r.jsx)(n.h3,{id:"building",children:"Building"}),"\n",(0,r.jsx)(n.p,{children:"To build both the client and tests, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"dotnet build src/Nethermind/Nethermind.sln -c release\n"})}),"\n",(0,r.jsx)(n.p,{children:"To simply run the client with a specific configuration without building tests, see below."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Before running the client or tests, ensure the\nplatform-specific ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#prerequisites",children:"prerequisites"})," are met."]})}),"\n",(0,r.jsx)(n.h4,{id:"running",children:"Running"}),"\n",(0,r.jsx)(n.p,{children:"Nethermind can be launched immediately without compiling explicitly (thus, the previous step can be skipped). The following command builds Nethermind if needed and runs it:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind/Nethermind.Runner\ndotnet run -c release -- -c mainnet\n"})}),"\n",(0,r.jsxs)(n.p,{children:["All Nethermind-specific parameters can be specified after ",(0,r.jsx)(n.code,{children:"--"}),". For instance, the command above specifies the Mainnet\nconfiguration only."]}),"\n",(0,r.jsxs)(n.p,{children:["The build artifacts can be found in the ",(0,r.jsx)(n.code,{children:"src/Nethermind/artifacts/bin/Nethermind.Runner/release"})," directory. By default, the logs and database directories are located here as well."]}),"\n",(0,r.jsxs)(n.p,{children:["For more info, see ",(0,r.jsx)(n.a,{href:"/1.26.0/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"testing",children:"Testing"}),"\n",(0,r.jsx)(n.p,{children:"There are two test suites \u2014 Nethermind and Ethereum Foundation. Tests can be run with the following commands (the\ninitial step of the build is not required):"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind\n\n# Run Nethermind tests\ndotnet test Nethermind.sln -c release\n\n# Run Ethereum Foundation tests\ndotnet test EthereumTests.sln -c release\n"})}),"\n",(0,r.jsx)(n.h2,{id:"bulding-docker-image",children:"Bulding Docker image"}),"\n",(0,r.jsx)(n.p,{children:"To build Nethermind Docker image, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker build -t nethermind .\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For more info about running Docker containers,\nsee ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#docker-container",children:"Installing Nethermind"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>o});var r=i(6540);const t={},s=r.createContext(t);function d(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/303dbec2.34f6ed26.js b/assets/js/303dbec2.e287bfdd.js similarity index 99% rename from assets/js/303dbec2.34f6ed26.js rename to assets/js/303dbec2.e287bfdd.js index 9996faa3a..579305657 100644 --- a/assets/js/303dbec2.34f6ed26.js +++ b/assets/js/303dbec2.e287bfdd.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5199],{5573:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>j,frontMatter:()=>t,metadata:()=>d,toc:()=>u});var r=s(4848),l=s(8453),a=s(1470),i=s(9365);const t={title:"clique namespace",sidebar_label:"clique",sidebar_position:1},c=void 0,d={id:"interacting/json-rpc-ns/clique",title:"clique namespace",description:"clique_discard",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/clique.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/clique",permalink:"/1.26.0/interacting/json-rpc-ns/clique",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/clique.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"clique namespace",sidebar_label:"clique",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"admin",permalink:"/1.26.0/interacting/json-rpc-ns/admin"},next:{title:"debug",permalink:"/1.26.0/interacting/json-rpc-ns/debug"}},o={},u=[{value:"clique_discard",id:"clique_discard",level:3},{value:"clique_getBlockSigner",id:"clique_getblocksigner",level:3},{value:"clique_getSigners",id:"clique_getsigners",level:3},{value:"clique_getSignersAnnotated",id:"clique_getsignersannotated",level:3},{value:"clique_getSignersAtHash",id:"clique_getsignersathash",level:3},{value:"clique_getSignersAtHashAnnotated",id:"clique_getsignersathashannotated",level:3},{value:"clique_getSignersAtNumber",id:"clique_getsignersatnumber",level:3},{value:"clique_getSnapshot",id:"clique_getsnapshot",level:3},{value:"clique_getSnapshotAtHash",id:"clique_getsnapshotathash",level:3},{value:"clique_produceBlock",id:"clique_produceblock",level:3},{value:"clique_propose",id:"clique_propose",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"clique_discard",children:"clique_discard"}),"\n",(0,r.jsx)(n.p,{children:"This method drops a currently running proposal. The signer will not cast further votes (either for or against) the address."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_discard",\n "params": [signer]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getblocksigner",children:"clique_getBlockSigner"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getBlockSigner",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsigners",children:"clique_getSigners"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSigners",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersannotated",children:"clique_getSignersAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAnnotated",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathash",children:"clique_getSignersAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathashannotated",children:"clique_getSignersAtHashAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHashAnnotated",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersatnumber",children:"clique_getSignersAtNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by block number."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtNumber",\n "params": [number]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshot",children:"clique_getSnapshot"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a snapshot of all clique state at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshot",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshotathash",children:"clique_getSnapshotAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the state snapshot at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshotAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_produceblock",children:"clique_produceBlock"}),"\n",(0,r.jsx)(n.p,{children:"Forces Clique block producer to produce a new block"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_produceBlock",\n "params": [parentHash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_propose",children:"clique_propose"}),"\n",(0,r.jsxs)(n.p,{children:["Adds a new authorization proposal that the signer will attempt to push through. If the ",(0,r.jsx)(n.code,{children:"vote"})," parameter is true, the local signer votes for the given address to be included in the set of authorized signers. With ",(0,r.jsx)(n.code,{children:"vote"})," set to false, the signer is against the address."]}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"vote"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_propose",\n "params": [signer, vote]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>i});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var a=s(4848);function i(e){let{children:n,hidden:s,className:i}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,i),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>A});var r=s(6540),l=s(4164),a=s(3104),i=s(6347),t=s(205),c=s(7485),d=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const l=(0,i.W6)(),a=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(l.location.search);n.set(a,e),l.replace({...l.location,search:n.toString()})}),[a,l])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,a=h(e),[i,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[d,u]=p({queryString:s,groupId:l}),[x,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,a]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&a.set(e)}),[s,a])]}({groupId:l}),m=(()=>{const e=d??x;return j({value:e,tabValues:a})?e:null})();(0,t.A)((()=>{m&&c(m)}),[m]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),g(e)}),[u,g,a]),tabValues:a}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:i,tabValues:t}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),l=t[s].value;l!==r&&(d(n),i(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:a}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:u,onClick:o,...a,className:(0,l.A)("tabs__item",m.tabItem,a?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:a}=e;const i=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=i.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function q(e){const n=x(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",m.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(f,{...n,...e})]})}function A(e){const n=(0,g.A)();return(0,b.jsx)(q,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>t});var r=s(6540);const l={},a=r.createContext(l);function i(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:i(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5199],{5573:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>j,frontMatter:()=>t,metadata:()=>d,toc:()=>u});var r=s(4848),l=s(8453),a=s(1470),i=s(9365);const t={title:"clique namespace",sidebar_label:"clique",sidebar_position:1},c=void 0,d={id:"interacting/json-rpc-ns/clique",title:"clique namespace",description:"clique_discard",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/clique.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/clique",permalink:"/1.26.0/interacting/json-rpc-ns/clique",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/clique.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"clique namespace",sidebar_label:"clique",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"admin",permalink:"/1.26.0/interacting/json-rpc-ns/admin"},next:{title:"debug",permalink:"/1.26.0/interacting/json-rpc-ns/debug"}},o={},u=[{value:"clique_discard",id:"clique_discard",level:3},{value:"clique_getBlockSigner",id:"clique_getblocksigner",level:3},{value:"clique_getSigners",id:"clique_getsigners",level:3},{value:"clique_getSignersAnnotated",id:"clique_getsignersannotated",level:3},{value:"clique_getSignersAtHash",id:"clique_getsignersathash",level:3},{value:"clique_getSignersAtHashAnnotated",id:"clique_getsignersathashannotated",level:3},{value:"clique_getSignersAtNumber",id:"clique_getsignersatnumber",level:3},{value:"clique_getSnapshot",id:"clique_getsnapshot",level:3},{value:"clique_getSnapshotAtHash",id:"clique_getsnapshotathash",level:3},{value:"clique_produceBlock",id:"clique_produceblock",level:3},{value:"clique_propose",id:"clique_propose",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"clique_discard",children:"clique_discard"}),"\n",(0,r.jsx)(n.p,{children:"This method drops a currently running proposal. The signer will not cast further votes (either for or against) the address."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_discard",\n "params": [signer]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getblocksigner",children:"clique_getBlockSigner"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getBlockSigner",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsigners",children:"clique_getSigners"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSigners",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersannotated",children:"clique_getSignersAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAnnotated",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathash",children:"clique_getSignersAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathashannotated",children:"clique_getSignersAtHashAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHashAnnotated",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersatnumber",children:"clique_getSignersAtNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by block number."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtNumber",\n "params": [number]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshot",children:"clique_getSnapshot"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a snapshot of all clique state at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshot",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshotathash",children:"clique_getSnapshotAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the state snapshot at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshotAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_produceblock",children:"clique_produceBlock"}),"\n",(0,r.jsx)(n.p,{children:"Forces Clique block producer to produce a new block"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_produceBlock",\n "params": [parentHash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_propose",children:"clique_propose"}),"\n",(0,r.jsxs)(n.p,{children:["Adds a new authorization proposal that the signer will attempt to push through. If the ",(0,r.jsx)(n.code,{children:"vote"})," parameter is true, the local signer votes for the given address to be included in the set of authorized signers. With ",(0,r.jsx)(n.code,{children:"vote"})," set to false, the signer is against the address."]}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"vote"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_propose",\n "params": [signer, vote]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>i});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var a=s(4848);function i(e){let{children:n,hidden:s,className:i}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,i),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>A});var r=s(6540),l=s(4164),a=s(3104),i=s(6347),t=s(205),c=s(7485),d=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const l=(0,i.W6)(),a=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(l.location.search);n.set(a,e),l.replace({...l.location,search:n.toString()})}),[a,l])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,a=h(e),[i,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[d,u]=p({queryString:s,groupId:l}),[x,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,a]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&a.set(e)}),[s,a])]}({groupId:l}),m=(()=>{const e=d??x;return j({value:e,tabValues:a})?e:null})();(0,t.A)((()=>{m&&c(m)}),[m]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),g(e)}),[u,g,a]),tabValues:a}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:i,tabValues:t}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),l=t[s].value;l!==r&&(d(n),i(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:a}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:u,onClick:o,...a,className:(0,l.A)("tabs__item",m.tabItem,a?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:a}=e;const i=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=i.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function q(e){const n=x(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",m.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(f,{...n,...e})]})}function A(e){const n=(0,g.A)();return(0,b.jsx)(q,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>t});var r=s(6540);const l={},a=r.createContext(l);function i(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:i(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/314c229e.9f7bade2.js b/assets/js/314c229e.3c0fc253.js similarity index 99% rename from assets/js/314c229e.9f7bade2.js rename to assets/js/314c229e.3c0fc253.js index c743ca983..31dd1c879 100644 --- a/assets/js/314c229e.9f7bade2.js +++ b/assets/js/314c229e.3c0fc253.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9302],{4004:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var r=s(4848),t=s(8453),i=s(1470),l=s(9365);const d={title:"Database",sidebar_position:5},c=void 0,a={id:"fundamentals/database",title:"Database",description:"Nethermind uses the RocksDB database to store the state. By default, the database is located in the",source:"@site/versioned_docs/version-1.28.0/fundamentals/database.md",sourceDirName:"fundamentals",slug:"/fundamentals/database",permalink:"/1.28.0/fundamentals/database",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/database.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:5,frontMatter:{title:"Database",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Logs",permalink:"/1.28.0/fundamentals/logs"},next:{title:"Pruning",permalink:"/1.28.0/fundamentals/pruning"}},o={},h=[{value:"Database directory structure",id:"database-directory-structure",level:2},{value:"Database size",id:"database-size",level:2},{value:"Reducing database size",id:"reducing-database-size",level:2}];function u(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Nethermind uses the ",(0,r.jsx)(n.a,{href:"https://rocksdb.org",children:"RocksDB"})," database to store the state. By default, the database is located in the\nsame directory where the Nethermind executable is. You can change the database location using the ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#basic-options",children:(0,r.jsx)(n.code,{children:"-d, --baseDbPath"})})," command line option."]}),"\n",(0,r.jsx)(n.h2,{id:"database-directory-structure",children:"Database directory structure"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Directory"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blockInfos"}),(0,r.jsx)(n.td,{children:"Information about blocks at each level of the block tree (canonical chain and branches)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blocks"}),(0,r.jsx)(n.td,{children:"Block bodies (block transactions and uncles)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"bloom"}),(0,r.jsx)(n.td,{children:"Bloom indices for fast log searches"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"canonicalHashTrie"}),(0,r.jsx)(n.td,{children:"LES protocol related data"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"code"}),(0,r.jsx)(n.td,{children:"Contract bytecodes"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"discoveryNodes"}),(0,r.jsx)(n.td,{children:"Peers discovered via discovery protocol - used for quick peering after restarts (you can copy this DB between nodes to speed up peering)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"headers"}),(0,r.jsx)(n.td,{children:"Block headers only"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"pendingTx"}),(0,r.jsx)(n.td,{children:"The second level cache of pending transactions/mempool (the first level is in memory). Wiped out on each restart."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"peers"}),(0,r.jsx)(n.td,{children:"Additional sync peers information (like peer reputation) - you can copy this DB between nodes to speed up peering on fresh sync"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"receipts"}),(0,r.jsx)(n.td,{children:"Transaction receipts"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"state"}),(0,r.jsx)(n.td,{children:"Blockchain state including accounts and contract storage (Patricia trie nodes)"})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:["You can use ",(0,r.jsx)(n.code,{children:"rsync"})," between your nodes to clone the database (One of our users copied the entire 4.5TB archive state this\nway while the node was running and only stopped the node for the very last stage of ",(0,r.jsx)(n.code,{children:"rsync"})," ). You can also copy\nthe database between Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h2,{id:"database-size",children:"Database size"}),"\n",(0,r.jsx)(n.p,{children:"Below is a comprehensive list of the supported chains, along with a detailed breakdown of their respective database directories. For reference, the database sizes listed have been determined using the standard configurations provided."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(l.A,{value:"mainnet",label:"Mainnet",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 158 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 209 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 595 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 6.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 8.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 4.7 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.7 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 985 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"sepolia",label:"Sepolia",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 42 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 39 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 293 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 2.1 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 6.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.3 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 386 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"holesky",label:"Holesky",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 18 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 14 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 55 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 738 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 967 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 506 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 737 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 90 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"gnosis",label:"Gnosis",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 66 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 216 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 199 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.2 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 11 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 668 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 75 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 503 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"chiado",label:"Chiado",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 2.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 1.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 9.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 3.1 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 67 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 656 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 20 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"energyweb",label:"Energyweb",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 27 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 4.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 25 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 7.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 14 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 75 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"volta",label:"Volta",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 34 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 8.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 33 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 6.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 95 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 93 GB"})}),"\n"]})})]}),"\n",(0,r.jsx)(n.h2,{id:"reducing-database-size",children:"Reducing database size"}),"\n",(0,r.jsx)(n.p,{children:"The Nethermind database can experience substantial growth over time, starting from an initial size of approximately 650\nGB. As a result, many node setups are configured to run on 1 TB disks. However, even with settings\ndesigned to slow the growth rate, these disks may eventually run out of free space."}),"\n",(0,r.jsx)(n.p,{children:"The current options to reduce the database size are as follows:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/sync#resync-a-node-from-scratch",children:"Resyncing database from scratch"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/pruning",children:"Pruning"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The table below presents a short comparison of these methods including possible fine-tuning of each method. Data was\nfetched from a node running on a machine with the below specifications:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Node.js"}),": v1.18.0"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Consensus client"}),": Lighthouse"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"CPU"}),": AMD EPYC 7713 (16 cores allocated for the VM)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"RAM"}),": 64 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk size"}),": 1.2 TB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk IOPS"}),": 70,000 to 80,000"]}),"\n"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Metric"}),(0,r.jsx)(n.th,{children:"Resync"}),(0,r.jsx)(n.th,{children:"Pruning"}),(0,r.jsx)(n.th,{children:"Pruning and memory budget (4 GB)"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Execution time"})}),(0,r.jsx)(n.td,{children:"~4h"}),(0,r.jsx)(n.td,{children:"~24h"}),(0,r.jsx)(n.td,{children:"~12h"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Minimum free disk space"})}),(0,r.jsx)(n.td,{children:"N/A. You can execute resync even if there is 0 free space (avoid such a case)."}),(0,r.jsx)(n.td,{children:"250 GB"}),(0,r.jsx)(n.td,{children:"250 GB"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Attestation rate drop"})}),(0,r.jsx)(n.td,{children:"100%. No attestation rewards during that time or highly reduced."}),(0,r.jsx)(n.td,{children:"5\u201310% during that time"}),(0,r.jsx)(n.td,{children:"N/A"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Average block processing time of new blocks during the process"})}),(0,r.jsx)(n.td,{children:"N/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s."}),(0,r.jsx)(n.td,{children:"0.7s"}),(0,r.jsx)(n.td,{children:"1.0s"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Is the node online during the process?"})}),(0,r.jsx)(n.td,{children:"No, unless the state is synced."}),(0,r.jsx)(n.td,{children:"Yes. The node follows the chain, and all modules are still enabled."}),(0,r.jsx)(n.td,{children:"Yes. The node follows chain and all modules are still enabled."})]})]})]}),"\n",(0,r.jsx)(n.p,{children:"The command used for testing disk IOPS was as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw\n"})})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(4164);const t={tabItem:"tabItem_Ymn6"};var i=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),t=s(4164),i=s(3104),l=s(6347),d=s(205),c=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:t}}=e;return{value:n,label:s,attributes:r,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(t.location.search);n.set(i,e),t.replace({...t.location,search:n.toString()})}),[i,t])]}function b(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,i=u(e),[l,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[a,h]=j({queryString:s,groupId:t}),[b,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,i]=(0,o.Dv)(s);return[t,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:t}),f=(()=>{const e=a??b;return x({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{f&&c(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!x({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),p(e)}),[h,p,i]),tabValues:i}}var p=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=s(4848);function g(e){let{className:n,block:s,selectedValue:r,selectValue:l,tabValues:d}=e;const c=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),t=d[s].value;t!==r&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,m.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:h,onClick:o,...i,className:(0,t.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function B(e){const n=b(e);return(0,m.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,m.jsx)(g,{...n,...e}),(0,m.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,m.jsx)(B,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var r=s(6540);const t={},i=r.createContext(t);function l(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9302],{4004:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var r=s(4848),t=s(8453),i=s(1470),l=s(9365);const d={title:"Database",sidebar_position:5},c=void 0,a={id:"fundamentals/database",title:"Database",description:"Nethermind uses the RocksDB database to store the state. By default, the database is located in the",source:"@site/versioned_docs/version-1.28.0/fundamentals/database.md",sourceDirName:"fundamentals",slug:"/fundamentals/database",permalink:"/1.28.0/fundamentals/database",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/database.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:5,frontMatter:{title:"Database",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Logs",permalink:"/1.28.0/fundamentals/logs"},next:{title:"Pruning",permalink:"/1.28.0/fundamentals/pruning"}},o={},h=[{value:"Database directory structure",id:"database-directory-structure",level:2},{value:"Database size",id:"database-size",level:2},{value:"Reducing database size",id:"reducing-database-size",level:2}];function u(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Nethermind uses the ",(0,r.jsx)(n.a,{href:"https://rocksdb.org",children:"RocksDB"})," database to store the state. By default, the database is located in the\nsame directory where the Nethermind executable is. You can change the database location using the ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#basic-options",children:(0,r.jsx)(n.code,{children:"-d, --baseDbPath"})})," command line option."]}),"\n",(0,r.jsx)(n.h2,{id:"database-directory-structure",children:"Database directory structure"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Directory"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blockInfos"}),(0,r.jsx)(n.td,{children:"Information about blocks at each level of the block tree (canonical chain and branches)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blocks"}),(0,r.jsx)(n.td,{children:"Block bodies (block transactions and uncles)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"bloom"}),(0,r.jsx)(n.td,{children:"Bloom indices for fast log searches"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"canonicalHashTrie"}),(0,r.jsx)(n.td,{children:"LES protocol related data"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"code"}),(0,r.jsx)(n.td,{children:"Contract bytecodes"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"discoveryNodes"}),(0,r.jsx)(n.td,{children:"Peers discovered via discovery protocol - used for quick peering after restarts (you can copy this DB between nodes to speed up peering)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"headers"}),(0,r.jsx)(n.td,{children:"Block headers only"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"pendingTx"}),(0,r.jsx)(n.td,{children:"The second level cache of pending transactions/mempool (the first level is in memory). Wiped out on each restart."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"peers"}),(0,r.jsx)(n.td,{children:"Additional sync peers information (like peer reputation) - you can copy this DB between nodes to speed up peering on fresh sync"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"receipts"}),(0,r.jsx)(n.td,{children:"Transaction receipts"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"state"}),(0,r.jsx)(n.td,{children:"Blockchain state including accounts and contract storage (Patricia trie nodes)"})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:["You can use ",(0,r.jsx)(n.code,{children:"rsync"})," between your nodes to clone the database (One of our users copied the entire 4.5TB archive state this\nway while the node was running and only stopped the node for the very last stage of ",(0,r.jsx)(n.code,{children:"rsync"})," ). You can also copy\nthe database between Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h2,{id:"database-size",children:"Database size"}),"\n",(0,r.jsx)(n.p,{children:"Below is a comprehensive list of the supported chains, along with a detailed breakdown of their respective database directories. For reference, the database sizes listed have been determined using the standard configurations provided."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(l.A,{value:"mainnet",label:"Mainnet",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 158 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 209 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 595 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 6.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 8.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 4.7 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.7 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 985 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"sepolia",label:"Sepolia",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 42 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 39 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 293 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 2.1 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 6.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.3 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 386 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"holesky",label:"Holesky",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 18 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 14 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 55 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 738 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 967 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 506 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 737 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 90 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"gnosis",label:"Gnosis",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 66 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 216 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 199 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.2 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 11 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 668 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 75 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 503 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"chiado",label:"Chiado",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 2.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 1.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 9.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 3.1 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 67 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 656 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 20 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"energyweb",label:"Energyweb",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 27 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 4.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 25 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 7.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 14 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 75 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"volta",label:"Volta",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 34 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 8.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 33 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 6.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 95 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 93 GB"})}),"\n"]})})]}),"\n",(0,r.jsx)(n.h2,{id:"reducing-database-size",children:"Reducing database size"}),"\n",(0,r.jsx)(n.p,{children:"The Nethermind database can experience substantial growth over time, starting from an initial size of approximately 650\nGB. As a result, many node setups are configured to run on 1 TB disks. However, even with settings\ndesigned to slow the growth rate, these disks may eventually run out of free space."}),"\n",(0,r.jsx)(n.p,{children:"The current options to reduce the database size are as follows:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/sync#resync-a-node-from-scratch",children:"Resyncing database from scratch"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/pruning",children:"Pruning"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The table below presents a short comparison of these methods including possible fine-tuning of each method. Data was\nfetched from a node running on a machine with the below specifications:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Node.js"}),": v1.18.0"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Consensus client"}),": Lighthouse"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"CPU"}),": AMD EPYC 7713 (16 cores allocated for the VM)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"RAM"}),": 64 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk size"}),": 1.2 TB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk IOPS"}),": 70,000 to 80,000"]}),"\n"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Metric"}),(0,r.jsx)(n.th,{children:"Resync"}),(0,r.jsx)(n.th,{children:"Pruning"}),(0,r.jsx)(n.th,{children:"Pruning and memory budget (4 GB)"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Execution time"})}),(0,r.jsx)(n.td,{children:"~4h"}),(0,r.jsx)(n.td,{children:"~24h"}),(0,r.jsx)(n.td,{children:"~12h"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Minimum free disk space"})}),(0,r.jsx)(n.td,{children:"N/A. You can execute resync even if there is 0 free space (avoid such a case)."}),(0,r.jsx)(n.td,{children:"250 GB"}),(0,r.jsx)(n.td,{children:"250 GB"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Attestation rate drop"})}),(0,r.jsx)(n.td,{children:"100%. No attestation rewards during that time or highly reduced."}),(0,r.jsx)(n.td,{children:"5\u201310% during that time"}),(0,r.jsx)(n.td,{children:"N/A"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Average block processing time of new blocks during the process"})}),(0,r.jsx)(n.td,{children:"N/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s."}),(0,r.jsx)(n.td,{children:"0.7s"}),(0,r.jsx)(n.td,{children:"1.0s"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Is the node online during the process?"})}),(0,r.jsx)(n.td,{children:"No, unless the state is synced."}),(0,r.jsx)(n.td,{children:"Yes. The node follows the chain, and all modules are still enabled."}),(0,r.jsx)(n.td,{children:"Yes. The node follows chain and all modules are still enabled."})]})]})]}),"\n",(0,r.jsx)(n.p,{children:"The command used for testing disk IOPS was as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw\n"})})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(4164);const t={tabItem:"tabItem_Ymn6"};var i=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),t=s(4164),i=s(3104),l=s(6347),d=s(205),c=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:t}}=e;return{value:n,label:s,attributes:r,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(t.location.search);n.set(i,e),t.replace({...t.location,search:n.toString()})}),[i,t])]}function b(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,i=u(e),[l,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[a,h]=j({queryString:s,groupId:t}),[b,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,i]=(0,o.Dv)(s);return[t,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:t}),f=(()=>{const e=a??b;return x({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{f&&c(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!x({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),p(e)}),[h,p,i]),tabValues:i}}var p=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=s(4848);function g(e){let{className:n,block:s,selectedValue:r,selectValue:l,tabValues:d}=e;const c=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),t=d[s].value;t!==r&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,m.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:h,onClick:o,...i,className:(0,t.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function B(e){const n=b(e);return(0,m.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,m.jsx)(g,{...n,...e}),(0,m.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,m.jsx)(B,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var r=s(6540);const t={},i=r.createContext(t);function l(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/324289f9.a4807bfb.js b/assets/js/324289f9.037cdece.js similarity index 99% rename from assets/js/324289f9.a4807bfb.js rename to assets/js/324289f9.037cdece.js index 4fbffcaf2..d978a1c64 100644 --- a/assets/js/324289f9.a4807bfb.js +++ b/assets/js/324289f9.037cdece.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5608],{3976:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var o=t(4848),i=t(8453);const r={title:"Custom analytic tools",sidebar_position:2},a=void 0,s={id:"developers/custom-analytic-tools",title:"Custom analytic tools",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.25.4/developers/custom-analytic-tools.md",sourceDirName:"developers",slug:"/developers/custom-analytic-tools",permalink:"/1.25.4/developers/custom-analytic-tools",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/developers/custom-analytic-tools.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Custom analytic tools",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Plugins",permalink:"/1.25.4/developers/plugins"},next:{title:"FAQ",permalink:"/1.25.4/faq"}},l={},c=[];function d(e){const n={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,o.jsx)(n.p,{children:"Check plugins for some easy addition of analytical tools"}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/1.25.4/developers/plugins",children:"Learn more about Plugins"})})}),"\n",(0,o.jsx)(n.p,{children:"You can also read more about some useful interfaces below:"}),"\n",(0,o.jsxs)(n.p,{children:["There are multiple extension points where you can add custom analytics to your Nethermind node if you know some C#.\nBelow you will find an example of using two very useful interfaces - ",(0,o.jsx)(n.code,{children:"IBlockVisitor"})," and ",(0,o.jsx)(n.code,{children:"ITreeVisitor"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Just to execute the code I have added one new initialization step that invokes two custom verifiers that I have used for\ncalculating total supply in two different ways - by calculating mining rewards and by summing up all account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' [RunnerStepDependencies(typeof(ReviewBlockTree))]\n public class RunCustomTools : IStep\n {\n private readonly EthereumRunnerContext _context;\n\n public RunCustomTools(EthereumRunnerContext context)\n {\n _context = context;\n }\n\n public Task Execute(CancellationToken cancellationToken)\n {\n ILogger logger = _context.LogManager.GetClassLogger();\n IInitConfig initConfig = _context.Config();\n\n switch (initConfig.DiagnosticMode)\n {\n case DiagnosticMode.VerifySupply:\n {\n logger.Info("Genesis supply:");\n SupplyVerifier supplyVerifier = new SupplyVerifier(logger);\n StateDb stateDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateDb codeDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateReader stateReader = new StateReader(stateDb, codeDb, _context.LogManager);\n stateReader.RunTreeVisitor(supplyVerifier, _context.BlockTree!.Genesis.StateRoot);\n\n Block head = _context.BlockTree!.Head;\n logger.Info($"Head ({head.Number}) block supply:");\n supplyVerifier = new SupplyVerifier(logger);\n stateReader.RunTreeVisitor(supplyVerifier, head.StateRoot);\n break;\n }\n case DiagnosticMode.VerifyRewards:\n _context.BlockTree!.Accept(new RewardsVerifier(_context.LogManager), cancellationToken);\n break;\n }\n\n return Task.CompletedTask;\n }\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"Below you will see an example of using ITreeVisitor that allows to check all the blocks, including some of the discarded\nbranches if you wish so:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive => 10618000;\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n private UInt256 _blockRewards;\n\n public RewardsVerifier(ILogManager logManager)\n {\n _logger = logManager.GetClassLogger();\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n _blockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"And here you will find an example of a tree visitor that sums up all the account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class SupplyVerifier : ITreeVisitor\n {\n private readonly ILogger _logger;\n private UInt256 _balance = UInt256.Zero;\n private int _accountsVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public bool ShouldVisit(Keccak nextNode) { return true; }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n _balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }\n }\n'})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var o=t(6540);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5608],{3976:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var o=t(4848),i=t(8453);const r={title:"Custom analytic tools",sidebar_position:2},a=void 0,s={id:"developers/custom-analytic-tools",title:"Custom analytic tools",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.25.4/developers/custom-analytic-tools.md",sourceDirName:"developers",slug:"/developers/custom-analytic-tools",permalink:"/1.25.4/developers/custom-analytic-tools",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/developers/custom-analytic-tools.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Custom analytic tools",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Plugins",permalink:"/1.25.4/developers/plugins"},next:{title:"FAQ",permalink:"/1.25.4/faq"}},l={},c=[];function d(e){const n={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,o.jsx)(n.p,{children:"Check plugins for some easy addition of analytical tools"}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/1.25.4/developers/plugins",children:"Learn more about Plugins"})})}),"\n",(0,o.jsx)(n.p,{children:"You can also read more about some useful interfaces below:"}),"\n",(0,o.jsxs)(n.p,{children:["There are multiple extension points where you can add custom analytics to your Nethermind node if you know some C#.\nBelow you will find an example of using two very useful interfaces - ",(0,o.jsx)(n.code,{children:"IBlockVisitor"})," and ",(0,o.jsx)(n.code,{children:"ITreeVisitor"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Just to execute the code I have added one new initialization step that invokes two custom verifiers that I have used for\ncalculating total supply in two different ways - by calculating mining rewards and by summing up all account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' [RunnerStepDependencies(typeof(ReviewBlockTree))]\n public class RunCustomTools : IStep\n {\n private readonly EthereumRunnerContext _context;\n\n public RunCustomTools(EthereumRunnerContext context)\n {\n _context = context;\n }\n\n public Task Execute(CancellationToken cancellationToken)\n {\n ILogger logger = _context.LogManager.GetClassLogger();\n IInitConfig initConfig = _context.Config();\n\n switch (initConfig.DiagnosticMode)\n {\n case DiagnosticMode.VerifySupply:\n {\n logger.Info("Genesis supply:");\n SupplyVerifier supplyVerifier = new SupplyVerifier(logger);\n StateDb stateDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateDb codeDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateReader stateReader = new StateReader(stateDb, codeDb, _context.LogManager);\n stateReader.RunTreeVisitor(supplyVerifier, _context.BlockTree!.Genesis.StateRoot);\n\n Block head = _context.BlockTree!.Head;\n logger.Info($"Head ({head.Number}) block supply:");\n supplyVerifier = new SupplyVerifier(logger);\n stateReader.RunTreeVisitor(supplyVerifier, head.StateRoot);\n break;\n }\n case DiagnosticMode.VerifyRewards:\n _context.BlockTree!.Accept(new RewardsVerifier(_context.LogManager), cancellationToken);\n break;\n }\n\n return Task.CompletedTask;\n }\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"Below you will see an example of using ITreeVisitor that allows to check all the blocks, including some of the discarded\nbranches if you wish so:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive => 10618000;\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n private UInt256 _blockRewards;\n\n public RewardsVerifier(ILogManager logManager)\n {\n _logger = logManager.GetClassLogger();\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n _blockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"And here you will find an example of a tree visitor that sums up all the account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class SupplyVerifier : ITreeVisitor\n {\n private readonly ILogger _logger;\n private UInt256 _balance = UInt256.Zero;\n private int _accountsVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public bool ShouldVisit(Keccak nextNode) { return true; }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n _balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }\n }\n'})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var o=t(6540);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/335cd626.82fcf75b.js b/assets/js/335cd626.638094f5.js similarity index 99% rename from assets/js/335cd626.82fcf75b.js rename to assets/js/335cd626.638094f5.js index 62707f265..68394b1b8 100644 --- a/assets/js/335cd626.82fcf75b.js +++ b/assets/js/335cd626.638094f5.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9119],{3286:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});var i=s(4848),r=s(8453);const o={title:"Logs",sidebar_position:4},d=void 0,t={id:"fundamentals/logs",title:"Logs",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.28.0/fundamentals/logs.md",sourceDirName:"fundamentals",slug:"/fundamentals/logs",permalink:"/1.28.0/fundamentals/logs",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/logs.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"Logs",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Security",permalink:"/1.28.0/fundamentals/security"},next:{title:"Database",permalink:"/1.28.0/fundamentals/database"}},l={},c=[{value:"Log config file location",id:"log-config-file-location",level:2},{value:"Log config file syntax",id:"log-config-file-syntax",level:2},{value:"Config or CLI log rules",id:"config-or-cli-log-rules",level:2},{value:"Global logging override",id:"global-logging-override",level:2},{value:"JSON RPC logging level",id:"json-rpc-logging-level",level:2},{value:"Enterprise Logging",id:"enterprise-logging",level:2},{value:"Explaining Nethermind logs",id:"explaining-nethermind-logs",level:2}];function a(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-location",children:"Log config file location"}),"\n",(0,i.jsx)(n.p,{children:"Logging in Nethermind is done via NLog library that can be configured by editing the NLog.config file."}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Environment Type"}),(0,i.jsx)(n.th,{children:"NLog.config location"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Debug mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Debug\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Release mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Release\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"PPA"}),(0,i.jsx)(n.td,{children:"/usr/share/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Docker"}),(0,i.jsx)(n.td,{children:"/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub releases page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"dAppNode"}),(0,i.jsx)(n.td,{children:"? [to be documented]"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-syntax",children:"Log config file syntax"}),"\n",(0,i.jsxs)(n.p,{children:["Detailed NLog configuration options can be found\nhere: ",(0,i.jsx)(n.a,{href:"https://nlog-project.org/config/",children:"https://nlog-project.org/config/"})]}),"\n",(0,i.jsx)(n.h2,{id:"config-or-cli-log-rules",children:"Config or CLI log rules"}),"\n",(0,i.jsx)(n.p,{children:"Simple logging rules can be added through configuration file or command line argument."}),"\n",(0,i.jsxs)(n.p,{children:["For example this would add ",(0,i.jsx)(n.code,{children:"Trace"})," level logs to any logger under ",(0,i.jsx)(n.code,{children:"Synchronization"})," module and ",(0,i.jsx)(n.code,{children:"Debug"})," level logs\nfor ",(0,i.jsx)(n.code,{children:"BlockTree"})," from ",(0,i.jsx)(n.code,{children:"Blockchain"})," module:",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.code,{children:"--Init.LogRules Synchronization.*:Trace;Blockchain.BlockTree:Debug"})]}),"\n",(0,i.jsx)(n.h2,{id:"global-logging-override",children:"Global logging override"}),"\n",(0,i.jsx)(n.p,{children:"Additionally there are global logging override that you can use temporarily:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Command line override"}),(0,i.jsx)(n.th,{children:"Log level"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log TRACE"}),(0,i.jsx)(n.td,{children:"TRACE"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log DEBUG"}),(0,i.jsx)(n.td,{children:"DEBUG"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log INFO"}),(0,i.jsx)(n.td,{children:"INFO"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log WARN"}),(0,i.jsx)(n.td,{children:"WARN"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log ERROR"}),(0,i.jsx)(n.td,{children:"ERROR"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"json-rpc-logging-level",children:"JSON RPC logging level"}),"\n",(0,i.jsx)(n.p,{children:"This can be done by including these lines in the logging configuration file:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\n\n\n'})}),"\n",(0,i.jsx)(n.h2,{id:"enterprise-logging",children:"Enterprise Logging"}),"\n",(0,i.jsxs)(n.p,{children:["See how to configure Seq ",(0,i.jsx)(n.a,{href:"https://docs.nethermind.io/nethermind/enterprise/seq",children:"here"})]}),"\n",(0,i.jsx)(n.h2,{id:"explaining-nethermind-logs",children:"Explaining Nethermind logs"}),"\n",(0,i.jsxs)(n.p,{children:["You can check the supported operating systems, architectures and hardware requirements\nhere: ",(0,i.jsx)(n.a,{href:"/1.28.0/get-started/system-requirements",children:"system-requirements.md"})]}),"\n",(0,i.jsxs)(n.p,{children:["After the node starts, you will see some initial info about the node and then the sync will start. G\xf6rli fast sync uses\na ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync mode initially. The ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync picks some known ",(0,i.jsx)(n.code,{children:"pivot block"})," from the past and\ndownloads ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"}),", and ",(0,i.jsx)(n.code,{children:"receipts"})," downwards all the way to ",(0,i.jsx)(n.code,{children:"genesis block"}),". All blocks from 0 to\nthe ",(0,i.jsx)(n.code,{children:"pivot block"})," are showed as ",(0,i.jsx)(n.code,{children:"Old Headers"})," in the ",(0,i.jsx)(n.code,{children:"fast blocks sync"})," logs. The console display shows the number\ngrowing from 0 to pivot, but this is just to make the display more user-friendly."]}),"\n",(0,i.jsx)(n.p,{children:"You will see some information about the sync progress, like below:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Shows the number of already downloaded ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," under the name ",(0,i.jsx)(n.code,{children:"Downloaded"})," out of all to\nbe downloaded in the fast blocks stage."]}),"\n",(0,i.jsxs)(n.li,{children:["Shows the current queue of already downloaded ",(0,i.jsx)(n.code,{children:"blocks"}),", ",(0,i.jsx)(n.code,{children:"headers"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," waiting for being saved to the\ndatabase."]}),"\n",(0,i.jsx)(n.li,{children:"Shows the current download speed (blocks per second - bps)."}),"\n",(0,i.jsx)(n.li,{children:"Shows the average download speed (blocks per second - bps)."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast blocks sync logs",src:s(8973).A+"",width:"1219",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["When the fast blocks stage finishes, there will be some period of downloading blocks between the ",(0,i.jsx)(n.code,{children:"pivot"})," and\nthe",(0,i.jsx)(n.code,{children:"latest blocks"})," which will have some additional info:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Shows the last entry from the fast blocks stage."}),"\n",(0,i.jsx)(n.li,{children:"Shows the mode transition moment."}),"\n",(0,i.jsxs)(n.li,{children:["Displays the speed (in blocks per second) of all ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," at the same time."]}),"\n",(0,i.jsx)(n.li,{children:"Additional info will appear every 30000 blocks with information about the G\xf6rli epoch being stored."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli fast sync logs",src:s(245).A+"",width:"1528",height:"643"})}),"\n",(0,i.jsxs)(n.p,{children:["After the ",(0,i.jsx)(n.code,{children:"fast sync"})," part finished, the node will transition to the ",(0,i.jsx)(n.code,{children:"state sync stage"})," when the ",(0,i.jsx)(n.code,{children:"state trie"})," is being\ndownloaded. Much information is displayed about the progress, as this process may take a long time on mainnet (a few\nhours)."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Total elapsed time in ",(0,i.jsx)(n.code,{children:"state sync"})," is displayed."]}),"\n",(0,i.jsx)(n.li,{children:"The total percentage of downloaded DB size is displayed (on mainnet the sync finishes around 34GB in March 2020, on\nG\xf6rli around 800MB)."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"branches"})," stands for the percentage of downloaded branches."]}),"\n",(0,i.jsx)(n.li,{children:"Download speed in kilobytes per second is displayed."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"accounts"})," stands for the number of accounts data downloaded already."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"nodes"})," stands for the number of ",(0,i.jsx)(n.code,{children:"Patricia trie nodes"})," downloaded by the sync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"diagnostic"})," shows the time spent in the DB write / read access. The higher the value, the worse. It may get much\nworse if you restart the node during the sync process, as we need to recreate some caches then by reading data from\nthe DB."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli state sync logs",src:s(9378).A+"",width:"1528",height:"742"})}),"\n",(0,i.jsxs)(n.p,{children:["When the state sync is nearing completion, you may see a series of ",(0,i.jsx)(n.code,{children:"branch sync"})," information reloading many times from\n0% to nearly 100%. This is the node trying to retrieve the few remaining state nodes and progressing with the head block\nrapidly:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli branch sync logs",src:s(1548).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["At some point, the entire state is downloaded and the node enters the ",(0,i.jsx)(n.code,{children:"full sync"})," mode and will allow you to issue CLI /\nWeb3 queries and send / receive transactions\ud83e\udd73"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.code,{children:"root"})," is saved at the moment when the entire ",(0,i.jsx)(n.code,{children:"Patricia trie"})," is downloaded."]}),"\n",(0,i.jsxs)(n.li,{children:["We also clearly state that the node transitions to the ",(0,i.jsx)(n.code,{children:"full sync"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["When you see the block being processed, then you are in the ",(0,i.jsx)(n.code,{children:"full sync"})," and the newly arrived block is being\ncalculated."]}),"\n",(0,i.jsx)(n.li,{children:"Every two minutes you will see a summary of connected peers with their client version, IP address, highest synced\nblock, and data download speeds."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli full sync logs",src:s(3035).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsx)(n.p,{children:"Also, every now and then, a peer report will appear like below:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(4922).A+"",width:"2560",height:"1337"})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["First bracket is for Allocated contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsxs)(n.li,{children:["Second bracket is for Sleeping contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsx)(n.li,{children:"Third bracket contains Peer Info."}),"\n",(0,i.jsxs)(n.li,{children:["Fourth bracket is for Speeds as Follows:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Latency"}),"\n",(0,i.jsx)(n.li,{children:"Headers Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Bodies Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Receipts Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Node Data Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Snap Ranges Transfer"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},4922:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png"},1548:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png"},245:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png"},9378:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png"},3035:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png"},8973:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png"},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>t});var i=s(6540);const r={},o=i.createContext(r);function d(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9119],{3286:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});var i=s(4848),r=s(8453);const o={title:"Logs",sidebar_position:4},d=void 0,t={id:"fundamentals/logs",title:"Logs",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.28.0/fundamentals/logs.md",sourceDirName:"fundamentals",slug:"/fundamentals/logs",permalink:"/1.28.0/fundamentals/logs",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/logs.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"Logs",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Security",permalink:"/1.28.0/fundamentals/security"},next:{title:"Database",permalink:"/1.28.0/fundamentals/database"}},l={},c=[{value:"Log config file location",id:"log-config-file-location",level:2},{value:"Log config file syntax",id:"log-config-file-syntax",level:2},{value:"Config or CLI log rules",id:"config-or-cli-log-rules",level:2},{value:"Global logging override",id:"global-logging-override",level:2},{value:"JSON RPC logging level",id:"json-rpc-logging-level",level:2},{value:"Enterprise Logging",id:"enterprise-logging",level:2},{value:"Explaining Nethermind logs",id:"explaining-nethermind-logs",level:2}];function a(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-location",children:"Log config file location"}),"\n",(0,i.jsx)(n.p,{children:"Logging in Nethermind is done via NLog library that can be configured by editing the NLog.config file."}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Environment Type"}),(0,i.jsx)(n.th,{children:"NLog.config location"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Debug mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Debug\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Release mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Release\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"PPA"}),(0,i.jsx)(n.td,{children:"/usr/share/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Docker"}),(0,i.jsx)(n.td,{children:"/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub releases page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"dAppNode"}),(0,i.jsx)(n.td,{children:"? [to be documented]"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-syntax",children:"Log config file syntax"}),"\n",(0,i.jsxs)(n.p,{children:["Detailed NLog configuration options can be found\nhere: ",(0,i.jsx)(n.a,{href:"https://nlog-project.org/config/",children:"https://nlog-project.org/config/"})]}),"\n",(0,i.jsx)(n.h2,{id:"config-or-cli-log-rules",children:"Config or CLI log rules"}),"\n",(0,i.jsx)(n.p,{children:"Simple logging rules can be added through configuration file or command line argument."}),"\n",(0,i.jsxs)(n.p,{children:["For example this would add ",(0,i.jsx)(n.code,{children:"Trace"})," level logs to any logger under ",(0,i.jsx)(n.code,{children:"Synchronization"})," module and ",(0,i.jsx)(n.code,{children:"Debug"})," level logs\nfor ",(0,i.jsx)(n.code,{children:"BlockTree"})," from ",(0,i.jsx)(n.code,{children:"Blockchain"})," module:",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.code,{children:"--Init.LogRules Synchronization.*:Trace;Blockchain.BlockTree:Debug"})]}),"\n",(0,i.jsx)(n.h2,{id:"global-logging-override",children:"Global logging override"}),"\n",(0,i.jsx)(n.p,{children:"Additionally there are global logging override that you can use temporarily:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Command line override"}),(0,i.jsx)(n.th,{children:"Log level"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log TRACE"}),(0,i.jsx)(n.td,{children:"TRACE"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log DEBUG"}),(0,i.jsx)(n.td,{children:"DEBUG"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log INFO"}),(0,i.jsx)(n.td,{children:"INFO"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log WARN"}),(0,i.jsx)(n.td,{children:"WARN"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log ERROR"}),(0,i.jsx)(n.td,{children:"ERROR"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"json-rpc-logging-level",children:"JSON RPC logging level"}),"\n",(0,i.jsx)(n.p,{children:"This can be done by including these lines in the logging configuration file:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\n\n\n'})}),"\n",(0,i.jsx)(n.h2,{id:"enterprise-logging",children:"Enterprise Logging"}),"\n",(0,i.jsxs)(n.p,{children:["See how to configure Seq ",(0,i.jsx)(n.a,{href:"https://docs.nethermind.io/nethermind/enterprise/seq",children:"here"})]}),"\n",(0,i.jsx)(n.h2,{id:"explaining-nethermind-logs",children:"Explaining Nethermind logs"}),"\n",(0,i.jsxs)(n.p,{children:["You can check the supported operating systems, architectures and hardware requirements\nhere: ",(0,i.jsx)(n.a,{href:"/1.28.0/get-started/system-requirements",children:"system-requirements.md"})]}),"\n",(0,i.jsxs)(n.p,{children:["After the node starts, you will see some initial info about the node and then the sync will start. G\xf6rli fast sync uses\na ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync mode initially. The ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync picks some known ",(0,i.jsx)(n.code,{children:"pivot block"})," from the past and\ndownloads ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"}),", and ",(0,i.jsx)(n.code,{children:"receipts"})," downwards all the way to ",(0,i.jsx)(n.code,{children:"genesis block"}),". All blocks from 0 to\nthe ",(0,i.jsx)(n.code,{children:"pivot block"})," are showed as ",(0,i.jsx)(n.code,{children:"Old Headers"})," in the ",(0,i.jsx)(n.code,{children:"fast blocks sync"})," logs. The console display shows the number\ngrowing from 0 to pivot, but this is just to make the display more user-friendly."]}),"\n",(0,i.jsx)(n.p,{children:"You will see some information about the sync progress, like below:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Shows the number of already downloaded ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," under the name ",(0,i.jsx)(n.code,{children:"Downloaded"})," out of all to\nbe downloaded in the fast blocks stage."]}),"\n",(0,i.jsxs)(n.li,{children:["Shows the current queue of already downloaded ",(0,i.jsx)(n.code,{children:"blocks"}),", ",(0,i.jsx)(n.code,{children:"headers"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," waiting for being saved to the\ndatabase."]}),"\n",(0,i.jsx)(n.li,{children:"Shows the current download speed (blocks per second - bps)."}),"\n",(0,i.jsx)(n.li,{children:"Shows the average download speed (blocks per second - bps)."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast blocks sync logs",src:s(8973).A+"",width:"1219",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["When the fast blocks stage finishes, there will be some period of downloading blocks between the ",(0,i.jsx)(n.code,{children:"pivot"})," and\nthe",(0,i.jsx)(n.code,{children:"latest blocks"})," which will have some additional info:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Shows the last entry from the fast blocks stage."}),"\n",(0,i.jsx)(n.li,{children:"Shows the mode transition moment."}),"\n",(0,i.jsxs)(n.li,{children:["Displays the speed (in blocks per second) of all ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," at the same time."]}),"\n",(0,i.jsx)(n.li,{children:"Additional info will appear every 30000 blocks with information about the G\xf6rli epoch being stored."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli fast sync logs",src:s(245).A+"",width:"1528",height:"643"})}),"\n",(0,i.jsxs)(n.p,{children:["After the ",(0,i.jsx)(n.code,{children:"fast sync"})," part finished, the node will transition to the ",(0,i.jsx)(n.code,{children:"state sync stage"})," when the ",(0,i.jsx)(n.code,{children:"state trie"})," is being\ndownloaded. Much information is displayed about the progress, as this process may take a long time on mainnet (a few\nhours)."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Total elapsed time in ",(0,i.jsx)(n.code,{children:"state sync"})," is displayed."]}),"\n",(0,i.jsx)(n.li,{children:"The total percentage of downloaded DB size is displayed (on mainnet the sync finishes around 34GB in March 2020, on\nG\xf6rli around 800MB)."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"branches"})," stands for the percentage of downloaded branches."]}),"\n",(0,i.jsx)(n.li,{children:"Download speed in kilobytes per second is displayed."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"accounts"})," stands for the number of accounts data downloaded already."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"nodes"})," stands for the number of ",(0,i.jsx)(n.code,{children:"Patricia trie nodes"})," downloaded by the sync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"diagnostic"})," shows the time spent in the DB write / read access. The higher the value, the worse. It may get much\nworse if you restart the node during the sync process, as we need to recreate some caches then by reading data from\nthe DB."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli state sync logs",src:s(9378).A+"",width:"1528",height:"742"})}),"\n",(0,i.jsxs)(n.p,{children:["When the state sync is nearing completion, you may see a series of ",(0,i.jsx)(n.code,{children:"branch sync"})," information reloading many times from\n0% to nearly 100%. This is the node trying to retrieve the few remaining state nodes and progressing with the head block\nrapidly:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli branch sync logs",src:s(1548).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["At some point, the entire state is downloaded and the node enters the ",(0,i.jsx)(n.code,{children:"full sync"})," mode and will allow you to issue CLI /\nWeb3 queries and send / receive transactions\ud83e\udd73"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.code,{children:"root"})," is saved at the moment when the entire ",(0,i.jsx)(n.code,{children:"Patricia trie"})," is downloaded."]}),"\n",(0,i.jsxs)(n.li,{children:["We also clearly state that the node transitions to the ",(0,i.jsx)(n.code,{children:"full sync"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["When you see the block being processed, then you are in the ",(0,i.jsx)(n.code,{children:"full sync"})," and the newly arrived block is being\ncalculated."]}),"\n",(0,i.jsx)(n.li,{children:"Every two minutes you will see a summary of connected peers with their client version, IP address, highest synced\nblock, and data download speeds."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli full sync logs",src:s(3035).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsx)(n.p,{children:"Also, every now and then, a peer report will appear like below:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(4922).A+"",width:"2560",height:"1337"})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["First bracket is for Allocated contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsxs)(n.li,{children:["Second bracket is for Sleeping contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsx)(n.li,{children:"Third bracket contains Peer Info."}),"\n",(0,i.jsxs)(n.li,{children:["Fourth bracket is for Speeds as Follows:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Latency"}),"\n",(0,i.jsx)(n.li,{children:"Headers Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Bodies Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Receipts Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Node Data Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Snap Ranges Transfer"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},4922:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png"},1548:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png"},245:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png"},9378:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png"},3035:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png"},8973:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png"},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>t});var i=s(6540);const r={},o=i.createContext(r);function d(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/342e0bfc.7015f152.js b/assets/js/342e0bfc.b89a5c5b.js similarity index 99% rename from assets/js/342e0bfc.7015f152.js rename to assets/js/342e0bfc.b89a5c5b.js index 39d2a5f23..994535796 100644 --- a/assets/js/342e0bfc.7015f152.js +++ b/assets/js/342e0bfc.b89a5c5b.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4274],{9751:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var s=r(4848),i=r(8453),l=r(1470),c=r(9365);const t={title:"proof namespace",sidebar_label:"proof",sidebar_position:7},d=void 0,a={id:"interacting/json-rpc-ns/proof",title:"proof namespace",description:"proof_getTransactionByHash",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/proof.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/proof",permalink:"/interacting/json-rpc-ns/proof",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/proof.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:7,frontMatter:{title:"proof namespace",sidebar_label:"proof",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"personal",permalink:"/interacting/json-rpc-ns/personal"},next:{title:"trace",permalink:"/interacting/json-rpc-ns/trace"}},o={},h=[{value:"proof_getTransactionByHash",id:"proof_gettransactionbyhash",level:3},{value:"proof_getTransactionReceipt",id:"proof_gettransactionreceipt",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"proof_gettransactionbyhash",children:"proof_getTransactionByHash"}),"\n",(0,s.jsxs)(n.p,{children:["This function returns the same result as ",(0,s.jsx)(n.code,{children:"eth_getTransactionReceipt"})," and also a tx proof, receipt proof and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionByHash",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transaction"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"accessList"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"chainId"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"hash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"input"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"isSystemTx"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mint"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nonce"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"r"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"s"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sourceHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"v"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"yParity"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"proof_gettransactionreceipt",children:"proof_getTransactionReceipt"}),"\n",(0,s.jsxs)(n.p,{children:["This function should return the same result as ",(0,s.jsx)(n.code,{children:"eth_call"})," and also proofs of all used accounts and their storages and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionReceipt",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receipt"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"contractAddress"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"error"}),": ",(0,s.jsx)(n.em,{children:"string"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logs"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"removed"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"topics"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logsBloom"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"root"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"status"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receiptProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},9365:(e,n,r)=>{r.d(n,{A:()=>c});r(6540);var s=r(4164);const i={tabItem:"tabItem_Ymn6"};var l=r(4848);function c(e){let{children:n,hidden:r,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,s.A)(i.tabItem,c),hidden:r,children:n})}},1470:(e,n,r)=>{r.d(n,{A:()=>T});var s=r(6540),i=r(4164),l=r(3104),c=r(6347),t=r(205),d=r(7485),a=r(1682),o=r(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:r}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:r,attributes:s,default:i}}=e;return{value:n,label:r,attributes:s,default:i}}))}(r);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,r])}function j(e){let{value:n,tabValues:r}=e;return r.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:r}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:r}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:n,groupId:r});return[(0,d.aZ)(l),(0,s.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:i}=e,l=x(e),[c,d]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=r.find((e=>e.default))??r[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:r,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(r);return[i,(0,s.useCallback)((e=>{r&&l.set(e)}),[r,l])]}({groupId:i}),g=(()=>{const e=a??m;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{g&&d(g)}),[g]);return{selectedValue:c,selectValue:(0,s.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=r(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=r(4848);function b(e){let{className:n,block:r,selectedValue:s,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,r=d.indexOf(n),i=t[r].value;i!==s&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const r=d.indexOf(e.currentTarget)+1;n=d[r]??d[0];break}case"ArrowLeft":{const r=d.indexOf(e.currentTarget)-1;n=d[r]??d[d.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":r},n),children:t.map((e=>{let{value:n,label:r,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":s===n}),children:r??n},n)}))})}function v(e){let{lazy:n,children:r,selectedValue:l}=e;const c=(Array.isArray(r)?r:[r]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,s.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,f.jsx)(b,{...n,...e}),(0,f.jsx)(v,{...n,...e})]})}function T(e){const n=(0,p.A)();return(0,f.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>t});var s=r(6540);const i={},l=s.createContext(i);function c(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4274],{9751:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var s=r(4848),i=r(8453),l=r(1470),c=r(9365);const t={title:"proof namespace",sidebar_label:"proof",sidebar_position:7},d=void 0,a={id:"interacting/json-rpc-ns/proof",title:"proof namespace",description:"proof_getTransactionByHash",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/proof.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/proof",permalink:"/interacting/json-rpc-ns/proof",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/proof.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:7,frontMatter:{title:"proof namespace",sidebar_label:"proof",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"personal",permalink:"/interacting/json-rpc-ns/personal"},next:{title:"trace",permalink:"/interacting/json-rpc-ns/trace"}},o={},h=[{value:"proof_getTransactionByHash",id:"proof_gettransactionbyhash",level:3},{value:"proof_getTransactionReceipt",id:"proof_gettransactionreceipt",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"proof_gettransactionbyhash",children:"proof_getTransactionByHash"}),"\n",(0,s.jsxs)(n.p,{children:["This function returns the same result as ",(0,s.jsx)(n.code,{children:"eth_getTransactionReceipt"})," and also a tx proof, receipt proof and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionByHash",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transaction"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"accessList"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"chainId"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"hash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"input"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"isSystemTx"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mint"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nonce"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"r"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"s"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sourceHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"v"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"yParity"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"proof_gettransactionreceipt",children:"proof_getTransactionReceipt"}),"\n",(0,s.jsxs)(n.p,{children:["This function should return the same result as ",(0,s.jsx)(n.code,{children:"eth_call"})," and also proofs of all used accounts and their storages and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionReceipt",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receipt"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"contractAddress"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"error"}),": ",(0,s.jsx)(n.em,{children:"string"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logs"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"removed"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"topics"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logsBloom"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"root"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"status"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receiptProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},9365:(e,n,r)=>{r.d(n,{A:()=>c});r(6540);var s=r(4164);const i={tabItem:"tabItem_Ymn6"};var l=r(4848);function c(e){let{children:n,hidden:r,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,s.A)(i.tabItem,c),hidden:r,children:n})}},1470:(e,n,r)=>{r.d(n,{A:()=>T});var s=r(6540),i=r(4164),l=r(3104),c=r(6347),t=r(205),d=r(7485),a=r(1682),o=r(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:r}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:r,attributes:s,default:i}}=e;return{value:n,label:r,attributes:s,default:i}}))}(r);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,r])}function j(e){let{value:n,tabValues:r}=e;return r.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:r}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:r}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:n,groupId:r});return[(0,d.aZ)(l),(0,s.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:i}=e,l=x(e),[c,d]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=r.find((e=>e.default))??r[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:r,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(r);return[i,(0,s.useCallback)((e=>{r&&l.set(e)}),[r,l])]}({groupId:i}),g=(()=>{const e=a??m;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{g&&d(g)}),[g]);return{selectedValue:c,selectValue:(0,s.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=r(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=r(4848);function b(e){let{className:n,block:r,selectedValue:s,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,r=d.indexOf(n),i=t[r].value;i!==s&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const r=d.indexOf(e.currentTarget)+1;n=d[r]??d[0];break}case"ArrowLeft":{const r=d.indexOf(e.currentTarget)-1;n=d[r]??d[d.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":r},n),children:t.map((e=>{let{value:n,label:r,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":s===n}),children:r??n},n)}))})}function v(e){let{lazy:n,children:r,selectedValue:l}=e;const c=(Array.isArray(r)?r:[r]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,s.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,f.jsx)(b,{...n,...e}),(0,f.jsx)(v,{...n,...e})]})}function T(e){const n=(0,p.A)();return(0,f.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>t});var s=r(6540);const i={},l=s.createContext(i);function c(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3683941a.7535dbc3.js b/assets/js/3683941a.14415fdd.js similarity index 99% rename from assets/js/3683941a.7535dbc3.js rename to assets/js/3683941a.14415fdd.js index 1d7dbf3d6..5aabb55ac 100644 --- a/assets/js/3683941a.7535dbc3.js +++ b/assets/js/3683941a.14415fdd.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1706],{1417:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var r=s(4848),t=s(8453),i=s(1470),l=s(9365);const d={title:"Database",sidebar_position:5},c=void 0,a={id:"fundamentals/database",title:"Database",description:"Nethermind uses the RocksDB database to store the state. By default, the database is located in the",source:"@site/docs/fundamentals/database.md",sourceDirName:"fundamentals",slug:"/fundamentals/database",permalink:"/next/fundamentals/database",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/database.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:5,frontMatter:{title:"Database",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Logs",permalink:"/next/fundamentals/logs"},next:{title:"Pruning",permalink:"/next/fundamentals/pruning"}},o={},h=[{value:"Database directory structure",id:"database-directory-structure",level:2},{value:"Database size",id:"database-size",level:2},{value:"Reducing database size",id:"reducing-database-size",level:2}];function u(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Nethermind uses the ",(0,r.jsx)(n.a,{href:"https://rocksdb.org",children:"RocksDB"})," database to store the state. By default, the database is located in the\nsame directory where the Nethermind executable is. You can change the database location using the ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#basedbpath",children:(0,r.jsx)(n.code,{children:"-d, --baseDbPath"})})," command line option."]}),"\n",(0,r.jsx)(n.h2,{id:"database-directory-structure",children:"Database directory structure"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Directory"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blockInfos"}),(0,r.jsx)(n.td,{children:"Information about blocks at each level of the block tree (canonical chain and branches)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blocks"}),(0,r.jsx)(n.td,{children:"Block bodies (block transactions and uncles)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"bloom"}),(0,r.jsx)(n.td,{children:"Bloom indices for fast log searches"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"canonicalHashTrie"}),(0,r.jsx)(n.td,{children:"LES protocol related data"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"code"}),(0,r.jsx)(n.td,{children:"Contract bytecodes"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"discoveryNodes"}),(0,r.jsx)(n.td,{children:"Peers discovered via discovery protocol - used for quick peering after restarts (you can copy this DB between nodes to speed up peering)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"headers"}),(0,r.jsx)(n.td,{children:"Block headers only"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"pendingTx"}),(0,r.jsx)(n.td,{children:"The second level cache of pending transactions/mempool (the first level is in memory). Wiped out on each restart."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"peers"}),(0,r.jsx)(n.td,{children:"Additional sync peers information (like peer reputation) - you can copy this DB between nodes to speed up peering on fresh sync"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"receipts"}),(0,r.jsx)(n.td,{children:"Transaction receipts"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"state"}),(0,r.jsx)(n.td,{children:"Blockchain state including accounts and contract storage (Patricia trie nodes)"})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:["You can use ",(0,r.jsx)(n.code,{children:"rsync"})," between your nodes to clone the database (One of our users copied the entire 4.5TB archive state this\nway while the node was running and only stopped the node for the very last stage of ",(0,r.jsx)(n.code,{children:"rsync"})," ). You can also copy\nthe database between Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h2,{id:"database-size",children:"Database size"}),"\n",(0,r.jsx)(n.p,{children:"Below is a comprehensive list of the supported chains, along with a detailed breakdown of their respective database directories. For reference, the database sizes listed have been determined using the standard configurations provided."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(l.A,{value:"mainnet",label:"Mainnet",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 158 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 209 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 595 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 6.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 8.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 4.7 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.7 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 985 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"sepolia",label:"Sepolia",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 42 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 39 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 293 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 2.1 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 6.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.3 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 386 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"holesky",label:"Holesky",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 18 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 14 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 55 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 738 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 967 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 506 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 737 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 90 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"gnosis",label:"Gnosis",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 66 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 216 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 199 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.2 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 11 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 668 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 75 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 503 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"chiado",label:"Chiado",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 2.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 1.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 9.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 3.1 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 67 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 656 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 20 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"energyweb",label:"Energyweb",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 27 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 4.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 25 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 7.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 14 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 75 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"volta",label:"Volta",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 34 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 8.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 33 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 6.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 95 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 93 GB"})}),"\n"]})})]}),"\n",(0,r.jsx)(n.h2,{id:"reducing-database-size",children:"Reducing database size"}),"\n",(0,r.jsx)(n.p,{children:"The Nethermind database can experience substantial growth over time, starting from an initial size of approximately 650\nGB. As a result, many node setups are configured to run on 1 TB disks. However, even with settings\ndesigned to slow the growth rate, these disks may eventually run out of free space."}),"\n",(0,r.jsx)(n.p,{children:"The current options to reduce the database size are as follows:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/next/fundamentals/sync#resync-a-node-from-scratch",children:"Resyncing database from scratch"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/next/fundamentals/pruning",children:"Pruning"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The table below presents a short comparison of these methods including possible fine-tuning of each method. Data was\nfetched from a node running on a machine with the below specifications:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Node.js"}),": v1.18.0"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Consensus client"}),": Lighthouse"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"CPU"}),": AMD EPYC 7713 (16 cores allocated for the VM)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"RAM"}),": 64 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk size"}),": 1.2 TB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk IOPS"}),": 70,000 to 80,000"]}),"\n"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Metric"}),(0,r.jsx)(n.th,{children:"Resync"}),(0,r.jsx)(n.th,{children:"Pruning"}),(0,r.jsx)(n.th,{children:"Pruning and memory budget (4 GB)"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Execution time"})}),(0,r.jsx)(n.td,{children:"~4h"}),(0,r.jsx)(n.td,{children:"~24h"}),(0,r.jsx)(n.td,{children:"~12h"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Minimum free disk space"})}),(0,r.jsx)(n.td,{children:"N/A. You can execute resync even if there is 0 free space (avoid such a case)."}),(0,r.jsx)(n.td,{children:"250 GB"}),(0,r.jsx)(n.td,{children:"250 GB"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Attestation rate drop"})}),(0,r.jsx)(n.td,{children:"100%. No attestation rewards during that time or highly reduced."}),(0,r.jsx)(n.td,{children:"5\u201310% during that time"}),(0,r.jsx)(n.td,{children:"N/A"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Average block processing time of new blocks during the process"})}),(0,r.jsx)(n.td,{children:"N/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s."}),(0,r.jsx)(n.td,{children:"0.7s"}),(0,r.jsx)(n.td,{children:"1.0s"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Is the node online during the process?"})}),(0,r.jsx)(n.td,{children:"No, unless the state is synced."}),(0,r.jsx)(n.td,{children:"Yes. The node follows the chain, and all modules are still enabled."}),(0,r.jsx)(n.td,{children:"Yes. The node follows chain and all modules are still enabled."})]})]})]}),"\n",(0,r.jsx)(n.p,{children:"The command used for testing disk IOPS was as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw\n"})})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(4164);const t={tabItem:"tabItem_Ymn6"};var i=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),t=s(4164),i=s(3104),l=s(6347),d=s(205),c=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:t}}=e;return{value:n,label:s,attributes:r,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(t.location.search);n.set(i,e),t.replace({...t.location,search:n.toString()})}),[i,t])]}function b(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,i=u(e),[l,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[a,h]=j({queryString:s,groupId:t}),[b,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,i]=(0,o.Dv)(s);return[t,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:t}),f=(()=>{const e=a??b;return x({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{f&&c(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!x({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),p(e)}),[h,p,i]),tabValues:i}}var p=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=s(4848);function g(e){let{className:n,block:s,selectedValue:r,selectValue:l,tabValues:d}=e;const c=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),t=d[s].value;t!==r&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,m.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:h,onClick:o,...i,className:(0,t.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function B(e){const n=b(e);return(0,m.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,m.jsx)(g,{...n,...e}),(0,m.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,m.jsx)(B,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var r=s(6540);const t={},i=r.createContext(t);function l(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1706],{1417:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var r=s(4848),t=s(8453),i=s(1470),l=s(9365);const d={title:"Database",sidebar_position:5},c=void 0,a={id:"fundamentals/database",title:"Database",description:"Nethermind uses the RocksDB database to store the state. By default, the database is located in the",source:"@site/docs/fundamentals/database.md",sourceDirName:"fundamentals",slug:"/fundamentals/database",permalink:"/next/fundamentals/database",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/database.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:5,frontMatter:{title:"Database",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Logs",permalink:"/next/fundamentals/logs"},next:{title:"Pruning",permalink:"/next/fundamentals/pruning"}},o={},h=[{value:"Database directory structure",id:"database-directory-structure",level:2},{value:"Database size",id:"database-size",level:2},{value:"Reducing database size",id:"reducing-database-size",level:2}];function u(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Nethermind uses the ",(0,r.jsx)(n.a,{href:"https://rocksdb.org",children:"RocksDB"})," database to store the state. By default, the database is located in the\nsame directory where the Nethermind executable is. You can change the database location using the ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#basedbpath",children:(0,r.jsx)(n.code,{children:"-d, --baseDbPath"})})," command line option."]}),"\n",(0,r.jsx)(n.h2,{id:"database-directory-structure",children:"Database directory structure"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Directory"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blockInfos"}),(0,r.jsx)(n.td,{children:"Information about blocks at each level of the block tree (canonical chain and branches)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blocks"}),(0,r.jsx)(n.td,{children:"Block bodies (block transactions and uncles)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"bloom"}),(0,r.jsx)(n.td,{children:"Bloom indices for fast log searches"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"canonicalHashTrie"}),(0,r.jsx)(n.td,{children:"LES protocol related data"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"code"}),(0,r.jsx)(n.td,{children:"Contract bytecodes"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"discoveryNodes"}),(0,r.jsx)(n.td,{children:"Peers discovered via discovery protocol - used for quick peering after restarts (you can copy this DB between nodes to speed up peering)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"headers"}),(0,r.jsx)(n.td,{children:"Block headers only"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"pendingTx"}),(0,r.jsx)(n.td,{children:"The second level cache of pending transactions/mempool (the first level is in memory). Wiped out on each restart."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"peers"}),(0,r.jsx)(n.td,{children:"Additional sync peers information (like peer reputation) - you can copy this DB between nodes to speed up peering on fresh sync"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"receipts"}),(0,r.jsx)(n.td,{children:"Transaction receipts"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"state"}),(0,r.jsx)(n.td,{children:"Blockchain state including accounts and contract storage (Patricia trie nodes)"})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:["You can use ",(0,r.jsx)(n.code,{children:"rsync"})," between your nodes to clone the database (One of our users copied the entire 4.5TB archive state this\nway while the node was running and only stopped the node for the very last stage of ",(0,r.jsx)(n.code,{children:"rsync"})," ). You can also copy\nthe database between Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h2,{id:"database-size",children:"Database size"}),"\n",(0,r.jsx)(n.p,{children:"Below is a comprehensive list of the supported chains, along with a detailed breakdown of their respective database directories. For reference, the database sizes listed have been determined using the standard configurations provided."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(l.A,{value:"mainnet",label:"Mainnet",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 158 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 209 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 595 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 6.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 8.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 4.7 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.7 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 985 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"sepolia",label:"Sepolia",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 42 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 39 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 293 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 2.1 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 6.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.3 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 386 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"holesky",label:"Holesky",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 18 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 14 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 55 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 738 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 967 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 506 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 737 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 90 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"gnosis",label:"Gnosis",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 66 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 216 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 199 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.2 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 11 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 668 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 75 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 503 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"chiado",label:"Chiado",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 2.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 1.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 9.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 3.1 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 67 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 656 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 20 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"energyweb",label:"Energyweb",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 27 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 4.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 25 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 7.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 14 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 75 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"volta",label:"Volta",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 34 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 8.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 33 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 6.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 95 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 93 GB"})}),"\n"]})})]}),"\n",(0,r.jsx)(n.h2,{id:"reducing-database-size",children:"Reducing database size"}),"\n",(0,r.jsx)(n.p,{children:"The Nethermind database can experience substantial growth over time, starting from an initial size of approximately 650\nGB. As a result, many node setups are configured to run on 1 TB disks. However, even with settings\ndesigned to slow the growth rate, these disks may eventually run out of free space."}),"\n",(0,r.jsx)(n.p,{children:"The current options to reduce the database size are as follows:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/next/fundamentals/sync#resync-a-node-from-scratch",children:"Resyncing database from scratch"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/next/fundamentals/pruning",children:"Pruning"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The table below presents a short comparison of these methods including possible fine-tuning of each method. Data was\nfetched from a node running on a machine with the below specifications:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Node.js"}),": v1.18.0"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Consensus client"}),": Lighthouse"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"CPU"}),": AMD EPYC 7713 (16 cores allocated for the VM)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"RAM"}),": 64 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk size"}),": 1.2 TB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk IOPS"}),": 70,000 to 80,000"]}),"\n"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Metric"}),(0,r.jsx)(n.th,{children:"Resync"}),(0,r.jsx)(n.th,{children:"Pruning"}),(0,r.jsx)(n.th,{children:"Pruning and memory budget (4 GB)"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Execution time"})}),(0,r.jsx)(n.td,{children:"~4h"}),(0,r.jsx)(n.td,{children:"~24h"}),(0,r.jsx)(n.td,{children:"~12h"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Minimum free disk space"})}),(0,r.jsx)(n.td,{children:"N/A. You can execute resync even if there is 0 free space (avoid such a case)."}),(0,r.jsx)(n.td,{children:"250 GB"}),(0,r.jsx)(n.td,{children:"250 GB"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Attestation rate drop"})}),(0,r.jsx)(n.td,{children:"100%. No attestation rewards during that time or highly reduced."}),(0,r.jsx)(n.td,{children:"5\u201310% during that time"}),(0,r.jsx)(n.td,{children:"N/A"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Average block processing time of new blocks during the process"})}),(0,r.jsx)(n.td,{children:"N/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s."}),(0,r.jsx)(n.td,{children:"0.7s"}),(0,r.jsx)(n.td,{children:"1.0s"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Is the node online during the process?"})}),(0,r.jsx)(n.td,{children:"No, unless the state is synced."}),(0,r.jsx)(n.td,{children:"Yes. The node follows the chain, and all modules are still enabled."}),(0,r.jsx)(n.td,{children:"Yes. The node follows chain and all modules are still enabled."})]})]})]}),"\n",(0,r.jsx)(n.p,{children:"The command used for testing disk IOPS was as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw\n"})})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(4164);const t={tabItem:"tabItem_Ymn6"};var i=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),t=s(4164),i=s(3104),l=s(6347),d=s(205),c=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:t}}=e;return{value:n,label:s,attributes:r,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(t.location.search);n.set(i,e),t.replace({...t.location,search:n.toString()})}),[i,t])]}function b(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,i=u(e),[l,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[a,h]=j({queryString:s,groupId:t}),[b,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,i]=(0,o.Dv)(s);return[t,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:t}),f=(()=>{const e=a??b;return x({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{f&&c(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!x({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),p(e)}),[h,p,i]),tabValues:i}}var p=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=s(4848);function g(e){let{className:n,block:s,selectedValue:r,selectValue:l,tabValues:d}=e;const c=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),t=d[s].value;t!==r&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,m.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:h,onClick:o,...i,className:(0,t.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function B(e){const n=b(e);return(0,m.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,m.jsx)(g,{...n,...e}),(0,m.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,m.jsx)(B,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var r=s(6540);const t={},i=r.createContext(t);function l(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/376e38f7.0ce3e683.js b/assets/js/376e38f7.50e43e21.js similarity index 99% rename from assets/js/376e38f7.0ce3e683.js rename to assets/js/376e38f7.50e43e21.js index 5b7923569..b65f5f731 100644 --- a/assets/js/376e38f7.0ce3e683.js +++ b/assets/js/376e38f7.50e43e21.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7994],{6084:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>j,frontMatter:()=>i,metadata:()=>d,toc:()=>u});var r=s(4848),l=s(8453),a=s(1470),t=s(9365);const i={title:"clique namespace",sidebar_label:"clique",sidebar_position:1},c=void 0,d={id:"interacting/json-rpc-ns/clique",title:"clique namespace",description:"clique_discard",source:"@site/docs/interacting/json-rpc-ns/clique.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/clique",permalink:"/next/interacting/json-rpc-ns/clique",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/clique.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"clique namespace",sidebar_label:"clique",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"admin",permalink:"/next/interacting/json-rpc-ns/admin"},next:{title:"debug",permalink:"/next/interacting/json-rpc-ns/debug"}},o={},u=[{value:"clique_discard",id:"clique_discard",level:3},{value:"clique_getBlockSigner",id:"clique_getblocksigner",level:3},{value:"clique_getSigners",id:"clique_getsigners",level:3},{value:"clique_getSignersAnnotated",id:"clique_getsignersannotated",level:3},{value:"clique_getSignersAtHash",id:"clique_getsignersathash",level:3},{value:"clique_getSignersAtHashAnnotated",id:"clique_getsignersathashannotated",level:3},{value:"clique_getSignersAtNumber",id:"clique_getsignersatnumber",level:3},{value:"clique_getSnapshot",id:"clique_getsnapshot",level:3},{value:"clique_getSnapshotAtHash",id:"clique_getsnapshotathash",level:3},{value:"clique_produceBlock",id:"clique_produceblock",level:3},{value:"clique_propose",id:"clique_propose",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"clique_discard",children:"clique_discard"}),"\n",(0,r.jsx)(n.p,{children:"This method drops a currently running proposal. The signer will not cast further votes (either for or against) the address."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_discard",\n "params": [signer]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getblocksigner",children:"clique_getBlockSigner"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getBlockSigner",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsigners",children:"clique_getSigners"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSigners",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersannotated",children:"clique_getSignersAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAnnotated",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathash",children:"clique_getSignersAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathashannotated",children:"clique_getSignersAtHashAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHashAnnotated",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersatnumber",children:"clique_getSignersAtNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by block number."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtNumber",\n "params": [number]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshot",children:"clique_getSnapshot"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a snapshot of all clique state at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshot",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshotathash",children:"clique_getSnapshotAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the state snapshot at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshotAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_produceblock",children:"clique_produceBlock"}),"\n",(0,r.jsx)(n.p,{children:"Forces Clique block producer to produce a new block"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_produceBlock",\n "params": [parentHash]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_propose",children:"clique_propose"}),"\n",(0,r.jsxs)(n.p,{children:["Adds a new authorization proposal that the signer will attempt to push through. If the ",(0,r.jsx)(n.code,{children:"vote"})," parameter is true, the local signer votes for the given address to be included in the set of authorized signers. With ",(0,r.jsx)(n.code,{children:"vote"})," set to false, the signer is against the address."]}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"vote"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_propose",\n "params": [signer, vote]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var a=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>A});var r=s(6540),l=s(4164),a=s(3104),t=s(6347),i=s(205),c=s(7485),d=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const l=(0,t.W6)(),a=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(l.location.search);n.set(a,e),l.replace({...l.location,search:n.toString()})}),[a,l])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,a=h(e),[t,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[d,u]=p({queryString:s,groupId:l}),[x,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,a]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&a.set(e)}),[s,a])]}({groupId:l}),m=(()=>{const e=d??x;return j({value:e,tabValues:a})?e:null})();(0,i.A)((()=>{m&&c(m)}),[m]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),g(e)}),[u,g,a]),tabValues:a}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:i}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),l=i[s].value;l!==r&&(d(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:a}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:u,onClick:o,...a,className:(0,l.A)("tabs__item",m.tabItem,a?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:a}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function q(e){const n=x(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",m.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(f,{...n,...e})]})}function A(e){const n=(0,g.A)();return(0,b.jsx)(q,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>i});var r=s(6540);const l={},a=r.createContext(l);function t(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7994],{6084:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>j,frontMatter:()=>i,metadata:()=>d,toc:()=>u});var r=s(4848),l=s(8453),a=s(1470),t=s(9365);const i={title:"clique namespace",sidebar_label:"clique",sidebar_position:1},c=void 0,d={id:"interacting/json-rpc-ns/clique",title:"clique namespace",description:"clique_discard",source:"@site/docs/interacting/json-rpc-ns/clique.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/clique",permalink:"/next/interacting/json-rpc-ns/clique",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/clique.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"clique namespace",sidebar_label:"clique",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"admin",permalink:"/next/interacting/json-rpc-ns/admin"},next:{title:"debug",permalink:"/next/interacting/json-rpc-ns/debug"}},o={},u=[{value:"clique_discard",id:"clique_discard",level:3},{value:"clique_getBlockSigner",id:"clique_getblocksigner",level:3},{value:"clique_getSigners",id:"clique_getsigners",level:3},{value:"clique_getSignersAnnotated",id:"clique_getsignersannotated",level:3},{value:"clique_getSignersAtHash",id:"clique_getsignersathash",level:3},{value:"clique_getSignersAtHashAnnotated",id:"clique_getsignersathashannotated",level:3},{value:"clique_getSignersAtNumber",id:"clique_getsignersatnumber",level:3},{value:"clique_getSnapshot",id:"clique_getsnapshot",level:3},{value:"clique_getSnapshotAtHash",id:"clique_getsnapshotathash",level:3},{value:"clique_produceBlock",id:"clique_produceblock",level:3},{value:"clique_propose",id:"clique_propose",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"clique_discard",children:"clique_discard"}),"\n",(0,r.jsx)(n.p,{children:"This method drops a currently running proposal. The signer will not cast further votes (either for or against) the address."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_discard",\n "params": [signer]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getblocksigner",children:"clique_getBlockSigner"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getBlockSigner",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsigners",children:"clique_getSigners"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSigners",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersannotated",children:"clique_getSignersAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAnnotated",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathash",children:"clique_getSignersAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathashannotated",children:"clique_getSignersAtHashAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHashAnnotated",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersatnumber",children:"clique_getSignersAtNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by block number."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtNumber",\n "params": [number]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshot",children:"clique_getSnapshot"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a snapshot of all clique state at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshot",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshotathash",children:"clique_getSnapshotAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the state snapshot at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshotAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_produceblock",children:"clique_produceBlock"}),"\n",(0,r.jsx)(n.p,{children:"Forces Clique block producer to produce a new block"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_produceBlock",\n "params": [parentHash]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_propose",children:"clique_propose"}),"\n",(0,r.jsxs)(n.p,{children:["Adds a new authorization proposal that the signer will attempt to push through. If the ",(0,r.jsx)(n.code,{children:"vote"})," parameter is true, the local signer votes for the given address to be included in the set of authorized signers. With ",(0,r.jsx)(n.code,{children:"vote"})," set to false, the signer is against the address."]}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"vote"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_propose",\n "params": [signer, vote]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var a=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>A});var r=s(6540),l=s(4164),a=s(3104),t=s(6347),i=s(205),c=s(7485),d=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const l=(0,t.W6)(),a=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(l.location.search);n.set(a,e),l.replace({...l.location,search:n.toString()})}),[a,l])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,a=h(e),[t,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[d,u]=p({queryString:s,groupId:l}),[x,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,a]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&a.set(e)}),[s,a])]}({groupId:l}),m=(()=>{const e=d??x;return j({value:e,tabValues:a})?e:null})();(0,i.A)((()=>{m&&c(m)}),[m]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),g(e)}),[u,g,a]),tabValues:a}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:i}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),l=i[s].value;l!==r&&(d(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:a}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:u,onClick:o,...a,className:(0,l.A)("tabs__item",m.tabItem,a?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:a}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function q(e){const n=x(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",m.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(f,{...n,...e})]})}function A(e){const n=(0,g.A)();return(0,b.jsx)(q,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>i});var r=s(6540);const l={},a=r.createContext(l);function t(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/38294505.dd8a9f3c.js b/assets/js/38294505.15f56969.js similarity index 99% rename from assets/js/38294505.dd8a9f3c.js rename to assets/js/38294505.15f56969.js index a4d7e8b61..7ef7ef5ab 100644 --- a/assets/js/38294505.dd8a9f3c.js +++ b/assets/js/38294505.15f56969.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1745],{5320:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>t});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"trace namespace",sidebar_label:"trace",sidebar_position:8},h=void 0,x={id:"interacting/json-rpc-ns/trace",title:"trace namespace",description:"trace_block",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/trace.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/trace",permalink:"/1.25.4/interacting/json-rpc-ns/trace",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/trace.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"trace namespace",sidebar_label:"trace",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"proof",permalink:"/1.25.4/interacting/json-rpc-ns/proof"},next:{title:"txpool",permalink:"/1.25.4/interacting/json-rpc-ns/txpool"}},j={},t=[{value:"trace_block",id:"trace_block",level:3},{value:"trace_call",id:"trace_call",level:3},{value:"trace_filter",id:"trace_filter",level:3},{value:"trace_rawTransaction",id:"trace_rawtransaction",level:3},{value:"trace_replayBlockTransactions",id:"trace_replayblocktransactions",level:3},{value:"trace_replayTransaction",id:"trace_replaytransaction",level:3},{value:"trace_transaction",id:"trace_transaction",level:3}];function a(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"trace_block",children:"trace_block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"numberOrTag"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_block",\n "params": [numberOrTag]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_call",children:"trace_call"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"call"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_call",\n "params": [call, traceTypes, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_filter",children:"trace_filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceFilterForRpc"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"count"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_filter",\n "params": [traceFilterForRpc]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_rawtransaction",children:"trace_rawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Traces a call to eth_sendRawTransaction without making the call, returning the traces"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_rawTransaction",\n "params": [data, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replayblocktransactions",children:"trace_replayBlockTransactions"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayBlockTransactions",\n "params": [blockParameter, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replaytransaction",children:"trace_replayTransaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayTransaction",\n "params": [txHash, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_transaction",children:"trace_transaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_transaction",\n "params": [txHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>T});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),j=s(679);function t(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function a(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function g(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=a(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,t]=m({queryString:s,groupId:i}),[g,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,j.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??g;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),t(e),u(e)}),[t,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},t=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:t,onClick:j,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=g(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function T(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:t(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1745],{5320:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>t});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"trace namespace",sidebar_label:"trace",sidebar_position:8},h=void 0,x={id:"interacting/json-rpc-ns/trace",title:"trace namespace",description:"trace_block",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/trace.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/trace",permalink:"/1.25.4/interacting/json-rpc-ns/trace",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/trace.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"trace namespace",sidebar_label:"trace",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"proof",permalink:"/1.25.4/interacting/json-rpc-ns/proof"},next:{title:"txpool",permalink:"/1.25.4/interacting/json-rpc-ns/txpool"}},j={},t=[{value:"trace_block",id:"trace_block",level:3},{value:"trace_call",id:"trace_call",level:3},{value:"trace_filter",id:"trace_filter",level:3},{value:"trace_rawTransaction",id:"trace_rawtransaction",level:3},{value:"trace_replayBlockTransactions",id:"trace_replayblocktransactions",level:3},{value:"trace_replayTransaction",id:"trace_replaytransaction",level:3},{value:"trace_transaction",id:"trace_transaction",level:3}];function a(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"trace_block",children:"trace_block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"numberOrTag"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_block",\n "params": [numberOrTag]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_call",children:"trace_call"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"call"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_call",\n "params": [call, traceTypes, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_filter",children:"trace_filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceFilterForRpc"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"count"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_filter",\n "params": [traceFilterForRpc]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_rawtransaction",children:"trace_rawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Traces a call to eth_sendRawTransaction without making the call, returning the traces"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_rawTransaction",\n "params": [data, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replayblocktransactions",children:"trace_replayBlockTransactions"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayBlockTransactions",\n "params": [blockParameter, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replaytransaction",children:"trace_replayTransaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayTransaction",\n "params": [txHash, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_transaction",children:"trace_transaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_transaction",\n "params": [txHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>T});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),j=s(679);function t(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function a(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function g(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=a(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,t]=m({queryString:s,groupId:i}),[g,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,j.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??g;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),t(e),u(e)}),[t,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},t=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:t,onClick:j,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=g(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function T(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:t(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/38506f63.1a6bd8cc.js b/assets/js/38506f63.3f253462.js similarity index 98% rename from assets/js/38506f63.1a6bd8cc.js rename to assets/js/38506f63.3f253462.js index b142369c9..fd48a33a1 100644 --- a/assets/js/38506f63.1a6bd8cc.js +++ b/assets/js/38506f63.3f253462.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3300],{2227:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=t(4848),i=t(8453);const o={title:"Performance tuning",sidebar_position:7},r=void 0,a={id:"fundamentals/performance-tuning",title:"Performance tuning",description:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.",source:"@site/versioned_docs/version-1.26.0/fundamentals/performance-tuning.md",sourceDirName:"fundamentals",slug:"/fundamentals/performance-tuning",permalink:"/1.26.0/fundamentals/performance-tuning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/performance-tuning.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:7,frontMatter:{title:"Performance tuning",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Pruning",permalink:"/1.26.0/fundamentals/pruning"},next:{title:"Private networks",permalink:"/1.26.0/fundamentals/private-networks"}},c={},d=[{value:"Peer discovery",id:"peer-discovery",level:2},{value:"Port forwarding",id:"port-forwarding",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Snap sync",id:"snap-sync",level:2},{value:"Old bodies and receipts",id:"old-bodies-and-receipts",level:2},{value:"Block processing time and attestation",id:"block-processing-time-and-attestation",level:2}];function l(e){const n={code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs."}),"\n",(0,s.jsx)(n.h2,{id:"peer-discovery",children:"Peer discovery"}),"\n",(0,s.jsxs)(n.p,{children:["To connect to the Ethereum network, Nethermind needs to maintain connections to other clients. The number of connections can be configured with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers "}),". The default value depends on the network. Increasing this number may reduce syncing time, while reducing this number may help with attestation performance.\nAlso, you can increase the rate at which a new connection is established with ",(0,s.jsx)(n.code,{children:"--Network.MaxOutgoingConnectsPerSec "}),". The default value is 20 while 50 would be a reasonable higher value. This tends to reduce the snap sync time; however, some ISPs may throttle your Internet connection if you set this value too high. Also, some WiFi routers may hang if the value is set too high."]}),"\n",(0,s.jsx)(n.h2,{id:"port-forwarding",children:"Port forwarding"}),"\n",(0,s.jsxs)(n.p,{children:["While port forwarding is not strictly required, it helps significantly with finding peers and is essential for the network's overall health. The exact steps for port forwarding highly depend on your environment, router, and ISP. For most home configurations, automatic port forwarding can be turned on with ",(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true"}),".\nSome ISPs are more restrictive and do not support port forwarding and/or utilize provider-level NAT. In such cases, your best option is to use a VPN that supports port forwarding. Keep in mind that consensus clients need a separate port forwarding."]}),"\n",(0,s.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,s.jsx)(n.p,{children:"On the Ethereum mainnet, most of the syncing time is split into three phases: snap sync, old bodies, and old receipts. Strictly speaking, there are also fast sync, full sync, and state sync phases. However, they usually complete in less than a minute, with state sync usually taking up to 3 minutes."}),"\n",(0,s.jsx)(n.p,{children:"At the moment, the best test case sync time is 1 hour 50 minutes for all phases with the following configuration:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"CPU: AMD Ryzen 9 7950X"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Memory: 128GB RAM"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Storage: Intel Optane SSD 905P Series 900GB"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Network: 1 Gbps Internet with TorGuard VPN with WireGuard protocol. Both execution and consensus clients port forwarding are set up manually."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Command line options:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true\n--Network.MaxOutgoingConnectsPerSec 50\n--Network.ProcessingThreadCount 32\n--Sync.TuneDbMode HeavyWrite\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"snap-sync",children:"Snap sync"}),"\n",(0,s.jsx)(n.p,{children:"Snap sync is the process of downloading the Ethereum state tree. After it is complete, and after the state sync phase, Nethermind can process and follow the chain. The fastest tested snap sync and state sync time is 25 minutes.\nThis phase is the most I/O-intensive sync phase, and therefore, assuming a fast internet, the sync time highly depends on your SSD's write speed. Remember that most SSDs only advertise peak write speed, usually above 5GB/s. However, they tend to slow down significantly to around 0.5GB/s (or even less for a QLC SSD) after a few seconds. Therefore, look for SSDs with high sustained write speed."}),"\n",(0,s.jsxs)(n.p,{children:["Also, ensuring your SSD is sufficiently cooled to prevent thermal throttling is essential. This is often overlooked as most workloads rarely stress SSD as much; however, to reduce sync time, Nethermind will utilize your SSD to its limit. If, for whatever reason, you need to minimize the I/O load, you can specify a rate limit with ",(0,s.jsx)(n.code,{children:"--Db.MaxBytesPerSec 1000000000"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Nethermind temporarily changes the database configuration during sync to optimize it for writing, notably the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode HeavyWrite"})," is turned on by default. On some systems with slow SSDs, the use of the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode AggressiveHeavyWrite"})," may boost. Also, the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode DisableCompaction"})," can be used to disable compaction altogether. This is likely faster for systems using entry-level NVMe SSDs and is also useful to extend the lifespan of your SSD as it provides the lowest total writes possible. However, it uses about 3GB of extra memory during snap sync. The state sync phase may appear to hang for about 10 minutes as the whole database compacts for the first time after snap sync."]}),"\n",(0,s.jsxs)(n.p,{children:["If you are running on a VPS with artificially capped IOPS, or you are using SATA SSD (which is highly not recommended), increasing the state DB block size with ",(0,s.jsx)(n.code,{children:"--Db.StateDbBlockSize 16384"})," may help to reduce snap sync time. However, this negatively affects block processing time. An alternative is to turn on compaction readahead with ",(0,s.jsx)(n.code,{children:"--Db.CompactionReadAhead 128000"}),"; however, this may take up a few extra GB of memory depending on the readahead value."]}),"\n",(0,s.jsx)(n.h2,{id:"old-bodies-and-receipts",children:"Old bodies and receipts"}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and old receipts are the process of downloading block bodies and receipts. This is required for some RPC methods, such as ",(0,s.jsx)(n.code,{children:"eth_getLogs"}),", and for consensus clients to work correctly. If you don't need them, skip this phase with"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync false\n--Sync.DownloadReceiptsInFastSync false\n--Sync.NonValidatorNode true\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and receipts are mainly limited by your Internet connection. With a 1Gbps connection, they consume around 250MB/s and 500MB/s of writes, respectively, which is generally reasonable for most PCIE SSDs. On older systems or VPS with low single thread performance and high Internet speed, the block body deserialization may be a bottleneck, in which case, you can increase the number of network processing threads with ",(0,s.jsx)(n.code,{children:"--Network.ProcessingThreadCount 32"}),". However, this may impact block processing time."]}),"\n",(0,s.jsx)(n.h2,{id:"block-processing-time-and-attestation",children:"Block processing time and attestation"}),"\n",(0,s.jsxs)(n.p,{children:["Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time.\nTo help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option ",(0,s.jsx)(n.code,{children:"--Init.MemoryHint 2000000000"}),". If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time."]}),"\n",(0,s.jsxs)(n.p,{children:["It is also possible to disable compression of the state DB with ",(0,s.jsx)(n.code,{children:"--Db.StateDbDisableCompression true"})," that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers 20"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3300],{2227:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=t(4848),i=t(8453);const o={title:"Performance tuning",sidebar_position:7},r=void 0,a={id:"fundamentals/performance-tuning",title:"Performance tuning",description:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.",source:"@site/versioned_docs/version-1.26.0/fundamentals/performance-tuning.md",sourceDirName:"fundamentals",slug:"/fundamentals/performance-tuning",permalink:"/1.26.0/fundamentals/performance-tuning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/performance-tuning.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:7,frontMatter:{title:"Performance tuning",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Pruning",permalink:"/1.26.0/fundamentals/pruning"},next:{title:"Private networks",permalink:"/1.26.0/fundamentals/private-networks"}},c={},d=[{value:"Peer discovery",id:"peer-discovery",level:2},{value:"Port forwarding",id:"port-forwarding",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Snap sync",id:"snap-sync",level:2},{value:"Old bodies and receipts",id:"old-bodies-and-receipts",level:2},{value:"Block processing time and attestation",id:"block-processing-time-and-attestation",level:2}];function l(e){const n={code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs."}),"\n",(0,s.jsx)(n.h2,{id:"peer-discovery",children:"Peer discovery"}),"\n",(0,s.jsxs)(n.p,{children:["To connect to the Ethereum network, Nethermind needs to maintain connections to other clients. The number of connections can be configured with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers "}),". The default value depends on the network. Increasing this number may reduce syncing time, while reducing this number may help with attestation performance.\nAlso, you can increase the rate at which a new connection is established with ",(0,s.jsx)(n.code,{children:"--Network.MaxOutgoingConnectsPerSec "}),". The default value is 20 while 50 would be a reasonable higher value. This tends to reduce the snap sync time; however, some ISPs may throttle your Internet connection if you set this value too high. Also, some WiFi routers may hang if the value is set too high."]}),"\n",(0,s.jsx)(n.h2,{id:"port-forwarding",children:"Port forwarding"}),"\n",(0,s.jsxs)(n.p,{children:["While port forwarding is not strictly required, it helps significantly with finding peers and is essential for the network's overall health. The exact steps for port forwarding highly depend on your environment, router, and ISP. For most home configurations, automatic port forwarding can be turned on with ",(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true"}),".\nSome ISPs are more restrictive and do not support port forwarding and/or utilize provider-level NAT. In such cases, your best option is to use a VPN that supports port forwarding. Keep in mind that consensus clients need a separate port forwarding."]}),"\n",(0,s.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,s.jsx)(n.p,{children:"On the Ethereum mainnet, most of the syncing time is split into three phases: snap sync, old bodies, and old receipts. Strictly speaking, there are also fast sync, full sync, and state sync phases. However, they usually complete in less than a minute, with state sync usually taking up to 3 minutes."}),"\n",(0,s.jsx)(n.p,{children:"At the moment, the best test case sync time is 1 hour 50 minutes for all phases with the following configuration:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"CPU: AMD Ryzen 9 7950X"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Memory: 128GB RAM"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Storage: Intel Optane SSD 905P Series 900GB"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Network: 1 Gbps Internet with TorGuard VPN with WireGuard protocol. Both execution and consensus clients port forwarding are set up manually."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Command line options:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true\n--Network.MaxOutgoingConnectsPerSec 50\n--Network.ProcessingThreadCount 32\n--Sync.TuneDbMode HeavyWrite\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"snap-sync",children:"Snap sync"}),"\n",(0,s.jsx)(n.p,{children:"Snap sync is the process of downloading the Ethereum state tree. After it is complete, and after the state sync phase, Nethermind can process and follow the chain. The fastest tested snap sync and state sync time is 25 minutes.\nThis phase is the most I/O-intensive sync phase, and therefore, assuming a fast internet, the sync time highly depends on your SSD's write speed. Remember that most SSDs only advertise peak write speed, usually above 5GB/s. However, they tend to slow down significantly to around 0.5GB/s (or even less for a QLC SSD) after a few seconds. Therefore, look for SSDs with high sustained write speed."}),"\n",(0,s.jsxs)(n.p,{children:["Also, ensuring your SSD is sufficiently cooled to prevent thermal throttling is essential. This is often overlooked as most workloads rarely stress SSD as much; however, to reduce sync time, Nethermind will utilize your SSD to its limit. If, for whatever reason, you need to minimize the I/O load, you can specify a rate limit with ",(0,s.jsx)(n.code,{children:"--Db.MaxBytesPerSec 1000000000"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Nethermind temporarily changes the database configuration during sync to optimize it for writing, notably the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode HeavyWrite"})," is turned on by default. On some systems with slow SSDs, the use of the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode AggressiveHeavyWrite"})," may boost. Also, the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode DisableCompaction"})," can be used to disable compaction altogether. This is likely faster for systems using entry-level NVMe SSDs and is also useful to extend the lifespan of your SSD as it provides the lowest total writes possible. However, it uses about 3GB of extra memory during snap sync. The state sync phase may appear to hang for about 10 minutes as the whole database compacts for the first time after snap sync."]}),"\n",(0,s.jsxs)(n.p,{children:["If you are running on a VPS with artificially capped IOPS, or you are using SATA SSD (which is highly not recommended), increasing the state DB block size with ",(0,s.jsx)(n.code,{children:"--Db.StateDbBlockSize 16384"})," may help to reduce snap sync time. However, this negatively affects block processing time. An alternative is to turn on compaction readahead with ",(0,s.jsx)(n.code,{children:"--Db.CompactionReadAhead 128000"}),"; however, this may take up a few extra GB of memory depending on the readahead value."]}),"\n",(0,s.jsx)(n.h2,{id:"old-bodies-and-receipts",children:"Old bodies and receipts"}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and old receipts are the process of downloading block bodies and receipts. This is required for some RPC methods, such as ",(0,s.jsx)(n.code,{children:"eth_getLogs"}),", and for consensus clients to work correctly. If you don't need them, skip this phase with"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync false\n--Sync.DownloadReceiptsInFastSync false\n--Sync.NonValidatorNode true\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and receipts are mainly limited by your Internet connection. With a 1Gbps connection, they consume around 250MB/s and 500MB/s of writes, respectively, which is generally reasonable for most PCIE SSDs. On older systems or VPS with low single thread performance and high Internet speed, the block body deserialization may be a bottleneck, in which case, you can increase the number of network processing threads with ",(0,s.jsx)(n.code,{children:"--Network.ProcessingThreadCount 32"}),". However, this may impact block processing time."]}),"\n",(0,s.jsx)(n.h2,{id:"block-processing-time-and-attestation",children:"Block processing time and attestation"}),"\n",(0,s.jsxs)(n.p,{children:["Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time.\nTo help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option ",(0,s.jsx)(n.code,{children:"--Init.MemoryHint 2000000000"}),". If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time."]}),"\n",(0,s.jsxs)(n.p,{children:["It is also possible to disable compression of the state DB with ",(0,s.jsx)(n.code,{children:"--Db.StateDbDisableCompression true"})," that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers 20"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/39edaf1d.fbe49815.js b/assets/js/39edaf1d.136a5a6d.js similarity index 99% rename from assets/js/39edaf1d.fbe49815.js rename to assets/js/39edaf1d.136a5a6d.js index e1774292c..30a3dc928 100644 --- a/assets/js/39edaf1d.fbe49815.js +++ b/assets/js/39edaf1d.136a5a6d.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[118],{8259:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>j,frontMatter:()=>c,metadata:()=>o,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),t=s(9365);const c={title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},d=void 0,o={id:"interacting/json-rpc-ns/txpool",title:"txpool namespace",description:"txpool_content",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/txpool.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/txpool",permalink:"/interacting/json-rpc-ns/txpool",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/txpool.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:9,frontMatter:{title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"trace",permalink:"/interacting/json-rpc-ns/trace"},next:{title:"web3",permalink:"/interacting/json-rpc-ns/web3"}},a={},h=[{value:"txpool_content",id:"txpool_content",level:3},{value:"txpool_inspect",id:"txpool_inspect",level:3},{value:"txpool_status",id:"txpool_status",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"txpool_content",children:"txpool_content"}),"\n",(0,r.jsx)(n.p,{children:"Returns tx pool content."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_content",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_inspect",children:"txpool_inspect"}),"\n",(0,r.jsx)(n.p,{children:"Returns a detailed info on tx pool transactions."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_inspect",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_status",children:"txpool_status"}),"\n",(0,r.jsx)(n.p,{children:"Returns a tx pool status."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_status",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),t=s(6347),c=s(205),d=s(7485),o=s(1682),a=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[o,h]=u({queryString:s,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,a.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),g=(()=>{const e=o??m;return j({value:e,tabValues:l})?e:null})();(0,c.A)((()=>{g&&d(g)}),[g]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:c}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,l.a_)(),a=e=>{const n=e.currentTarget,s=d.indexOf(n),i=c[s].value;i!==r&&(o(n),t(i))},h=e=>{let n=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:c.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:a,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,p.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>c});var r=s(6540);const i={},l=r.createContext(i);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[118],{8259:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>j,frontMatter:()=>c,metadata:()=>o,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),t=s(9365);const c={title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},d=void 0,o={id:"interacting/json-rpc-ns/txpool",title:"txpool namespace",description:"txpool_content",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/txpool.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/txpool",permalink:"/interacting/json-rpc-ns/txpool",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/txpool.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:9,frontMatter:{title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"trace",permalink:"/interacting/json-rpc-ns/trace"},next:{title:"web3",permalink:"/interacting/json-rpc-ns/web3"}},a={},h=[{value:"txpool_content",id:"txpool_content",level:3},{value:"txpool_inspect",id:"txpool_inspect",level:3},{value:"txpool_status",id:"txpool_status",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"txpool_content",children:"txpool_content"}),"\n",(0,r.jsx)(n.p,{children:"Returns tx pool content."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_content",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_inspect",children:"txpool_inspect"}),"\n",(0,r.jsx)(n.p,{children:"Returns a detailed info on tx pool transactions."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_inspect",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_status",children:"txpool_status"}),"\n",(0,r.jsx)(n.p,{children:"Returns a tx pool status."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_status",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),t=s(6347),c=s(205),d=s(7485),o=s(1682),a=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[o,h]=u({queryString:s,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,a.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),g=(()=>{const e=o??m;return j({value:e,tabValues:l})?e:null})();(0,c.A)((()=>{g&&d(g)}),[g]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:c}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,l.a_)(),a=e=>{const n=e.currentTarget,s=d.indexOf(n),i=c[s].value;i!==r&&(o(n),t(i))},h=e=>{let n=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:c.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:a,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,p.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>c});var r=s(6540);const i={},l=r.createContext(i);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3b7c3d25.e517aeef.js b/assets/js/3b7c3d25.b750c2b7.js similarity index 98% rename from assets/js/3b7c3d25.e517aeef.js rename to assets/js/3b7c3d25.b750c2b7.js index 68cd315af..1adfd89a8 100644 --- a/assets/js/3b7c3d25.e517aeef.js +++ b/assets/js/3b7c3d25.b750c2b7.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6208],{2046:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>h});var r=t(4848),s=t(8453);const i={title:"Grafana and Prometheus",sidebar_position:0},o=void 0,a={id:"monitoring/metrics/grafana-and-prometheus",title:"Grafana and Prometheus",description:"This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.",source:"@site/versioned_docs/version-1.28.0/monitoring/metrics/grafana-and-prometheus.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/grafana-and-prometheus",permalink:"/1.28.0/monitoring/metrics/grafana-and-prometheus",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/monitoring/metrics/grafana-and-prometheus.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Grafana and Prometheus",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Metrics",permalink:"/1.28.0/monitoring/metrics/"},next:{title:"dotnet-counters",permalink:"/1.28.0/monitoring/metrics/dotnet-counters"}},c={},h=[{value:"Step 1: Set up Grafana and Prometheus",id:"step-1-set-up-grafana-and-prometheus",level:2},{value:"Step 2: Run the stack",id:"step-2-run-the-stack",level:2},{value:"Step 3: Run Nethermind",id:"step-3-run-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["This guide will walk you through setting up a local metrics infrastructure using ",(0,r.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,r.jsx)(n.a,{href:"https://prometheus.io",children:"Prometheus"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"step-1-set-up-grafana-and-prometheus",children:"Step 1: Set up Grafana and Prometheus"}),"\n",(0,r.jsxs)(n.p,{children:["To simplify the process, we will use the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/metrics-infrastructure",children:"metrics-infrastructure"})," repository, which contains the necessary configuration files to run Grafana and Prometheus in a Docker container. However, you can also set up Grafana and Prometheus manually the way it fits your specific needs."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/NethermindEth/metrics-infrastructure.git\n"})}),"\n",(0,r.jsx)(n.h2,{id:"step-2-run-the-stack",children:"Step 2: Run the stack"}),"\n",(0,r.jsx)(n.p,{children:"After cloning the repository, navigate to its root directory and run the containers using Docker Compose as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,r.jsx)(n.p,{children:"Once the stack is running, you can access the following services:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Grafana"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:3000",children:"localhost:3000"}),(0,r.jsx)(n.br,{}),"\n","Use ",(0,r.jsx)(n.code,{children:"admin"})," for both the username and password. When asked for a password change, you may skip it. Then, navigate to Dashboards > Nethermind Dashboard."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Prometheus"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9090",children:"localhost:9090"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Pushgateway"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9091",children:"localhost:9091"}),(0,r.jsx)(n.br,{}),"\n","To specify another endpoint for the Pushgateway, use the ",(0,r.jsx)(n.code,{children:"--Metrics.PushGatewayUrl"})," command line option."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"step-3-run-nethermind",children:"Step 3: Run Nethermind"}),"\n",(0,r.jsxs)(n.p,{children:["To enable metrics in Nethermind, use the ",(0,r.jsx)(n.code,{children:"--Metrics.Enabled true"})," command line option. For more options, see the ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["A ",(0,r.jsx)(n.a,{href:"/1.28.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,r.jsx)(n.p,{children:"Run Nethermind as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.Enabled true\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Alternatively, you may add the ",(0,r.jsx)(n.code,{children:"nethermind"})," service to the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," file in the repository root to run everything altogether:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n command: -c mainnet --Metrics.Enabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.p,{children:"In this case, you may want to configure your consensus client similarly."})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(6540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6208],{2046:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>h});var r=t(4848),s=t(8453);const i={title:"Grafana and Prometheus",sidebar_position:0},o=void 0,a={id:"monitoring/metrics/grafana-and-prometheus",title:"Grafana and Prometheus",description:"This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.",source:"@site/versioned_docs/version-1.28.0/monitoring/metrics/grafana-and-prometheus.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/grafana-and-prometheus",permalink:"/1.28.0/monitoring/metrics/grafana-and-prometheus",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/monitoring/metrics/grafana-and-prometheus.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Grafana and Prometheus",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Metrics",permalink:"/1.28.0/monitoring/metrics/"},next:{title:"dotnet-counters",permalink:"/1.28.0/monitoring/metrics/dotnet-counters"}},c={},h=[{value:"Step 1: Set up Grafana and Prometheus",id:"step-1-set-up-grafana-and-prometheus",level:2},{value:"Step 2: Run the stack",id:"step-2-run-the-stack",level:2},{value:"Step 3: Run Nethermind",id:"step-3-run-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["This guide will walk you through setting up a local metrics infrastructure using ",(0,r.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,r.jsx)(n.a,{href:"https://prometheus.io",children:"Prometheus"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"step-1-set-up-grafana-and-prometheus",children:"Step 1: Set up Grafana and Prometheus"}),"\n",(0,r.jsxs)(n.p,{children:["To simplify the process, we will use the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/metrics-infrastructure",children:"metrics-infrastructure"})," repository, which contains the necessary configuration files to run Grafana and Prometheus in a Docker container. However, you can also set up Grafana and Prometheus manually the way it fits your specific needs."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/NethermindEth/metrics-infrastructure.git\n"})}),"\n",(0,r.jsx)(n.h2,{id:"step-2-run-the-stack",children:"Step 2: Run the stack"}),"\n",(0,r.jsx)(n.p,{children:"After cloning the repository, navigate to its root directory and run the containers using Docker Compose as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,r.jsx)(n.p,{children:"Once the stack is running, you can access the following services:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Grafana"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:3000",children:"localhost:3000"}),(0,r.jsx)(n.br,{}),"\n","Use ",(0,r.jsx)(n.code,{children:"admin"})," for both the username and password. When asked for a password change, you may skip it. Then, navigate to Dashboards > Nethermind Dashboard."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Prometheus"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9090",children:"localhost:9090"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Pushgateway"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9091",children:"localhost:9091"}),(0,r.jsx)(n.br,{}),"\n","To specify another endpoint for the Pushgateway, use the ",(0,r.jsx)(n.code,{children:"--Metrics.PushGatewayUrl"})," command line option."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"step-3-run-nethermind",children:"Step 3: Run Nethermind"}),"\n",(0,r.jsxs)(n.p,{children:["To enable metrics in Nethermind, use the ",(0,r.jsx)(n.code,{children:"--Metrics.Enabled true"})," command line option. For more options, see the ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["A ",(0,r.jsx)(n.a,{href:"/1.28.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,r.jsx)(n.p,{children:"Run Nethermind as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.Enabled true\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Alternatively, you may add the ",(0,r.jsx)(n.code,{children:"nethermind"})," service to the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," file in the repository root to run everything altogether:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n command: -c mainnet --Metrics.Enabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.p,{children:"In this case, you may want to configure your consensus client similarly."})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(6540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3b97ff35.a1924159.js b/assets/js/3b97ff35.7a943cd4.js similarity index 98% rename from assets/js/3b97ff35.a1924159.js rename to assets/js/3b97ff35.7a943cd4.js index 75489eaff..cfc6f872b 100644 --- a/assets/js/3b97ff35.a1924159.js +++ b/assets/js/3b97ff35.7a943cd4.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3724],{8291:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>a});var r=i(4848),t=i(8453);const s={title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},d=void 0,o={id:"developers/building-from-source",title:"Building from source",description:"The Nethermind's source code can be obtained from our repository on",source:"@site/versioned_docs/version-1.28.0/developers/building-from-source.md",sourceDirName:"developers",slug:"/developers/building-from-source",permalink:"/1.28.0/developers/building-from-source",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/developers/building-from-source.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Aura-based validators",permalink:"/1.28.0/validators/aura"},next:{title:"Plugins",permalink:"/1.28.0/developers/plugins"}},l={},a=[{value:"Building standalone binaries",id:"building-standalone-binaries",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Building",id:"building",level:3},{value:"Running",id:"running",level:4},{value:"Testing",id:"testing",level:4},{value:"Bulding Docker image",id:"bulding-docker-image",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["The Nethermind's source code can be obtained from ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind",children:"our repository"})," on\nGitHub:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone --recursive https://github.com/nethermindeth/nethermind.git\n"})}),"\n",(0,r.jsx)(n.p,{children:"There are two options buiding Nethermind from source code:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#building-standalone-binaries",children:"Standalone binaries"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#bulding-docker-image",children:"Docker image"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"building-standalone-binaries",children:"Building standalone binaries"}),"\n",(0,r.jsx)(n.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(n.p,{children:["To build Nethermind from source, install ",(0,r.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/download",children:".NET SDK"})," 8 or later."]}),"\n",(0,r.jsx)(n.h3,{id:"building",children:"Building"}),"\n",(0,r.jsx)(n.p,{children:"To build both the client and tests, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"dotnet build src/Nethermind/Nethermind.sln -c release\n"})}),"\n",(0,r.jsx)(n.p,{children:"To simply run the client with a specific configuration without building tests, see below."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Before running the client or tests, ensure the\nplatform-specific ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#prerequisites",children:"prerequisites"})," are met."]})}),"\n",(0,r.jsx)(n.h4,{id:"running",children:"Running"}),"\n",(0,r.jsx)(n.p,{children:"Nethermind can be launched immediately without compiling explicitly (thus, the previous step can be skipped). The following command builds Nethermind if needed and runs it:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind/Nethermind.Runner\ndotnet run -c release -- -c mainnet\n"})}),"\n",(0,r.jsxs)(n.p,{children:["All Nethermind-specific parameters can be specified after ",(0,r.jsx)(n.code,{children:"--"}),". For instance, the command above specifies the Mainnet\nconfiguration only."]}),"\n",(0,r.jsxs)(n.p,{children:["The build artifacts can be found in the ",(0,r.jsx)(n.code,{children:"src/Nethermind/artifacts/bin/Nethermind.Runner/release"})," directory. By default, the logs and database directories are located here as well."]}),"\n",(0,r.jsxs)(n.p,{children:["For more info, see ",(0,r.jsx)(n.a,{href:"/1.28.0/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"testing",children:"Testing"}),"\n",(0,r.jsx)(n.p,{children:"There are two test suites \u2014 Nethermind and Ethereum Foundation. Tests can be run with the following commands (the\ninitial step of the build is not required):"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind\n\n# Run Nethermind tests\ndotnet test Nethermind.sln -c release\n\n# Run Ethereum Foundation tests\ndotnet test EthereumTests.sln -c release\n"})}),"\n",(0,r.jsx)(n.h2,{id:"bulding-docker-image",children:"Bulding Docker image"}),"\n",(0,r.jsx)(n.p,{children:"To build Nethermind Docker image, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker build -t nethermind .\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For more info about running Docker containers,\nsee ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#docker-container",children:"Installing Nethermind"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>o});var r=i(6540);const t={},s=r.createContext(t);function d(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3724],{8291:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>a});var r=i(4848),t=i(8453);const s={title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},d=void 0,o={id:"developers/building-from-source",title:"Building from source",description:"The Nethermind's source code can be obtained from our repository on",source:"@site/versioned_docs/version-1.28.0/developers/building-from-source.md",sourceDirName:"developers",slug:"/developers/building-from-source",permalink:"/1.28.0/developers/building-from-source",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/developers/building-from-source.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Aura-based validators",permalink:"/1.28.0/validators/aura"},next:{title:"Plugins",permalink:"/1.28.0/developers/plugins"}},l={},a=[{value:"Building standalone binaries",id:"building-standalone-binaries",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Building",id:"building",level:3},{value:"Running",id:"running",level:4},{value:"Testing",id:"testing",level:4},{value:"Bulding Docker image",id:"bulding-docker-image",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["The Nethermind's source code can be obtained from ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind",children:"our repository"})," on\nGitHub:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone --recursive https://github.com/nethermindeth/nethermind.git\n"})}),"\n",(0,r.jsx)(n.p,{children:"There are two options buiding Nethermind from source code:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#building-standalone-binaries",children:"Standalone binaries"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#bulding-docker-image",children:"Docker image"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"building-standalone-binaries",children:"Building standalone binaries"}),"\n",(0,r.jsx)(n.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(n.p,{children:["To build Nethermind from source, install ",(0,r.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/download",children:".NET SDK"})," 8 or later."]}),"\n",(0,r.jsx)(n.h3,{id:"building",children:"Building"}),"\n",(0,r.jsx)(n.p,{children:"To build both the client and tests, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"dotnet build src/Nethermind/Nethermind.sln -c release\n"})}),"\n",(0,r.jsx)(n.p,{children:"To simply run the client with a specific configuration without building tests, see below."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Before running the client or tests, ensure the\nplatform-specific ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#prerequisites",children:"prerequisites"})," are met."]})}),"\n",(0,r.jsx)(n.h4,{id:"running",children:"Running"}),"\n",(0,r.jsx)(n.p,{children:"Nethermind can be launched immediately without compiling explicitly (thus, the previous step can be skipped). The following command builds Nethermind if needed and runs it:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind/Nethermind.Runner\ndotnet run -c release -- -c mainnet\n"})}),"\n",(0,r.jsxs)(n.p,{children:["All Nethermind-specific parameters can be specified after ",(0,r.jsx)(n.code,{children:"--"}),". For instance, the command above specifies the Mainnet\nconfiguration only."]}),"\n",(0,r.jsxs)(n.p,{children:["The build artifacts can be found in the ",(0,r.jsx)(n.code,{children:"src/Nethermind/artifacts/bin/Nethermind.Runner/release"})," directory. By default, the logs and database directories are located here as well."]}),"\n",(0,r.jsxs)(n.p,{children:["For more info, see ",(0,r.jsx)(n.a,{href:"/1.28.0/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"testing",children:"Testing"}),"\n",(0,r.jsx)(n.p,{children:"There are two test suites \u2014 Nethermind and Ethereum Foundation. Tests can be run with the following commands (the\ninitial step of the build is not required):"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind\n\n# Run Nethermind tests\ndotnet test Nethermind.sln -c release\n\n# Run Ethereum Foundation tests\ndotnet test EthereumTests.sln -c release\n"})}),"\n",(0,r.jsx)(n.h2,{id:"bulding-docker-image",children:"Bulding Docker image"}),"\n",(0,r.jsx)(n.p,{children:"To build Nethermind Docker image, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker build -t nethermind .\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For more info about running Docker containers,\nsee ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#docker-container",children:"Installing Nethermind"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>o});var r=i(6540);const t={},s=r.createContext(t);function d(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3c359b7d.f5683d6a.js b/assets/js/3c359b7d.47c7d0a4.js similarity index 99% rename from assets/js/3c359b7d.f5683d6a.js rename to assets/js/3c359b7d.47c7d0a4.js index d35d35638..70ac983df 100644 --- a/assets/js/3c359b7d.f5683d6a.js +++ b/assets/js/3c359b7d.47c7d0a4.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[217],{9935:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var i=t(4848),s=t(8453);const r={title:"Running a node",sidebar_position:0},o=void 0,a={id:"get-started/running-node/running-node",title:"Running a node",description:"- Ensure Nethermind is installed according to the installation guide.",source:"@site/docs/get-started/running-node/running-node.md",sourceDirName:"get-started/running-node",slug:"/get-started/running-node/",permalink:"/next/get-started/running-node/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/get-started/running-node/running-node.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Running a node",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Installing Nethermind",permalink:"/next/get-started/installing-nethermind"},next:{title:"Consensus clients",permalink:"/next/get-started/running-node/consensus-clients"}},d={},c=[{value:"Ethereum",id:"ethereum",level:2},{value:"OP Stack",id:"op-stack",level:2},{value:"Gnosis Chain",id:"gnosis-chain",level:2},{value:"Energy Web Chain",id:"energy-web-chain",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{title:"Before you begin",type:"info",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Ensure Nethermind is installed according to the ",(0,i.jsx)(n.a,{href:"/next/get-started/installing-nethermind",children:"installation guide"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["Check out the ",(0,i.jsx)(n.a,{href:"/next/fundamentals/security",children:"security considerations"})," before using Nethermind for critical operations."]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["In addition to the foundational Layer 1 networks, Nethermind supports various Layer 2 networks and sidechains out of the box. Running Nethermind on a supported network is as simple as specifying the respective ",(0,i.jsx)(n.a,{href:"/next/fundamentals/configuration#configuration-file",children:"configuration file"})," with the ",(0,i.jsx)(n.a,{href:"/next/fundamentals/configuration#config",children:(0,i.jsx)(n.code,{children:"-c, --config"})})," option."]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["We urge you to always ",(0,i.jsx)(n.a,{href:"/next/fundamentals/configuration#datadir",children:"explicitly specify"})," Nethermind's data directory outside of the Nethermind installation directory to avoid data loss during upgrades or reinstallation. The data directory must be on a disk with sufficient space and read/write permissions."]})}),"\n",(0,i.jsx)(n.h2,{id:"ethereum",children:"Ethereum"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#ethereum-mainnet",children:"Mainnet"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://github.com/eth-clients/holesky",children:"Holesky"})," (testnet)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://github.com/eth-clients/sepolia",children:"Sepolia"})," (testnet)"]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["We highly recommend checking out the ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/run-a-node/",children:"Spin up your own Ethereum node"})," guide by the Ethereum Foundation."]})}),"\n",(0,i.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,i.jsxs)(n.p,{children:["A ",(0,i.jsx)(n.a,{href:"/next/get-started/running-node/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,i.jsx)(n.p,{children:"For instance, to launch the client with the default configuration for the Mainnet and custom data directory, run:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,i.jsxs)(n.p,{children:["For more info about configuring the JWT secret, see ",(0,i.jsx)(n.a,{href:"/next/get-started/running-node/consensus-clients#configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["For archive (aka full) nodes, Nethermind provides separate configuration files prefixed with ",(0,i.jsx)(n.code,{children:"_archive"}),". Thus, to run Nethermind on the Mainnet as an archive node, simply change ",(0,i.jsx)(n.code,{children:"mainnet"})," to ",(0,i.jsx)(n.code,{children:"mainnet_archive"})," in the above command as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet_archive \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Archive nodes are generally more resource-demanding. If you intend to run one, we recommend checking out the ",(0,i.jsx)(n.a,{href:"/next/get-started/system-requirements#hardware-requirements",children:"hardware requirements"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"op-stack",children:"OP Stack"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Optimism","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.optimism.io/chain/networks#op-mainnet",children:"OP Mainnet"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://docs.optimism.io/chain/networks#op-sepolia",children:"OP Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["Base","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-mainnet",children:"Base Mainnet"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-testnet-sepolia",children:"Base Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To run Nethermind on an OP Stack network, see ",(0,i.jsx)(n.a,{href:"/next/get-started/running-node/l2-networks#op-stack",children:"Layer 2 networks"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"gnosis-chain",children:"Gnosis Chain"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/about/networks/mainnet",children:"Gnosis"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/about/networks/chiado",children:"Chiado"})," (testnet)"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To run Nethermind on the Gnosis Chain, see the ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node",children:"Gnosis Chain documentation"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"energy-web-chain",children:"Energy Web Chain"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain",children:"Energy Web"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/testnet-and-mainnet#developing-on-volta-test-network",children:"Volta"})," (testnet)"]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsx)(n.p,{children:"As the Energy Web Chain is an Aura-based network, running a node does not require a consensus client."})}),"\n",(0,i.jsxs)(n.p,{children:["To run Nethermind on the Energy Web Chain, see the ",(0,i.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/running-a-local-node",children:"Energy Web Chain documentation"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var i=t(6540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[217],{9935:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var i=t(4848),s=t(8453);const r={title:"Running a node",sidebar_position:0},o=void 0,a={id:"get-started/running-node/running-node",title:"Running a node",description:"- Ensure Nethermind is installed according to the installation guide.",source:"@site/docs/get-started/running-node/running-node.md",sourceDirName:"get-started/running-node",slug:"/get-started/running-node/",permalink:"/next/get-started/running-node/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/get-started/running-node/running-node.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Running a node",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Installing Nethermind",permalink:"/next/get-started/installing-nethermind"},next:{title:"Consensus clients",permalink:"/next/get-started/running-node/consensus-clients"}},d={},c=[{value:"Ethereum",id:"ethereum",level:2},{value:"OP Stack",id:"op-stack",level:2},{value:"Gnosis Chain",id:"gnosis-chain",level:2},{value:"Energy Web Chain",id:"energy-web-chain",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{title:"Before you begin",type:"info",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Ensure Nethermind is installed according to the ",(0,i.jsx)(n.a,{href:"/next/get-started/installing-nethermind",children:"installation guide"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["Check out the ",(0,i.jsx)(n.a,{href:"/next/fundamentals/security",children:"security considerations"})," before using Nethermind for critical operations."]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["In addition to the foundational Layer 1 networks, Nethermind supports various Layer 2 networks and sidechains out of the box. Running Nethermind on a supported network is as simple as specifying the respective ",(0,i.jsx)(n.a,{href:"/next/fundamentals/configuration#configuration-file",children:"configuration file"})," with the ",(0,i.jsx)(n.a,{href:"/next/fundamentals/configuration#config",children:(0,i.jsx)(n.code,{children:"-c, --config"})})," option."]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["We urge you to always ",(0,i.jsx)(n.a,{href:"/next/fundamentals/configuration#datadir",children:"explicitly specify"})," Nethermind's data directory outside of the Nethermind installation directory to avoid data loss during upgrades or reinstallation. The data directory must be on a disk with sufficient space and read/write permissions."]})}),"\n",(0,i.jsx)(n.h2,{id:"ethereum",children:"Ethereum"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#ethereum-mainnet",children:"Mainnet"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://github.com/eth-clients/holesky",children:"Holesky"})," (testnet)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://github.com/eth-clients/sepolia",children:"Sepolia"})," (testnet)"]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["We highly recommend checking out the ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/run-a-node/",children:"Spin up your own Ethereum node"})," guide by the Ethereum Foundation."]})}),"\n",(0,i.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,i.jsxs)(n.p,{children:["A ",(0,i.jsx)(n.a,{href:"/next/get-started/running-node/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,i.jsx)(n.p,{children:"For instance, to launch the client with the default configuration for the Mainnet and custom data directory, run:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,i.jsxs)(n.p,{children:["For more info about configuring the JWT secret, see ",(0,i.jsx)(n.a,{href:"/next/get-started/running-node/consensus-clients#configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["For archive (aka full) nodes, Nethermind provides separate configuration files prefixed with ",(0,i.jsx)(n.code,{children:"_archive"}),". Thus, to run Nethermind on the Mainnet as an archive node, simply change ",(0,i.jsx)(n.code,{children:"mainnet"})," to ",(0,i.jsx)(n.code,{children:"mainnet_archive"})," in the above command as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet_archive \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Archive nodes are generally more resource-demanding. If you intend to run one, we recommend checking out the ",(0,i.jsx)(n.a,{href:"/next/get-started/system-requirements#hardware-requirements",children:"hardware requirements"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"op-stack",children:"OP Stack"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Optimism","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.optimism.io/chain/networks#op-mainnet",children:"OP Mainnet"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://docs.optimism.io/chain/networks#op-sepolia",children:"OP Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["Base","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-mainnet",children:"Base Mainnet"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-testnet-sepolia",children:"Base Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To run Nethermind on an OP Stack network, see ",(0,i.jsx)(n.a,{href:"/next/get-started/running-node/l2-networks#op-stack",children:"Layer 2 networks"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"gnosis-chain",children:"Gnosis Chain"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/about/networks/mainnet",children:"Gnosis"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/about/networks/chiado",children:"Chiado"})," (testnet)"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To run Nethermind on the Gnosis Chain, see the ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node",children:"Gnosis Chain documentation"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"energy-web-chain",children:"Energy Web Chain"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Supported networks"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain",children:"Energy Web"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/testnet-and-mainnet#developing-on-volta-test-network",children:"Volta"})," (testnet)"]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsx)(n.p,{children:"As the Energy Web Chain is an Aura-based network, running a node does not require a consensus client."})}),"\n",(0,i.jsxs)(n.p,{children:["To run Nethermind on the Energy Web Chain, see the ",(0,i.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/running-a-local-node",children:"Energy Web Chain documentation"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var i=t(6540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3ce8a8ac.a9d7bdaf.js b/assets/js/3ce8a8ac.ac81e235.js similarity index 99% rename from assets/js/3ce8a8ac.a9d7bdaf.js rename to assets/js/3ce8a8ac.ac81e235.js index 233139752..d6caf39f5 100644 --- a/assets/js/3ce8a8ac.a9d7bdaf.js +++ b/assets/js/3ce8a8ac.ac81e235.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6993],{6599:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var i=s(4848),t=s(8453),r=s(1470),l=s(9365);const d={title:"Sync",sidebar_position:2},o=void 0,a={id:"fundamentals/sync",title:"Sync",description:"This article is outdated and requires a revision.",source:"@site/docs/fundamentals/sync.md",sourceDirName:"fundamentals",slug:"/fundamentals/sync",permalink:"/next/fundamentals/sync",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/sync.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Sync",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/next/fundamentals/configuration"},next:{title:"Security",permalink:"/next/fundamentals/security"}},c={},h=[{value:"There are three main synchronization modes",id:"there-are-three-main-synchronization-modes",level:2},{value:"Snap Sync",id:"snap-sync",level:2},{value:"How to Enable",id:"how-to-enable",level:4},{value:"Snap Sync vs Other Sync Modes",id:"snap-sync-vs-other-sync-modes",level:4},{value:"Current limitations and future development",id:"current-limitations-and-future-development",level:4},{value:"Fast Sync",id:"fast-sync",level:2},{value:"Archive Sync",id:"archive-sync",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Resync a node from scratch",id:"resync-a-node-from-scratch",level:2},{value:"Steps to Resync a Nethermind Node",id:"steps-to-resync-a-nethermind-node",level:3}];function u(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"there-are-three-main-synchronization-modes",children:"There are three main synchronization modes"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["snap sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"the fastest way to sync to the network (syncs to mainnet in ~3 hours)"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["fast sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"slower than snap sync"}),"\n",(0,i.jsx)(n.li,{children:"useful on nethermind-only chains (like Gnosis), where snap sync is not available for now"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["archive sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"heavy historical sync verifying all the transactions and keeping all the historical state"}),"\n",(0,i.jsxs)(n.li,{children:["you can run it like this ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Sync Mode"}),(0,i.jsx)(n.th,{children:"Disk Space needed"}),(0,i.jsx)(n.th,{children:"Full current state"}),(0,i.jsx)(n.th,{children:"Full current and all historical states"}),(0,i.jsx)(n.th,{children:"Can sync a full archive node from this"}),(0,i.jsx)(n.th,{children:"Time to sync"}),(0,i.jsx)(n.th,{children:"Time to RPC"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"archive"}),(0,i.jsx)(n.td,{children:"~12TB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~3 weeks"}),(0,i.jsx)(n.td,{children:"~3 weeks"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync with all bodies and receipts"}),(0,i.jsx)(n.td,{children:"~800GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~20 hours"}),(0,i.jsx)(n.td,{children:"~20 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"default snap/fast sync (with barriers set to support Eth2)"}),(0,i.jsx)(n.td,{children:"~500GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~11 hours"}),(0,i.jsx)(n.td,{children:"~11 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without receipts"}),(0,i.jsx)(n.td,{children:"~450GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~12 hours"}),(0,i.jsx)(n.td,{children:"~12 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without bodies and receipts"}),(0,i.jsx)(n.td,{children:"~200GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~9 hours"}),(0,i.jsx)(n.td,{children:"~9 hours"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"snap-sync",children:"Snap Sync"}),"\n",(0,i.jsx)(n.p,{children:"Snap sync allows a node to perform the initial synchronization and download of Ethereum\u2019s state up to 10 times faster\nthan using fast sync."}),"\n",(0,i.jsx)(n.h4,{id:"how-to-enable",children:"How to Enable"}),"\n",(0,i.jsxs)(n.p,{children:["Snap sync is enabled by default for majority of networks. To make sure, check if",(0,i.jsx)(n.code,{children:"SnapSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"})," in the Sync\nmodule of your ",(0,i.jsx)(n.code,{children:".cfg"})," file"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true\n}\n'})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not enable snap sync on a previously synced node. Only use when syncing to the network for the first\ntime."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not remove other configurations from Sync module. Just add ",(0,i.jsx)(n.code,{children:'"SnapSync": true'}),", e.g."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true,\n\t"PivotNumber": 15011000,\n "PivotHash": "0x46c838d02d5fa5bc070080ed7965da1d888f6eb1797045365407c7011280af56",\n \t"PivotTotalDifficulty": "52367203434576253689712",\n \t"FastBlocks": true\n}\n'})}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"snap-sync-vs-other-sync-modes",children:"Snap Sync vs Other Sync Modes"}),"\n",(0,i.jsx)(n.p,{children:"More than 12TB of storage is needed today to run a full archive node \u2014 one that stores all the state since genesis.\nBecause of that, setting up an archive node can take days or even weeks. Fast Sync can still take more than 24 hours on\nthe fast machine and download about 90GB state data. With Snap Sync, sync time is reduced to 2-3h with a download of\nabout 30GB."}),"\n",(0,i.jsx)(n.p,{children:"This reduction in sync time and download size has to do with the specific way in which Ethereum\u2019s state is stored in a\nnode: Merkle trees."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(5330).A+"",width:"1168",height:"939"})}),"\n",(0,i.jsx)(n.p,{children:"With Fast Sync, a node downloads the headers of each block and retrieves all the nodes beneath it until it reaches the\nleaves. By contrast, Snap Sync only downloads the leaf nodes, generating the remaining nodes locally which saves time\nand packets downloaded."}),"\n",(0,i.jsx)(n.h4,{id:"current-limitations-and-future-development",children:"Current limitations and future development"}),"\n",(0,i.jsx)(n.p,{children:"For now Snap Sync on the Nethermind client can only download the Ethereum state but not serve it to other clients - snap\nserving development is in progress, expected late 2023/early 2024."}),"\n",(0,i.jsx)(n.p,{children:"The only Ethereum client that supports serving Snap Sync requests is Geth, so only networks supported by Geth can be\nsynced using that method: Mainnet, Goerli, Sepolia."}),"\n",(0,i.jsx)(n.h2,{id:"fast-sync",children:"Fast Sync"}),"\n",(0,i.jsxs)(n.p,{children:["After completing the fast sync your node will have the ability to answer questions like ",(0,i.jsxs)(n.em,{children:["'what is my account\nbalance ",(0,i.jsx)(n.strong,{children:"now"}),"'"]}),", ",(0,i.jsxs)(n.em,{children:["'how many XYZ tokens SomeExchange holds ",(0,i.jsx)(n.strong,{children:"at the moment"}),"'"]}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Fast sync has multiple stages. Nethermind uses a ",(0,i.jsx)(n.code,{children:"pivot block"})," number to improve fast sync performance.\nThe ",(0,i.jsx)(n.code,{children:"pivot block"})," data is automatically updated after initialization of the client and consists of\nthe ",(0,i.jsx)(n.code,{children:"block number"}),", ",(0,i.jsx)(n.code,{children:"block hash"})," and ",(0,i.jsx)(n.code,{children:"block total difficulty"})," (please note that ",(0,i.jsx)(n.code,{children:"total difficulty"})," is different\nthan ",(0,i.jsx)(n.code,{children:"difficulty"}),"). Before synchronizing state data Nethermind synchronizes in two directions - backwards\nfrom ",(0,i.jsx)(n.code,{children:"pivot block"})," to 0 for headers and forward to the head of the chain for headers, blocks and receipts. Forward sync\nmight be very slow (5 - 50 bps) so having fresh pivot block is very important - it is guaranteed by recently implemented\nauto-update."]}),"\n",(0,i.jsx)(n.p,{children:"After downloading the block data Nethermind will start state sync (downloading the latest state trie nodes). We are\nproviding an estimate for the download size and progress but the real value may be different than the estimate (\nespecially if you are using an old version of Nethermind as we sometimes manually adjust the estimator based on our\nobservations of the chain growth rate). Because of this sometimes your sync may continue even when it shows ~100%\nfinished. The other important component is the speed of your sync - if your IO / network / file system causes the state\nsync to go much slower than around 1.5MB per second on average then you will start downloading some parts of the trie\nover and over again. In such cases you may be surprised to see something like 58000MB / 53000MB (100%). It means that\nyou downloaded around 5GB of data that is no longer needed. If your sync is very slow (extended beyond two days) then\nvery likely your setup cannot catch up with the chain progress."}),"\n",(0,i.jsxs)(n.p,{children:["After the state sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," messages like in archive sync - it means that your node\nis in sync and is processing the latest blocks."]}),"\n",(0,i.jsx)(n.p,{children:"Mainnet sync, at the time of writing (December 2020), takes around 8 hours on an UpCloud 16GB RAM 8 CPU $40 VM (and then\nsyncs receipts and bodies in the background if you enabled them in the configuration). Goerli sync should take around 40\nminutes."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast sync logs example for mainnet.",src:s(7017).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsxs)(n.p,{children:["State sync log messages have multiple values displayed. First ",(0,i.jsx)(n.code,{children:"dd.HH:mm:ss"})," total state sync time is displayed, followed\nby an estimated sync progress (percentage of total database data synced), then the current download speed is displayed (\nthere will be times when it will slow down to 0 or single digit numbers, especially towards the end of the sync). In\ngeneral 6 hours sync times shown on screenshots are with around 2000 kB/s (kilobytes per second) average sync rate. You\ncan calculate it in the example as ~45GB / (2MB/s) ~ 22500 seconds ~6.25 hours. We also display the number of state\naccounts synced, number of trie nodes synced and a diagnostic message in the format of ",(0,i.jsx)(n.em,{children:"[number_of_pending_requests]\n.[average time spent in response handler displayed as milliseconds]"}),". So ",(0,i.jsx)(n.code,{children:"5.6.20ms"})," means that we are awaiting for\nresponses to 5 requests that have been sent to peers and the average time it takes us to process a single response is\n6.20ms. The response handling times will differ depending on how many trie nodes are already cached (so they will be\nsignificantly slower for a while after the node restart when cache has to be rebuilt) and based on how fast the database\nIO is (SSD vs NVMe vs cloud drives). For a reasonable sync time you probably should expect these values to be below\n15ms (but they may be as high as 700ms for a while after restarting the node)."]}),"\n",(0,i.jsx)(n.p,{children:"A single restart of the node during the fast sync may extend the sync time by up to two hours because the node has to\nrebuild the caches by reading millions of values from the database."}),"\n",(0,i.jsx)(n.p,{children:"At the last stages of the sync the node will be repeatedly displaying the branch sync progress and changing the block\nnumber to which it tries to catch up. This stage should take between 30 minutes and two hours. If it lasts much more\nthen it is possible that you will not be able to catch up with the network progress."}),"\n",(0,i.jsx)(n.p,{children:"One of the best indicators that you are close to be synced is combined ~100% state size progress and nearly 100% branch\nsync progress."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(2725).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(3203).A+"",width:"1895",height:"795"})}),"\n",(0,i.jsx)(n.h2,{id:"archive-sync",children:"Archive Sync"}),"\n",(0,i.jsxs)(n.p,{children:["Archive sync is the 'heaviest' and slowest sync mode but allows to ask questions like ",(0,i.jsx)(n.em,{children:"'what was the balance of my\naccount 2 years ago?'"}),", ",(0,i.jsx)(n.em,{children:"'how many XYZ token were held in SomeExchange custody in 2017?'"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["We have prepared default archive sync configurations and they can be launched from Nethermind Launcher (just choose the\narchive options) or by simply loading appropriate config when launching ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config goerli_archive"})}),"\n",(0,i.jsx)(n.p,{children:"While for some smaller networks archive sync can complete very quickly (in minutes or hours) mainnet sync would take 2 -\n6 weeks depending on the speed of your IO (whether you use SSD or NVMe or depending on the cloud provider IOPS).\nDatabase size in archive sync is the biggest from all modes as you will store all the historical data."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Example of the archive sync logs",src:s(4466).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(9175).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:"Explanation of some data in the logs:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["at the beginning you may see a ",(0,i.jsx)(n.em,{children:"'Waiting for peers...'"})," message while the node is trying to discover nodes that it can\nsync with."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Downloaded 1234/8000000'"})," shows the number of unprocessed blocks (with transactions) downloaded from the network.\nFor ",(0,i.jsx)(n.code,{children:"mainnet"}),"this value may be slower than processing at first but very quickly you will see blocks being downloaded\nmuch faster than processed. Empty blocks can be as small as 512 bytes (just headers without transactions) and full\nblocks with heavy transactions can reach a few hundred kilobytes. We display both current download speed (calculated\nin the last second) and average (total) speed since starting the node."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Processed ...'"})," displays the blocks that have been processed by the EVM. The first number shows the current head\nblock number, then you can see ",(0,i.jsx)(n.code,{children:"mgasps"})," (million gas per second) - current and total, then ",(0,i.jsx)(n.code,{children:"tps"})," (transactions per\nsecond) - current and total, ",(0,i.jsx)(n.code,{children:"bps"})," (blocks per second). Then ",(0,i.jsx)(n.code,{children:"recv queue"})," (transactions signature public key recovery\nqueue), ",(0,i.jsx)(n.code,{children:"proc queue"})," (processor queue). Both recovery queue and processor queue are designed so when too many blocks\nare waiting for processing then only their hashes are kept in memory and remaining data are stored in the database.\nThus, the queues numbers that you can see will be capped by some number."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Cache for epoch...'"})," informs about ",(0,i.jsx)(n.code,{children:"ethash"})," cache needed for block seal verification (only on ",(0,i.jsx)(n.code,{children:"mainnet"}),"\nand ",(0,i.jsx)(n.code,{children:"ropsten"}),"). Caches will be calculated every 30000 blocks (length of an epoch) but can also be calculated for the\nlatest blocks that are being broadcast on the network."]}),"\n",(0,i.jsxs)(n.li,{children:["After the archive sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," message appearing on average every 15 seconds when\nthe new block is processed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mgasps"}),", ",(0,i.jsx)(n.code,{children:"tps"}),", ",(0,i.jsx)(n.code,{children:"bps"})," values should not be treated as comparable as they may differ massively on different parts of\nthe chain. For example when blocks are empty you may see very high ",(0,i.jsx)(n.code,{children:"bps"})," values with very low (or even zero) ",(0,i.jsx)(n.code,{children:"tps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," values as there are no transactions and no gas for EVM processing and blocks are very light. On the other\nhand when blocks are filled with very heavy transactions then ",(0,i.jsx)(n.code,{children:"bps"})," might be very low while ",(0,i.jsx)(n.code,{children:"mgasps"})," will be very\nhigh. It is even possible that you will see a lot of very light transactions where ",(0,i.jsx)(n.code,{children:"tps"})," will be high while ",(0,i.jsx)(n.code,{children:"bps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," will be average."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,i.jsx)(n.p,{children:"Sync time heavily depends on the hardware used for the node, network speed, and peering. We are constantly pursuing to make it as fast as possible. Below is a brief on how the sync time looks on different machines and various chains (tested with Nethermind v1.21.0)."}),"\n",(0,i.jsxs)(r.A,{children:[(0,i.jsxs)(l.A,{value:"highend-vm",label:"High-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Akamai (formerly Linode)"}),"\n",(0,i.jsx)(n.li,{children:"CPU: AMD EPYC 7601, 16 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 64 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1.2 TB, ~40k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 7h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 58m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 2m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 5m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 21m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 22m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 17m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 46m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 31m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 10m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"midend-vm",label:"Mid-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: AWS"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/c7g/",children:"c7g.2xlarge"}),": 8 vCPU, 16 GiB memory"]}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~10k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 12h 37m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 35m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1h 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 43m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 2h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 4h 28m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 10m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 23m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 35m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 17m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 29m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 18h 28m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 52m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 25m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 5m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"oldspec-vm",label:"Old-spec VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Scaleway"}),"\n",(0,i.jsx)(n.li,{children:"CPU: Intel Xeon Processor E5-2620 v2, 2 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 192 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~44k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 1m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 29m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 25m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 3h 39m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 8h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 5h 55m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 34m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 14m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 16m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 2h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 26m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 45m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 56m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 30m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 3h 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 25m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"energyweb",label:"Energy Web",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 7m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 15h 20m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"volta",label:"Volta",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 14h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 42m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 16h 10m"]}),"\n"]})]})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"resync-a-node-from-scratch",children:"Resync a node from scratch"}),"\n",(0,i.jsx)(n.p,{children:"This guide explains how to resync a Nethermind node using the existing Pivot block or updating it to a more recent one."}),"\n",(0,i.jsx)(n.h3,{id:"steps-to-resync-a-nethermind-node",children:"Steps to Resync a Nethermind Node"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Stop the Nethermind node"}),": If your Nethermind node is currently running, stop it to ensure that no new data is\nbeing written to the database during the resync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Delete the existing database"}),": Navigate to the Nethermind data directory. The location of this directory depends\non how Nethermind was installed and your configuration settings. Inside the data directory, find the ",(0,i.jsx)(n.code,{children:"nethermind_db"}),"\nfolder and delete the ",(0,i.jsx)(n.code,{children:"mainnet"})," subfolder to remove the existing database for the mainnet."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the configuration file (optional)"}),": If you want to change any configuration settings before resyncing the\nnode, edit the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file located in the Nethermind directory. For example, you might want to adjust the\npruning settings or specify a different network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the Pivot block (optional)"}),"\\","\n",(0,i.jsx)(n.admonition,{type:"danger",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Only for versions before 1.19.0 where Auto-Pivot approach was introduced"})})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Etherscan"}),": If you want to speed up the syncing process, you can update the Pivot block to a more recent\none. To do this, find the ",(0,i.jsx)(n.code,{children:"Sync"})," section in the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file and update the ",(0,i.jsx)(n.code,{children:"PivotNumber"})," and ",(0,i.jsx)(n.code,{children:"PivotHash"}),'\nfields to match a recent "finalized" block number and its corresponding hash. You can obtain this information from\na block explorer such as ',(0,i.jsx)(n.a,{href:"https://etherscan.io/",children:"Etherscan"}),".",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.br,{}),"\n","Using block number 17165278 from ",(0,i.jsx)(n.a,{href:"https://etherscan.io/block/17165278",children:"Etherscan"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:' { \n \t "PivotNumber": 17165278,\n \t "PivotHash": "0xa665315efd923f3b11215feee09a9d3e13c5e6ee602fa19b642824682ec0a752"\n }\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Nethermind's GitHub"}),": Alternatively, you can update the Pivot block by referring to\nthe ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:"Nethermind's mainnet.cfg file on GitHub"}),".\nThe Pivot block is periodically bumped to the HEAD-8192 block of the mainnet chain. Copy the ",(0,i.jsx)(n.code,{children:"PivotNumber"}),"\nand ",(0,i.jsx)(n.code,{children:"PivotHash"})," values from the GitHub file and update your local ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file accordingly."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Restart the Nethermind node"}),": Start the Nethermind node again to initiate the resync process. The node will begin\nsyncing from the existing Pivot block or the specified updated Pivot block, downloading and processing all the blocks\nin the blockchain."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To ensure that your Nethermind node is resyncing, you can monitor the logs for the node's progress. The logs will\ndisplay information about the block processing, synchronization status and ",(0,i.jsx)(n.code,{children:"OldHeaders"})," being processed. By observing\nthe increasing block numbers and synchronization messages in the logs, you can confirm that the resync process is active\nand working as expected."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Old Headers 0 / 17154000 | queue 0 | current 0.00bps | total 0.00bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 768 / 17154000 | queue 0 | current 766.07bps | total 762.49bps"}),"\n",(0,i.jsx)(n.p,{children:"Beacon Headers from block 17154001 to block 17169722 | 960 / 15722 | queue 4992 | current 0.00bps | total\n40622848.83bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 9024 / 17154000 | queue 0 | current 576.40bps | total 1286.40bps"}),"\n",(0,i.jsxs)(n.p,{children:["Beacon Headers from block 17154001 to block 17169723 | 9024 / 15723 | queue 6698 | current 2694.81bps | total\n3882943.63bps",(0,i.jsx)(n.br,{}),"\n","Downloaded 17154031 / 17172359 | current 0.00bps | total 0.00bps"]}),"\n",(0,i.jsx)(n.p,{children:"Downloaded 17154062 / 17169724 | current 0.00bps | total 2.88bps"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Keep in mind that resyncing a Nethermind node can take a considerable amount of time. It depends on your hardware,\ninternet connection, and the size of the blockchain."})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var i=s(4164);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>w});var i=s(6540),t=s(4164),r=s(3104),l=s(6347),d=s(205),o=s(7485),a=s(1682),c=s(679);function h(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:i,default:t}}=e;return{value:n,label:s,attributes:i,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,o.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=u(e),[l,o]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=s.find((e=>e.default))??s[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[a,h]=j({queryString:s,groupId:t}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,c.Dv)(s);return[t,(0,i.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),g=(()=>{const e=a??m;return x({value:e,tabValues:r})?e:null})();(0,d.A)((()=>{g&&o(g)}),[g]);return{selectedValue:l,selectValue:(0,i.useCallback)((e=>{if(!x({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),h(e),p(e)}),[h,p,r]),tabValues:r}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function b(e){let{className:n,block:s,selectedValue:i,selectValue:l,tabValues:d}=e;const o=[],{blockElementScrollPositionUntilNextRender:a}=(0,r.a_)(),c=e=>{const n=e.currentTarget,s=o.indexOf(n),t=d[s].value;t!==i&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const s=o.indexOf(e.currentTarget)+1;n=o[s]??o[0];break}case"ArrowLeft":{const s=o.indexOf(e.currentTarget)-1;n=o[s]??o[o.length-1];break}}n?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>o.push(e),onKeyDown:h,onClick:c,...r,className:(0,t.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":i===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:r}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=m(e);return(0,y.jsxs)("div",{className:(0,t.A)("tabs-container",g.tabList),children:[(0,y.jsx)(b,{...n,...e}),(0,y.jsx)(f,{...n,...e})]})}function w(e){const n=(0,p.A)();return(0,y.jsx)(v,{...e,children:h(e.children)},String(n))}},5330:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png"},9175:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png"},4466:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png"},7017:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png"},3203:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png"},2725:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png"},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var i=s(6540);const t={},r=i.createContext(t);function l(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6993],{6599:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var i=s(4848),t=s(8453),r=s(1470),l=s(9365);const d={title:"Sync",sidebar_position:2},o=void 0,a={id:"fundamentals/sync",title:"Sync",description:"This article is outdated and requires a revision.",source:"@site/docs/fundamentals/sync.md",sourceDirName:"fundamentals",slug:"/fundamentals/sync",permalink:"/next/fundamentals/sync",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/sync.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Sync",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/next/fundamentals/configuration"},next:{title:"Security",permalink:"/next/fundamentals/security"}},c={},h=[{value:"There are three main synchronization modes",id:"there-are-three-main-synchronization-modes",level:2},{value:"Snap Sync",id:"snap-sync",level:2},{value:"How to Enable",id:"how-to-enable",level:4},{value:"Snap Sync vs Other Sync Modes",id:"snap-sync-vs-other-sync-modes",level:4},{value:"Current limitations and future development",id:"current-limitations-and-future-development",level:4},{value:"Fast Sync",id:"fast-sync",level:2},{value:"Archive Sync",id:"archive-sync",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Resync a node from scratch",id:"resync-a-node-from-scratch",level:2},{value:"Steps to Resync a Nethermind Node",id:"steps-to-resync-a-nethermind-node",level:3}];function u(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"there-are-three-main-synchronization-modes",children:"There are three main synchronization modes"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["snap sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"the fastest way to sync to the network (syncs to mainnet in ~3 hours)"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["fast sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"slower than snap sync"}),"\n",(0,i.jsx)(n.li,{children:"useful on nethermind-only chains (like Gnosis), where snap sync is not available for now"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["archive sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"heavy historical sync verifying all the transactions and keeping all the historical state"}),"\n",(0,i.jsxs)(n.li,{children:["you can run it like this ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Sync Mode"}),(0,i.jsx)(n.th,{children:"Disk Space needed"}),(0,i.jsx)(n.th,{children:"Full current state"}),(0,i.jsx)(n.th,{children:"Full current and all historical states"}),(0,i.jsx)(n.th,{children:"Can sync a full archive node from this"}),(0,i.jsx)(n.th,{children:"Time to sync"}),(0,i.jsx)(n.th,{children:"Time to RPC"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"archive"}),(0,i.jsx)(n.td,{children:"~12TB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~3 weeks"}),(0,i.jsx)(n.td,{children:"~3 weeks"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync with all bodies and receipts"}),(0,i.jsx)(n.td,{children:"~800GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~20 hours"}),(0,i.jsx)(n.td,{children:"~20 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"default snap/fast sync (with barriers set to support Eth2)"}),(0,i.jsx)(n.td,{children:"~500GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~11 hours"}),(0,i.jsx)(n.td,{children:"~11 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without receipts"}),(0,i.jsx)(n.td,{children:"~450GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~12 hours"}),(0,i.jsx)(n.td,{children:"~12 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without bodies and receipts"}),(0,i.jsx)(n.td,{children:"~200GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~9 hours"}),(0,i.jsx)(n.td,{children:"~9 hours"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"snap-sync",children:"Snap Sync"}),"\n",(0,i.jsx)(n.p,{children:"Snap sync allows a node to perform the initial synchronization and download of Ethereum\u2019s state up to 10 times faster\nthan using fast sync."}),"\n",(0,i.jsx)(n.h4,{id:"how-to-enable",children:"How to Enable"}),"\n",(0,i.jsxs)(n.p,{children:["Snap sync is enabled by default for majority of networks. To make sure, check if",(0,i.jsx)(n.code,{children:"SnapSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"})," in the Sync\nmodule of your ",(0,i.jsx)(n.code,{children:".cfg"})," file"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true\n}\n'})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not enable snap sync on a previously synced node. Only use when syncing to the network for the first\ntime."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not remove other configurations from Sync module. Just add ",(0,i.jsx)(n.code,{children:'"SnapSync": true'}),", e.g."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true,\n\t"PivotNumber": 15011000,\n "PivotHash": "0x46c838d02d5fa5bc070080ed7965da1d888f6eb1797045365407c7011280af56",\n \t"PivotTotalDifficulty": "52367203434576253689712",\n \t"FastBlocks": true\n}\n'})}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"snap-sync-vs-other-sync-modes",children:"Snap Sync vs Other Sync Modes"}),"\n",(0,i.jsx)(n.p,{children:"More than 12TB of storage is needed today to run a full archive node \u2014 one that stores all the state since genesis.\nBecause of that, setting up an archive node can take days or even weeks. Fast Sync can still take more than 24 hours on\nthe fast machine and download about 90GB state data. With Snap Sync, sync time is reduced to 2-3h with a download of\nabout 30GB."}),"\n",(0,i.jsx)(n.p,{children:"This reduction in sync time and download size has to do with the specific way in which Ethereum\u2019s state is stored in a\nnode: Merkle trees."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(5330).A+"",width:"1168",height:"939"})}),"\n",(0,i.jsx)(n.p,{children:"With Fast Sync, a node downloads the headers of each block and retrieves all the nodes beneath it until it reaches the\nleaves. By contrast, Snap Sync only downloads the leaf nodes, generating the remaining nodes locally which saves time\nand packets downloaded."}),"\n",(0,i.jsx)(n.h4,{id:"current-limitations-and-future-development",children:"Current limitations and future development"}),"\n",(0,i.jsx)(n.p,{children:"For now Snap Sync on the Nethermind client can only download the Ethereum state but not serve it to other clients - snap\nserving development is in progress, expected late 2023/early 2024."}),"\n",(0,i.jsx)(n.p,{children:"The only Ethereum client that supports serving Snap Sync requests is Geth, so only networks supported by Geth can be\nsynced using that method: Mainnet, Goerli, Sepolia."}),"\n",(0,i.jsx)(n.h2,{id:"fast-sync",children:"Fast Sync"}),"\n",(0,i.jsxs)(n.p,{children:["After completing the fast sync your node will have the ability to answer questions like ",(0,i.jsxs)(n.em,{children:["'what is my account\nbalance ",(0,i.jsx)(n.strong,{children:"now"}),"'"]}),", ",(0,i.jsxs)(n.em,{children:["'how many XYZ tokens SomeExchange holds ",(0,i.jsx)(n.strong,{children:"at the moment"}),"'"]}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Fast sync has multiple stages. Nethermind uses a ",(0,i.jsx)(n.code,{children:"pivot block"})," number to improve fast sync performance.\nThe ",(0,i.jsx)(n.code,{children:"pivot block"})," data is automatically updated after initialization of the client and consists of\nthe ",(0,i.jsx)(n.code,{children:"block number"}),", ",(0,i.jsx)(n.code,{children:"block hash"})," and ",(0,i.jsx)(n.code,{children:"block total difficulty"})," (please note that ",(0,i.jsx)(n.code,{children:"total difficulty"})," is different\nthan ",(0,i.jsx)(n.code,{children:"difficulty"}),"). Before synchronizing state data Nethermind synchronizes in two directions - backwards\nfrom ",(0,i.jsx)(n.code,{children:"pivot block"})," to 0 for headers and forward to the head of the chain for headers, blocks and receipts. Forward sync\nmight be very slow (5 - 50 bps) so having fresh pivot block is very important - it is guaranteed by recently implemented\nauto-update."]}),"\n",(0,i.jsx)(n.p,{children:"After downloading the block data Nethermind will start state sync (downloading the latest state trie nodes). We are\nproviding an estimate for the download size and progress but the real value may be different than the estimate (\nespecially if you are using an old version of Nethermind as we sometimes manually adjust the estimator based on our\nobservations of the chain growth rate). Because of this sometimes your sync may continue even when it shows ~100%\nfinished. The other important component is the speed of your sync - if your IO / network / file system causes the state\nsync to go much slower than around 1.5MB per second on average then you will start downloading some parts of the trie\nover and over again. In such cases you may be surprised to see something like 58000MB / 53000MB (100%). It means that\nyou downloaded around 5GB of data that is no longer needed. If your sync is very slow (extended beyond two days) then\nvery likely your setup cannot catch up with the chain progress."}),"\n",(0,i.jsxs)(n.p,{children:["After the state sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," messages like in archive sync - it means that your node\nis in sync and is processing the latest blocks."]}),"\n",(0,i.jsx)(n.p,{children:"Mainnet sync, at the time of writing (December 2020), takes around 8 hours on an UpCloud 16GB RAM 8 CPU $40 VM (and then\nsyncs receipts and bodies in the background if you enabled them in the configuration). Goerli sync should take around 40\nminutes."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast sync logs example for mainnet.",src:s(7017).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsxs)(n.p,{children:["State sync log messages have multiple values displayed. First ",(0,i.jsx)(n.code,{children:"dd.HH:mm:ss"})," total state sync time is displayed, followed\nby an estimated sync progress (percentage of total database data synced), then the current download speed is displayed (\nthere will be times when it will slow down to 0 or single digit numbers, especially towards the end of the sync). In\ngeneral 6 hours sync times shown on screenshots are with around 2000 kB/s (kilobytes per second) average sync rate. You\ncan calculate it in the example as ~45GB / (2MB/s) ~ 22500 seconds ~6.25 hours. We also display the number of state\naccounts synced, number of trie nodes synced and a diagnostic message in the format of ",(0,i.jsx)(n.em,{children:"[number_of_pending_requests]\n.[average time spent in response handler displayed as milliseconds]"}),". So ",(0,i.jsx)(n.code,{children:"5.6.20ms"})," means that we are awaiting for\nresponses to 5 requests that have been sent to peers and the average time it takes us to process a single response is\n6.20ms. The response handling times will differ depending on how many trie nodes are already cached (so they will be\nsignificantly slower for a while after the node restart when cache has to be rebuilt) and based on how fast the database\nIO is (SSD vs NVMe vs cloud drives). For a reasonable sync time you probably should expect these values to be below\n15ms (but they may be as high as 700ms for a while after restarting the node)."]}),"\n",(0,i.jsx)(n.p,{children:"A single restart of the node during the fast sync may extend the sync time by up to two hours because the node has to\nrebuild the caches by reading millions of values from the database."}),"\n",(0,i.jsx)(n.p,{children:"At the last stages of the sync the node will be repeatedly displaying the branch sync progress and changing the block\nnumber to which it tries to catch up. This stage should take between 30 minutes and two hours. If it lasts much more\nthen it is possible that you will not be able to catch up with the network progress."}),"\n",(0,i.jsx)(n.p,{children:"One of the best indicators that you are close to be synced is combined ~100% state size progress and nearly 100% branch\nsync progress."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(2725).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(3203).A+"",width:"1895",height:"795"})}),"\n",(0,i.jsx)(n.h2,{id:"archive-sync",children:"Archive Sync"}),"\n",(0,i.jsxs)(n.p,{children:["Archive sync is the 'heaviest' and slowest sync mode but allows to ask questions like ",(0,i.jsx)(n.em,{children:"'what was the balance of my\naccount 2 years ago?'"}),", ",(0,i.jsx)(n.em,{children:"'how many XYZ token were held in SomeExchange custody in 2017?'"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["We have prepared default archive sync configurations and they can be launched from Nethermind Launcher (just choose the\narchive options) or by simply loading appropriate config when launching ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config goerli_archive"})}),"\n",(0,i.jsx)(n.p,{children:"While for some smaller networks archive sync can complete very quickly (in minutes or hours) mainnet sync would take 2 -\n6 weeks depending on the speed of your IO (whether you use SSD or NVMe or depending on the cloud provider IOPS).\nDatabase size in archive sync is the biggest from all modes as you will store all the historical data."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Example of the archive sync logs",src:s(4466).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(9175).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:"Explanation of some data in the logs:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["at the beginning you may see a ",(0,i.jsx)(n.em,{children:"'Waiting for peers...'"})," message while the node is trying to discover nodes that it can\nsync with."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Downloaded 1234/8000000'"})," shows the number of unprocessed blocks (with transactions) downloaded from the network.\nFor ",(0,i.jsx)(n.code,{children:"mainnet"}),"this value may be slower than processing at first but very quickly you will see blocks being downloaded\nmuch faster than processed. Empty blocks can be as small as 512 bytes (just headers without transactions) and full\nblocks with heavy transactions can reach a few hundred kilobytes. We display both current download speed (calculated\nin the last second) and average (total) speed since starting the node."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Processed ...'"})," displays the blocks that have been processed by the EVM. The first number shows the current head\nblock number, then you can see ",(0,i.jsx)(n.code,{children:"mgasps"})," (million gas per second) - current and total, then ",(0,i.jsx)(n.code,{children:"tps"})," (transactions per\nsecond) - current and total, ",(0,i.jsx)(n.code,{children:"bps"})," (blocks per second). Then ",(0,i.jsx)(n.code,{children:"recv queue"})," (transactions signature public key recovery\nqueue), ",(0,i.jsx)(n.code,{children:"proc queue"})," (processor queue). Both recovery queue and processor queue are designed so when too many blocks\nare waiting for processing then only their hashes are kept in memory and remaining data are stored in the database.\nThus, the queues numbers that you can see will be capped by some number."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Cache for epoch...'"})," informs about ",(0,i.jsx)(n.code,{children:"ethash"})," cache needed for block seal verification (only on ",(0,i.jsx)(n.code,{children:"mainnet"}),"\nand ",(0,i.jsx)(n.code,{children:"ropsten"}),"). Caches will be calculated every 30000 blocks (length of an epoch) but can also be calculated for the\nlatest blocks that are being broadcast on the network."]}),"\n",(0,i.jsxs)(n.li,{children:["After the archive sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," message appearing on average every 15 seconds when\nthe new block is processed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mgasps"}),", ",(0,i.jsx)(n.code,{children:"tps"}),", ",(0,i.jsx)(n.code,{children:"bps"})," values should not be treated as comparable as they may differ massively on different parts of\nthe chain. For example when blocks are empty you may see very high ",(0,i.jsx)(n.code,{children:"bps"})," values with very low (or even zero) ",(0,i.jsx)(n.code,{children:"tps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," values as there are no transactions and no gas for EVM processing and blocks are very light. On the other\nhand when blocks are filled with very heavy transactions then ",(0,i.jsx)(n.code,{children:"bps"})," might be very low while ",(0,i.jsx)(n.code,{children:"mgasps"})," will be very\nhigh. It is even possible that you will see a lot of very light transactions where ",(0,i.jsx)(n.code,{children:"tps"})," will be high while ",(0,i.jsx)(n.code,{children:"bps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," will be average."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,i.jsx)(n.p,{children:"Sync time heavily depends on the hardware used for the node, network speed, and peering. We are constantly pursuing to make it as fast as possible. Below is a brief on how the sync time looks on different machines and various chains (tested with Nethermind v1.21.0)."}),"\n",(0,i.jsxs)(r.A,{children:[(0,i.jsxs)(l.A,{value:"highend-vm",label:"High-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Akamai (formerly Linode)"}),"\n",(0,i.jsx)(n.li,{children:"CPU: AMD EPYC 7601, 16 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 64 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1.2 TB, ~40k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 7h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 58m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 2m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 5m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 21m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 22m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 17m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 46m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 31m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 10m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"midend-vm",label:"Mid-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: AWS"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/c7g/",children:"c7g.2xlarge"}),": 8 vCPU, 16 GiB memory"]}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~10k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 12h 37m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 35m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1h 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 43m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 2h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 4h 28m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 10m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 23m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 35m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 17m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 29m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 18h 28m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 52m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 25m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 5m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"oldspec-vm",label:"Old-spec VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Scaleway"}),"\n",(0,i.jsx)(n.li,{children:"CPU: Intel Xeon Processor E5-2620 v2, 2 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 192 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~44k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 1m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 29m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 25m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 3h 39m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 8h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 5h 55m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 34m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 14m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 16m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 2h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 26m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 45m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 56m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 30m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 3h 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 25m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"energyweb",label:"Energy Web",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 7m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 15h 20m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"volta",label:"Volta",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 14h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 42m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 16h 10m"]}),"\n"]})]})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"resync-a-node-from-scratch",children:"Resync a node from scratch"}),"\n",(0,i.jsx)(n.p,{children:"This guide explains how to resync a Nethermind node using the existing Pivot block or updating it to a more recent one."}),"\n",(0,i.jsx)(n.h3,{id:"steps-to-resync-a-nethermind-node",children:"Steps to Resync a Nethermind Node"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Stop the Nethermind node"}),": If your Nethermind node is currently running, stop it to ensure that no new data is\nbeing written to the database during the resync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Delete the existing database"}),": Navigate to the Nethermind data directory. The location of this directory depends\non how Nethermind was installed and your configuration settings. Inside the data directory, find the ",(0,i.jsx)(n.code,{children:"nethermind_db"}),"\nfolder and delete the ",(0,i.jsx)(n.code,{children:"mainnet"})," subfolder to remove the existing database for the mainnet."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the configuration file (optional)"}),": If you want to change any configuration settings before resyncing the\nnode, edit the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file located in the Nethermind directory. For example, you might want to adjust the\npruning settings or specify a different network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the Pivot block (optional)"}),"\\","\n",(0,i.jsx)(n.admonition,{type:"danger",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Only for versions before 1.19.0 where Auto-Pivot approach was introduced"})})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Etherscan"}),": If you want to speed up the syncing process, you can update the Pivot block to a more recent\none. To do this, find the ",(0,i.jsx)(n.code,{children:"Sync"})," section in the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file and update the ",(0,i.jsx)(n.code,{children:"PivotNumber"})," and ",(0,i.jsx)(n.code,{children:"PivotHash"}),'\nfields to match a recent "finalized" block number and its corresponding hash. You can obtain this information from\na block explorer such as ',(0,i.jsx)(n.a,{href:"https://etherscan.io/",children:"Etherscan"}),".",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.br,{}),"\n","Using block number 17165278 from ",(0,i.jsx)(n.a,{href:"https://etherscan.io/block/17165278",children:"Etherscan"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:' { \n \t "PivotNumber": 17165278,\n \t "PivotHash": "0xa665315efd923f3b11215feee09a9d3e13c5e6ee602fa19b642824682ec0a752"\n }\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Nethermind's GitHub"}),": Alternatively, you can update the Pivot block by referring to\nthe ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:"Nethermind's mainnet.cfg file on GitHub"}),".\nThe Pivot block is periodically bumped to the HEAD-8192 block of the mainnet chain. Copy the ",(0,i.jsx)(n.code,{children:"PivotNumber"}),"\nand ",(0,i.jsx)(n.code,{children:"PivotHash"})," values from the GitHub file and update your local ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file accordingly."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Restart the Nethermind node"}),": Start the Nethermind node again to initiate the resync process. The node will begin\nsyncing from the existing Pivot block or the specified updated Pivot block, downloading and processing all the blocks\nin the blockchain."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To ensure that your Nethermind node is resyncing, you can monitor the logs for the node's progress. The logs will\ndisplay information about the block processing, synchronization status and ",(0,i.jsx)(n.code,{children:"OldHeaders"})," being processed. By observing\nthe increasing block numbers and synchronization messages in the logs, you can confirm that the resync process is active\nand working as expected."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Old Headers 0 / 17154000 | queue 0 | current 0.00bps | total 0.00bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 768 / 17154000 | queue 0 | current 766.07bps | total 762.49bps"}),"\n",(0,i.jsx)(n.p,{children:"Beacon Headers from block 17154001 to block 17169722 | 960 / 15722 | queue 4992 | current 0.00bps | total\n40622848.83bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 9024 / 17154000 | queue 0 | current 576.40bps | total 1286.40bps"}),"\n",(0,i.jsxs)(n.p,{children:["Beacon Headers from block 17154001 to block 17169723 | 9024 / 15723 | queue 6698 | current 2694.81bps | total\n3882943.63bps",(0,i.jsx)(n.br,{}),"\n","Downloaded 17154031 / 17172359 | current 0.00bps | total 0.00bps"]}),"\n",(0,i.jsx)(n.p,{children:"Downloaded 17154062 / 17169724 | current 0.00bps | total 2.88bps"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Keep in mind that resyncing a Nethermind node can take a considerable amount of time. It depends on your hardware,\ninternet connection, and the size of the blockchain."})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var i=s(4164);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>w});var i=s(6540),t=s(4164),r=s(3104),l=s(6347),d=s(205),o=s(7485),a=s(1682),c=s(679);function h(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:i,default:t}}=e;return{value:n,label:s,attributes:i,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,o.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=u(e),[l,o]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=s.find((e=>e.default))??s[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[a,h]=j({queryString:s,groupId:t}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,c.Dv)(s);return[t,(0,i.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),g=(()=>{const e=a??m;return x({value:e,tabValues:r})?e:null})();(0,d.A)((()=>{g&&o(g)}),[g]);return{selectedValue:l,selectValue:(0,i.useCallback)((e=>{if(!x({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),h(e),p(e)}),[h,p,r]),tabValues:r}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function b(e){let{className:n,block:s,selectedValue:i,selectValue:l,tabValues:d}=e;const o=[],{blockElementScrollPositionUntilNextRender:a}=(0,r.a_)(),c=e=>{const n=e.currentTarget,s=o.indexOf(n),t=d[s].value;t!==i&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const s=o.indexOf(e.currentTarget)+1;n=o[s]??o[0];break}case"ArrowLeft":{const s=o.indexOf(e.currentTarget)-1;n=o[s]??o[o.length-1];break}}n?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>o.push(e),onKeyDown:h,onClick:c,...r,className:(0,t.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":i===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:r}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=m(e);return(0,y.jsxs)("div",{className:(0,t.A)("tabs-container",g.tabList),children:[(0,y.jsx)(b,{...n,...e}),(0,y.jsx)(f,{...n,...e})]})}function w(e){const n=(0,p.A)();return(0,y.jsx)(v,{...e,children:h(e.children)},String(n))}},5330:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png"},9175:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png"},4466:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png"},7017:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png"},3203:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png"},2725:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png"},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var i=s(6540);const t={},r=i.createContext(t);function l(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3e84b625.7c47bee7.js b/assets/js/3e84b625.98172fca.js similarity index 99% rename from assets/js/3e84b625.7c47bee7.js rename to assets/js/3e84b625.98172fca.js index 952670511..ecbb0ab1b 100644 --- a/assets/js/3e84b625.7c47bee7.js +++ b/assets/js/3e84b625.98172fca.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9888],{4641:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const s={title:"Pruning",sidebar_position:6},o=void 0,a={id:"fundamentals/pruning",title:"Pruning",description:"Overview",source:"@site/docs/fundamentals/pruning.md",sourceDirName:"fundamentals",slug:"/fundamentals/pruning",permalink:"/next/fundamentals/pruning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/pruning.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:6,frontMatter:{title:"Pruning",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Database",permalink:"/next/fundamentals/database"},next:{title:"Performance tuning",permalink:"/next/fundamentals/performance-tuning"}},l={},d=[{value:"Overview",id:"overview",level:2},{value:"How it works",id:"how-it-works",level:2},{value:"Preparation for full pruning",id:"preparation-for-full-pruning",level:2},{value:"Configuring full pruning",id:"configuring-full-pruning",level:2},{value:"Manual",id:"manual",level:3},{value:"State database size threshold",id:"state-db-threshold",level:3},{value:"Remaining storage space threshold",id:"storage-left-threshold",level:3},{value:"Monitoring progress",id:"monitoring-progress",level:2},{value:"Additional settings",id:"additional-settings",level:2},{value:"Memory budget",id:"memory-budget",level:3},{value:"Pruning completion behavior",id:"pruning-completion-behavior",level:3},{value:"Number of pruning concurrent tasks",id:"number-of-pruning-concurrent-tasks",level:3},{value:"In-memory cache size",id:"in-memory-cache-size",level:3},{value:"Side notes",id:"side-notes",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsx)(n.p,{children:"Pruning pertains to eliminating or cleaning obsolete historical data to optimize disk space. Clients are responsible for maintaining the world state, which comprises a database that portrays the current Ethereum network status. The world state encompasses accounts, contracts, and other information."}),"\n",(0,r.jsxs)(n.p,{children:["Pruning aims to reduce disk requirements by storing only the current world state and removing historical data. This differs from archive nodes that retain complete transaction and state history. Pruning is helpful for users who don't require historical data and prefer to interact solely with the current state of the network. However, pruning may limit the client's ability to fulfill requests that depend on historical information. Nethermind provides two kinds of pruning \u2013 ",(0,r.jsx)(n.em,{children:"full pruning"})," and ",(0,r.jsx)(n.em,{children:"in-memory pruning"}),"; both are enabled by default, also called ",(0,r.jsx)(n.em,{children:"hybrid pruning"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,r.jsxs)(n.p,{children:["During synchronization using the snap sync method, Nethermind produces a local copy of the Ethereum network state. Although this size increases by around 30 GB each week, specific historical data is retained that is not necessary for node operation or to maintain the current Ethereum state. For a detailed description of the disk usage usage, check out the ",(0,r.jsx)(n.a,{href:"/next/fundamentals/database#database-size",children:"database size"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is activated and initiated, a thorough examination of the entire state tree is conducted to determine which data is no longer required and can be treated as historical. It then determines which information corresponds to the current state and duplicates it alongside the existing version. During verification of each node in the state, the new pruned state replaces the previous one. Once the verifier confirms everything is functioning correctly, the old state database is eliminated, resulting in significant savings in disk space. As a result, the size of the database will be close to its initial size again."}),"\n",(0,r.jsx)(n.p,{children:"In-memory pruning is a continuous process that occurs under regular operation. Instead of saving a new state on each block, Nethermind will keep it in memory until a certain threshold is reached. At that point, Nethermind will only store data required by the newer state and discard unnecessary ones. This significantly reduces the total amount of data written while improving block processing performance. In-memory pruning is independent of full pruning."}),"\n",(0,r.jsx)(n.h2,{id:"preparation-for-full-pruning",children:"Preparation for full pruning"}),"\n",(0,r.jsx)(n.p,{children:"Because full pruning is executed while the node is connected to the network, it can affect the node's performance.\nThe process can consume significant memory, CPU, and disk resources, impacting block processing time.\nThis, in turn, can lead to reduced rewards for validator setups, particularly for proof-of-stake chains."}),"\n",(0,r.jsx)(n.p,{children:"Currently, full pruning takes between 20 to 30 hours to complete, although the duration may vary based on the hardware configuration. At least 200 GB of storage is required to ensure pruning runs smoothly. Nevertheless, it's recommended to have 300 GB or more."}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["Do not turn on full pruning on an archive node, as these are two opposing features. Archive nodes are designed to store\ncomplete historical data, whereas full pruning eliminates it. Use the option ",(0,r.jsx)(n.code,{children:"--Pruning.Mode None"})," to ensure that pruning is turned off completely."]})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-full-pruning",children:"Configuring full pruning"}),"\n",(0,r.jsxs)(n.p,{children:["As a very first point, check out the ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#pruning",children:"pruning configuration options"}),".",(0,r.jsx)(n.br,{}),"\n","To activate full pruning, use either the ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," or ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Full"})," command line options."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Setting ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," enables both ",(0,r.jsx)(n.code,{children:"InMemory"})," and ",(0,r.jsx)(n.code,{children:"Full"})," modes. The ",(0,r.jsx)(n.code,{children:"InMemory"})," mode helps the node storage grow slower than the ",(0,r.jsx)(n.code,{children:"Full"})," mode. Because of this, full pruning is executed less frequently, promoting\nhealthier disk operation. Since full pruning is hardware-intensive, this configuration also benefits attestation results."]})}),"\n",(0,r.jsx)(n.p,{children:"The next step is to determine the trigger conditions for full pruning. Currently, there are 3 options available:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#manual",children:"Manual"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#state-db-threshold",children:"State database size threshold"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#storage-left-threshold",children:"Remaining storage space threshold"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"manual",children:"Manual"}),"\n",(0,r.jsxs)(n.p,{children:["Manual mode triggers full pruning only upon request, providing complete control. To configure this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger Manual"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Pruning can also be triggered using the ",(0,r.jsx)(n.a,{href:"/next/interacting/json-rpc-ns/admin#admin_prune",children:(0,r.jsx)(n.code,{children:"admin_prune"})})," JSON-RPC method. Here's how to configure it:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Add the ",(0,r.jsx)(n.code,{children:"admin"})," namespace to ",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"}),". For instance,",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules [eth,net,...,admin]"})]}),"\n",(0,r.jsxs)(n.li,{children:["Create a separate port for ",(0,r.jsx)(n.code,{children:"admin"})," namespace only:",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls http://localhost:8555|http|admin"})]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Restart the client, and if everything is configured correctly, you should be able to call the ",(0,r.jsx)(n.code,{children:"admin_prune"})," method, and full pruning should start."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"One potential disadvantage of the manual mode is that if full pruning is not triggered on time, it cannot be performed later because of insufficient disk space. In such cases, the only option to free up the disk space is to resync the node from scratch."})}),"\n",(0,r.jsx)(n.h3,{id:"state-db-threshold",children:"State database size threshold"}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning automatically when the state database reaches the specified size.\nTo enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger StateDbSize --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning automatically whenever the state database size exceeds 256,000\nMB (250 GB). Assuming the state database has initially around 160 GB, pruning will be triggered when the database size grows by more than 90 GB."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"To avoid unexpected behavior and ensure that full pruning can be completed in full, it's recommended to set the threshold value to trigger pruning before the free disk space drops below 250 GB as a minimum. This ensures that sufficient free disk space is available for the pruning process."})}),"\n",(0,r.jsx)(n.h3,{id:"storage-left-threshold",children:"Remaining storage space threshold"}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsx)(n.p,{children:"This is the recommended approach as it ensures that pruning is executed on time."})}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning when the storage space reaches the specified minimum. To enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger VolumeFreeSpace --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements. However, it should not be set below the default value of ",(0,r.jsx)(n.code,{children:"256000"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning whenever free disk space drops to 256,000 MB (250 GB) or below. This ensures that pruning is invoked as infrequently as possible while also ensuring that sufficient free storage is always available to trigger it."}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsx)(n.p,{children:"It's recommended not to set the value below 250 GB for stability reasons. In reality, full pruning should require approximately the same amount of storage as a fresh state database (around 160 GB). Still, it also needs a threshold for processing and other operations since it creates a copy of the existing state database. Therefore, it's essential to maintain a minimum amount of storage to ensure a robust pruning performance."})}),"\n",(0,r.jsx)(n.h2,{id:"monitoring-progress",children:"Monitoring progress"}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is triggered correctly, the corresponding messages appear in the Nethermind logs."}),"\n",(0,r.jsx)(n.p,{children:"The very first ones should be:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Ready to start: pruning garbage before state with root .\nWARN: Full Pruning Started on root hash : do not close the node until finished or progress will be lost.\n"})}),"\n",(0,r.jsx)(n.p,{children:"From that moment, ensure that no restarts will be performed on Nethermind to ensure that full pruning runs correctly.\nAfter a few minutes first logs with progress would start to appear. For instance:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning In Progress: 00:00:57.0603307 1.00 mln nodes mirrored.\nFull Pruning In Progress: 00:01:40.3677103 2.00 mln nodes mirrored.\nFull Pruning In Progress: 00:02:25.6437030 3.00 mln nodes mirrored.\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Pruning may take even ",(0,r.jsx)(n.em,{children:"more than 30 hours"}),", depending on hardware configuration."]}),"\n",(0,r.jsx)(n.p,{children:"When pruning is completed, there is a log message similar the following:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Finished: 15:25:59.1620756 1,560.29 mln nodes mirrored.\n"})}),"\n",(0,r.jsx)(n.p,{children:"As you may notice, it took around 15 hours in this example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Since the amount of mirrored nodes is not a static value, providing a simple progress indicator in percentage is impossible. Therefore, the approximate value given should be used to determine when full pruning is expected to be completed."})}),"\n",(0,r.jsx)(n.h2,{id:"additional-settings",children:"Additional settings"}),"\n",(0,r.jsx)(n.h3,{id:"memory-budget",children:"Memory budget"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," configuration option controls the memory budget allocated for the trie visit during\nthe full pruning process. During pruning, pending nodes are queued to a pool of nodes whose size is determined by this value. This allows multiple nodes to share a single I/O. By increasing this value, the required read IOP per second can be significantly reduced, resulting in a faster full pruning operation. However, this improvement comes at the expense of increased memory usage."]}),"\n",(0,r.jsxs)(n.p,{children:["Assuming your system has 64GB of RAM, with Nethermind, the consensus client, and system expenses consuming 20GB,\nyou need to determine the maximum value for ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," while ensuring the system remains stable and respects the given limit. In this case, you have 44 GB (64 GB - 20 GB) of available memory for increasing the ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," value. To calculate the maximum value in MB, multiply the available memory by 1024: ",(0,r.jsx)(n.code,{children:"44 GB * 1024 = 45,056 MB"})]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Because of the workload on Ethereum Mainnet, setting the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," higher than 16 GB may not provide any additional performance benefits."]})}),"\n",(0,r.jsx)(n.p,{children:"Please note that this example assumes the remaining 44 GB of memory is sufficient for the full pruning memory budget.\nDepending on the specific use case and system requirements, it may be necessary to adjust the value further to optimize performance and resource usage."}),"\n",(0,r.jsx)(n.h3,{id:"pruning-completion-behavior",children:"Pruning completion behavior"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})," configuration option determines Nethermind's behavior after full pruning is completed. By default, Nethermind will continue to progress as usual. However, if a user wishes to shut down the node after pruning, there are three options available:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"None"}),": No action taken"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Nethermind shuts down if pruning succeeds"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"AlwaysShutdown"}),": Nethermind shuts down once pruning completes, regardless of whether it succeeds or fails"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"number-of-pruning-concurrent-tasks",children:"Number of pruning concurrent tasks"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})," configuration option determines the number of parallel tasks/threads that can be used by pruning:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"-1"}),": uses the number of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"0"}),": uses 25% of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"1"}),": runs on a single thread"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The recommended value depends on the type of node being used. If the node needs to be responsive (e.g., RPC or validator), using a value below the number of logical processors is recommended. The default value is recommended if the node doesn't have many other responsibilities but needs to follow the chain without delays and produce live logs reliably. If the node doesn't need to be responsive, has very fast I/O (such as NVMe), and the shortest pruning time\nis desired, this can be set to 2\u20133 times the number of logical processors."}),"\n",(0,r.jsx)(n.h3,{id:"in-memory-cache-size",children:"In-memory cache size"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.CacheMb"})," configuration option determines the size, in MB, of the memory pool of nodes used for in-memory pruning. The default value is 1024. Increasing this value can help reduce the rate at which the state database grows."]}),"\n",(0,r.jsx)(n.h2,{id:"side-notes",children:"Side notes"}),"\n",(0,r.jsx)(n.p,{children:"For pruning, keep in mind the following:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Full pruning is a cumbersome task, but it's performed in the background, so the node continues progressing and following the chain."}),"\n",(0,r.jsx)(n.li,{children:"The process' heaviness may affect the effectiveness of the validator rewards. Still, since it's executed only once every few months, it shouldn't have a significant impact on overall results (we've xperienced approximately 5\u201310% loss of rewards during full pruning)."}),"\n",(0,r.jsx)(n.li,{children:"Ensure that your storage has at least 250 GB of free space after syncing the node. Otherwise, full pruning will never complete successfully."}),"\n",(0,r.jsxs)(n.li,{children:["Several things can be done to reduce the size of the database after syncing: setting ",(0,r.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})," and ",(0,r.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})," to a proper value higher than 0, using a consensus client that requires less storage, and setting logs to the lowest level to avoid log spamming."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>a});var r=i(6540);const t={},s=r.createContext(t);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9888],{4641:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const s={title:"Pruning",sidebar_position:6},o=void 0,a={id:"fundamentals/pruning",title:"Pruning",description:"Overview",source:"@site/docs/fundamentals/pruning.md",sourceDirName:"fundamentals",slug:"/fundamentals/pruning",permalink:"/next/fundamentals/pruning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/pruning.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:6,frontMatter:{title:"Pruning",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Database",permalink:"/next/fundamentals/database"},next:{title:"Performance tuning",permalink:"/next/fundamentals/performance-tuning"}},l={},d=[{value:"Overview",id:"overview",level:2},{value:"How it works",id:"how-it-works",level:2},{value:"Preparation for full pruning",id:"preparation-for-full-pruning",level:2},{value:"Configuring full pruning",id:"configuring-full-pruning",level:2},{value:"Manual",id:"manual",level:3},{value:"State database size threshold",id:"state-db-threshold",level:3},{value:"Remaining storage space threshold",id:"storage-left-threshold",level:3},{value:"Monitoring progress",id:"monitoring-progress",level:2},{value:"Additional settings",id:"additional-settings",level:2},{value:"Memory budget",id:"memory-budget",level:3},{value:"Pruning completion behavior",id:"pruning-completion-behavior",level:3},{value:"Number of pruning concurrent tasks",id:"number-of-pruning-concurrent-tasks",level:3},{value:"In-memory cache size",id:"in-memory-cache-size",level:3},{value:"Side notes",id:"side-notes",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsx)(n.p,{children:"Pruning pertains to eliminating or cleaning obsolete historical data to optimize disk space. Clients are responsible for maintaining the world state, which comprises a database that portrays the current Ethereum network status. The world state encompasses accounts, contracts, and other information."}),"\n",(0,r.jsxs)(n.p,{children:["Pruning aims to reduce disk requirements by storing only the current world state and removing historical data. This differs from archive nodes that retain complete transaction and state history. Pruning is helpful for users who don't require historical data and prefer to interact solely with the current state of the network. However, pruning may limit the client's ability to fulfill requests that depend on historical information. Nethermind provides two kinds of pruning \u2013 ",(0,r.jsx)(n.em,{children:"full pruning"})," and ",(0,r.jsx)(n.em,{children:"in-memory pruning"}),"; both are enabled by default, also called ",(0,r.jsx)(n.em,{children:"hybrid pruning"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,r.jsxs)(n.p,{children:["During synchronization using the snap sync method, Nethermind produces a local copy of the Ethereum network state. Although this size increases by around 30 GB each week, specific historical data is retained that is not necessary for node operation or to maintain the current Ethereum state. For a detailed description of the disk usage usage, check out the ",(0,r.jsx)(n.a,{href:"/next/fundamentals/database#database-size",children:"database size"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is activated and initiated, a thorough examination of the entire state tree is conducted to determine which data is no longer required and can be treated as historical. It then determines which information corresponds to the current state and duplicates it alongside the existing version. During verification of each node in the state, the new pruned state replaces the previous one. Once the verifier confirms everything is functioning correctly, the old state database is eliminated, resulting in significant savings in disk space. As a result, the size of the database will be close to its initial size again."}),"\n",(0,r.jsx)(n.p,{children:"In-memory pruning is a continuous process that occurs under regular operation. Instead of saving a new state on each block, Nethermind will keep it in memory until a certain threshold is reached. At that point, Nethermind will only store data required by the newer state and discard unnecessary ones. This significantly reduces the total amount of data written while improving block processing performance. In-memory pruning is independent of full pruning."}),"\n",(0,r.jsx)(n.h2,{id:"preparation-for-full-pruning",children:"Preparation for full pruning"}),"\n",(0,r.jsx)(n.p,{children:"Because full pruning is executed while the node is connected to the network, it can affect the node's performance.\nThe process can consume significant memory, CPU, and disk resources, impacting block processing time.\nThis, in turn, can lead to reduced rewards for validator setups, particularly for proof-of-stake chains."}),"\n",(0,r.jsx)(n.p,{children:"Currently, full pruning takes between 20 to 30 hours to complete, although the duration may vary based on the hardware configuration. At least 200 GB of storage is required to ensure pruning runs smoothly. Nevertheless, it's recommended to have 300 GB or more."}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["Do not turn on full pruning on an archive node, as these are two opposing features. Archive nodes are designed to store\ncomplete historical data, whereas full pruning eliminates it. Use the option ",(0,r.jsx)(n.code,{children:"--Pruning.Mode None"})," to ensure that pruning is turned off completely."]})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-full-pruning",children:"Configuring full pruning"}),"\n",(0,r.jsxs)(n.p,{children:["As a very first point, check out the ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#pruning",children:"pruning configuration options"}),".",(0,r.jsx)(n.br,{}),"\n","To activate full pruning, use either the ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," or ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Full"})," command line options."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Setting ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," enables both ",(0,r.jsx)(n.code,{children:"InMemory"})," and ",(0,r.jsx)(n.code,{children:"Full"})," modes. The ",(0,r.jsx)(n.code,{children:"InMemory"})," mode helps the node storage grow slower than the ",(0,r.jsx)(n.code,{children:"Full"})," mode. Because of this, full pruning is executed less frequently, promoting\nhealthier disk operation. Since full pruning is hardware-intensive, this configuration also benefits attestation results."]})}),"\n",(0,r.jsx)(n.p,{children:"The next step is to determine the trigger conditions for full pruning. Currently, there are 3 options available:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#manual",children:"Manual"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#state-db-threshold",children:"State database size threshold"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#storage-left-threshold",children:"Remaining storage space threshold"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"manual",children:"Manual"}),"\n",(0,r.jsxs)(n.p,{children:["Manual mode triggers full pruning only upon request, providing complete control. To configure this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger Manual"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Pruning can also be triggered using the ",(0,r.jsx)(n.a,{href:"/next/interacting/json-rpc-ns/admin#admin_prune",children:(0,r.jsx)(n.code,{children:"admin_prune"})})," JSON-RPC method. Here's how to configure it:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Add the ",(0,r.jsx)(n.code,{children:"admin"})," namespace to ",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"}),". For instance,",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules [eth,net,...,admin]"})]}),"\n",(0,r.jsxs)(n.li,{children:["Create a separate port for ",(0,r.jsx)(n.code,{children:"admin"})," namespace only:",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls http://localhost:8555|http|admin"})]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Restart the client, and if everything is configured correctly, you should be able to call the ",(0,r.jsx)(n.code,{children:"admin_prune"})," method, and full pruning should start."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"One potential disadvantage of the manual mode is that if full pruning is not triggered on time, it cannot be performed later because of insufficient disk space. In such cases, the only option to free up the disk space is to resync the node from scratch."})}),"\n",(0,r.jsx)(n.h3,{id:"state-db-threshold",children:"State database size threshold"}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning automatically when the state database reaches the specified size.\nTo enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger StateDbSize --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning automatically whenever the state database size exceeds 256,000\nMB (250 GB). Assuming the state database has initially around 160 GB, pruning will be triggered when the database size grows by more than 90 GB."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"To avoid unexpected behavior and ensure that full pruning can be completed in full, it's recommended to set the threshold value to trigger pruning before the free disk space drops below 250 GB as a minimum. This ensures that sufficient free disk space is available for the pruning process."})}),"\n",(0,r.jsx)(n.h3,{id:"storage-left-threshold",children:"Remaining storage space threshold"}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsx)(n.p,{children:"This is the recommended approach as it ensures that pruning is executed on time."})}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning when the storage space reaches the specified minimum. To enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger VolumeFreeSpace --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements. However, it should not be set below the default value of ",(0,r.jsx)(n.code,{children:"256000"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning whenever free disk space drops to 256,000 MB (250 GB) or below. This ensures that pruning is invoked as infrequently as possible while also ensuring that sufficient free storage is always available to trigger it."}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsx)(n.p,{children:"It's recommended not to set the value below 250 GB for stability reasons. In reality, full pruning should require approximately the same amount of storage as a fresh state database (around 160 GB). Still, it also needs a threshold for processing and other operations since it creates a copy of the existing state database. Therefore, it's essential to maintain a minimum amount of storage to ensure a robust pruning performance."})}),"\n",(0,r.jsx)(n.h2,{id:"monitoring-progress",children:"Monitoring progress"}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is triggered correctly, the corresponding messages appear in the Nethermind logs."}),"\n",(0,r.jsx)(n.p,{children:"The very first ones should be:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Ready to start: pruning garbage before state with root .\nWARN: Full Pruning Started on root hash : do not close the node until finished or progress will be lost.\n"})}),"\n",(0,r.jsx)(n.p,{children:"From that moment, ensure that no restarts will be performed on Nethermind to ensure that full pruning runs correctly.\nAfter a few minutes first logs with progress would start to appear. For instance:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning In Progress: 00:00:57.0603307 1.00 mln nodes mirrored.\nFull Pruning In Progress: 00:01:40.3677103 2.00 mln nodes mirrored.\nFull Pruning In Progress: 00:02:25.6437030 3.00 mln nodes mirrored.\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Pruning may take even ",(0,r.jsx)(n.em,{children:"more than 30 hours"}),", depending on hardware configuration."]}),"\n",(0,r.jsx)(n.p,{children:"When pruning is completed, there is a log message similar the following:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Finished: 15:25:59.1620756 1,560.29 mln nodes mirrored.\n"})}),"\n",(0,r.jsx)(n.p,{children:"As you may notice, it took around 15 hours in this example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Since the amount of mirrored nodes is not a static value, providing a simple progress indicator in percentage is impossible. Therefore, the approximate value given should be used to determine when full pruning is expected to be completed."})}),"\n",(0,r.jsx)(n.h2,{id:"additional-settings",children:"Additional settings"}),"\n",(0,r.jsx)(n.h3,{id:"memory-budget",children:"Memory budget"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," configuration option controls the memory budget allocated for the trie visit during\nthe full pruning process. During pruning, pending nodes are queued to a pool of nodes whose size is determined by this value. This allows multiple nodes to share a single I/O. By increasing this value, the required read IOP per second can be significantly reduced, resulting in a faster full pruning operation. However, this improvement comes at the expense of increased memory usage."]}),"\n",(0,r.jsxs)(n.p,{children:["Assuming your system has 64GB of RAM, with Nethermind, the consensus client, and system expenses consuming 20GB,\nyou need to determine the maximum value for ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," while ensuring the system remains stable and respects the given limit. In this case, you have 44 GB (64 GB - 20 GB) of available memory for increasing the ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," value. To calculate the maximum value in MB, multiply the available memory by 1024: ",(0,r.jsx)(n.code,{children:"44 GB * 1024 = 45,056 MB"})]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Because of the workload on Ethereum Mainnet, setting the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," higher than 16 GB may not provide any additional performance benefits."]})}),"\n",(0,r.jsx)(n.p,{children:"Please note that this example assumes the remaining 44 GB of memory is sufficient for the full pruning memory budget.\nDepending on the specific use case and system requirements, it may be necessary to adjust the value further to optimize performance and resource usage."}),"\n",(0,r.jsx)(n.h3,{id:"pruning-completion-behavior",children:"Pruning completion behavior"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})," configuration option determines Nethermind's behavior after full pruning is completed. By default, Nethermind will continue to progress as usual. However, if a user wishes to shut down the node after pruning, there are three options available:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"None"}),": No action taken"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Nethermind shuts down if pruning succeeds"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"AlwaysShutdown"}),": Nethermind shuts down once pruning completes, regardless of whether it succeeds or fails"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"number-of-pruning-concurrent-tasks",children:"Number of pruning concurrent tasks"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})," configuration option determines the number of parallel tasks/threads that can be used by pruning:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"-1"}),": uses the number of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"0"}),": uses 25% of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"1"}),": runs on a single thread"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The recommended value depends on the type of node being used. If the node needs to be responsive (e.g., RPC or validator), using a value below the number of logical processors is recommended. The default value is recommended if the node doesn't have many other responsibilities but needs to follow the chain without delays and produce live logs reliably. If the node doesn't need to be responsive, has very fast I/O (such as NVMe), and the shortest pruning time\nis desired, this can be set to 2\u20133 times the number of logical processors."}),"\n",(0,r.jsx)(n.h3,{id:"in-memory-cache-size",children:"In-memory cache size"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.CacheMb"})," configuration option determines the size, in MB, of the memory pool of nodes used for in-memory pruning. The default value is 1024. Increasing this value can help reduce the rate at which the state database grows."]}),"\n",(0,r.jsx)(n.h2,{id:"side-notes",children:"Side notes"}),"\n",(0,r.jsx)(n.p,{children:"For pruning, keep in mind the following:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Full pruning is a cumbersome task, but it's performed in the background, so the node continues progressing and following the chain."}),"\n",(0,r.jsx)(n.li,{children:"The process' heaviness may affect the effectiveness of the validator rewards. Still, since it's executed only once every few months, it shouldn't have a significant impact on overall results (we've xperienced approximately 5\u201310% loss of rewards during full pruning)."}),"\n",(0,r.jsx)(n.li,{children:"Ensure that your storage has at least 250 GB of free space after syncing the node. Otherwise, full pruning will never complete successfully."}),"\n",(0,r.jsxs)(n.li,{children:["Several things can be done to reduce the size of the database after syncing: setting ",(0,r.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})," and ",(0,r.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})," to a proper value higher than 0, using a consensus client that requires less storage, and setting logs to the lowest level to avoid log spamming."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>a});var r=i(6540);const t={},s=r.createContext(t);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3f02cd01.03d23fc5.js b/assets/js/3f02cd01.83d520b1.js similarity index 99% rename from assets/js/3f02cd01.03d23fc5.js rename to assets/js/3f02cd01.83d520b1.js index b99d4af0c..47fe3d6be 100644 --- a/assets/js/3f02cd01.03d23fc5.js +++ b/assets/js/3f02cd01.83d520b1.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[430],{7382:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),s=t(8453),a=t(1470),l=t(9365);const o={title:"net namespace",sidebar_label:"net",sidebar_position:4},i=void 0,c={id:"interacting/json-rpc-ns/net",title:"net namespace",description:"net_listening",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/net.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/net",permalink:"/1.25.4/interacting/json-rpc-ns/net",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/net.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"net namespace",sidebar_label:"net",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"eth",permalink:"/1.25.4/interacting/json-rpc-ns/eth"},next:{title:"parity",permalink:"/1.25.4/interacting/json-rpc-ns/parity"}},u={},d=[{value:"net_listening",id:"net_listening",level:3},{value:"net_localAddress",id:"net_localaddress",level:3},{value:"net_localEnode",id:"net_localenode",level:3},{value:"net_peerCount",id:"net_peercount",level:3},{value:"net_version",id:"net_version",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"net_listening",children:"net_listening"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_listening",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localaddress",children:"net_localAddress"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localAddress",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localenode",children:"net_localEnode"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localEnode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_peercount",children:"net_peerCount"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_peerCount",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_version",children:"net_version"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_version",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var a=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>A});var r=t(6540),s=t(4164),a=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(s.location.search);n.set(a,e),s.replace({...s.location,search:n.toString()})}),[a,s])]}function j(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[c,d]=m({queryString:t,groupId:s}),[j,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,a]=(0,u.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:s}),x=(()=>{const e=c??j;return h({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{x&&i(x)}),[x]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=t(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=t(4848);function f(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),s=o[t].value;s!==r&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:a}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function _(e){const n=j(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,v.jsx)(f,{...n,...e}),(0,v.jsx)(g,{...n,...e})]})}function A(e){const n=(0,b.A)();return(0,v.jsx)(_,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const s={},a=r.createContext(s);function l(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[430],{7382:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),s=t(8453),a=t(1470),l=t(9365);const o={title:"net namespace",sidebar_label:"net",sidebar_position:4},i=void 0,c={id:"interacting/json-rpc-ns/net",title:"net namespace",description:"net_listening",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/net.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/net",permalink:"/1.25.4/interacting/json-rpc-ns/net",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/net.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"net namespace",sidebar_label:"net",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"eth",permalink:"/1.25.4/interacting/json-rpc-ns/eth"},next:{title:"parity",permalink:"/1.25.4/interacting/json-rpc-ns/parity"}},u={},d=[{value:"net_listening",id:"net_listening",level:3},{value:"net_localAddress",id:"net_localaddress",level:3},{value:"net_localEnode",id:"net_localenode",level:3},{value:"net_peerCount",id:"net_peercount",level:3},{value:"net_version",id:"net_version",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"net_listening",children:"net_listening"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_listening",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localaddress",children:"net_localAddress"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localAddress",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localenode",children:"net_localEnode"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localEnode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_peercount",children:"net_peerCount"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_peerCount",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_version",children:"net_version"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_version",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var a=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>A});var r=t(6540),s=t(4164),a=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(s.location.search);n.set(a,e),s.replace({...s.location,search:n.toString()})}),[a,s])]}function j(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[c,d]=m({queryString:t,groupId:s}),[j,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,a]=(0,u.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:s}),x=(()=>{const e=c??j;return h({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{x&&i(x)}),[x]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=t(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=t(4848);function f(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),s=o[t].value;s!==r&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:a}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function _(e){const n=j(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,v.jsx)(f,{...n,...e}),(0,v.jsx)(g,{...n,...e})]})}function A(e){const n=(0,b.A)();return(0,v.jsx)(_,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const s={},a=r.createContext(s);function l(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/404f0c63.259be03d.js b/assets/js/404f0c63.4e4c6a74.js similarity index 99% rename from assets/js/404f0c63.259be03d.js rename to assets/js/404f0c63.4e4c6a74.js index 283808cee..99b63ee23 100644 --- a/assets/js/404f0c63.259be03d.js +++ b/assets/js/404f0c63.4e4c6a74.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2963],{9954:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>h,contentTitle:()=>a,default:()=>j,frontMatter:()=>d,metadata:()=>o,toc:()=>t});var i=l(4848),s=l(8453),c=l(1470),r=l(9365);const d={title:"Configuration",sidebar_position:1},a=void 0,o={id:"fundamentals/configuration",title:"Configuration",description:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:",source:"@site/versioned_docs/version-1.29.0/fundamentals/configuration.md",sourceDirName:"fundamentals",slug:"/fundamentals/configuration",permalink:"/fundamentals/configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/configuration.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Configuration",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Migrating from Geth",permalink:"/get-started/migrating-from-geth"},next:{title:"Sync",permalink:"/fundamentals/sync"}},h={},t=[{value:"Basic command line options",id:"basic-command-line-options",level:2},{value:"-d, --baseDbPath <path>",id:"basedbpath",level:4},{value:"-c, --config <value>",id:"config",level:4},{value:"-cd, --configsDirectory <path>",id:"configs-directory",level:4},{value:"-dd, --datadir <path>",id:"datadir",level:4},{value:"-?, -h, --help",id:"help",level:4},{value:"-l, --log <level>",id:"log",level:4},{value:"-lcs, --loggerConfigSource <path>",id:"loggerconfigsource",level:4},{value:"-pd, --pluginsDirectory <path>",id:"pluginsdirectory",level:4},{value:"-v, --version",id:"version",level:4},{value:"Options by namespaces",id:"options-by-namespaces",level:2},{value:"Aura",id:"aura",level:3},{value:"Aura.AllowAuRaPrivateChains",id:"aura-allowauraprivatechains",level:4},{value:"Aura.ForceSealing",id:"aura-forcesealing",level:4},{value:"Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract",id:"aura-minimum2mlngasperblockwhenusingblockgaslimitcontract",level:4},{value:"Aura.TxPriorityConfigFilePath",id:"aura-txpriorityconfigfilepath",level:4},{value:"Aura.TxPriorityContractAddress",id:"aura-txprioritycontractaddress",level:4},{value:"Blocks",id:"blocks",level:3},{value:"Blocks.BlockProductionTimeoutMs",id:"blocks-blockproductiontimeoutms",level:4},{value:"Blocks.ExtraData",id:"blocks-extradata",level:4},{value:"Blocks.GenesisTimeoutMs",id:"blocks-genesistimeoutms",level:4},{value:"Blocks.MinGasPrice",id:"blocks-mingasprice",level:4},{value:"Blocks.PreWarmStateOnBlockProcessing",id:"blocks-prewarmstateonblockprocessing",level:4},{value:"Blocks.RandomizedBlocks",id:"blocks-randomizedblocks",level:4},{value:"Blocks.SecondsPerSlot",id:"blocks-secondsperslot",level:4},{value:"Blocks.TargetBlockGasLimit",id:"blocks-targetblockgaslimit",level:4},{value:"Bloom",id:"bloom",level:3},{value:"Bloom.Index",id:"bloom-index",level:4},{value:"Bloom.IndexLevelBucketSizes",id:"bloom-indexlevelbucketsizes",level:4},{value:"Bloom.Migration",id:"bloom-migration",level:4},{value:"Bloom.MigrationStatistics",id:"bloom-migrationstatistics",level:4},{value:"CensorshipDetector",id:"censorshipdetector",level:3},{value:"CensorshipDetector.AddressesForCensorshipDetection",id:"censorshipdetector-addressesforcensorshipdetection",level:4},{value:"CensorshipDetector.BlockCensorshipThreshold",id:"censorshipdetector-blockcensorshipthreshold",level:4},{value:"CensorshipDetector.Enabled",id:"censorshipdetector-enabled",level:4},{value:"EthStats",id:"ethstats",level:3},{value:"EthStats.Contact",id:"ethstats-contact",level:4},{value:"EthStats.Enabled",id:"ethstats-enabled",level:4},{value:"EthStats.Name",id:"ethstats-name",level:4},{value:"EthStats.Secret",id:"ethstats-secret",level:4},{value:"EthStats.SendInterval",id:"ethstats-sendinterval",level:4},{value:"EthStats.Server",id:"ethstats-server",level:4},{value:"HealthChecks",id:"healthchecks",level:3},{value:"HealthChecks.Enabled",id:"healthchecks-enabled",level:4},{value:"HealthChecks.LowStorageCheckAwaitOnStartup",id:"healthchecks-lowstoragecheckawaitonstartup",level:4},{value:"HealthChecks.LowStorageSpaceShutdownThreshold",id:"healthchecks-lowstoragespaceshutdownthreshold",level:4},{value:"HealthChecks.LowStorageSpaceWarningThreshold",id:"healthchecks-lowstoragespacewarningthreshold",level:4},{value:"HealthChecks.MaxIntervalClRequestTime",id:"healthchecks-maxintervalclrequesttime",level:4},{value:"HealthChecks.MaxIntervalWithoutProcessedBlock",id:"healthchecks-maxintervalwithoutprocessedblock",level:4},{value:"HealthChecks.MaxIntervalWithoutProducedBlock",id:"healthchecks-maxintervalwithoutproducedblock",level:4},{value:"HealthChecks.PollingInterval",id:"healthchecks-pollinginterval",level:4},{value:"HealthChecks.Slug",id:"healthchecks-slug",level:4},{value:"HealthChecks.UIEnabled",id:"healthchecks-uienabled",level:4},{value:"HealthChecks.WebhooksEnabled",id:"healthchecks-webhooksenabled",level:4},{value:"HealthChecks.WebhooksPayload",id:"healthchecks-webhookspayload",level:4},{value:"HealthChecks.WebhooksRestorePayload",id:"healthchecks-webhooksrestorepayload",level:4},{value:"HealthChecks.WebhooksUri",id:"healthchecks-webhooksuri",level:4},{value:"Hive",id:"hive",level:3},{value:"Hive.BlocksDir",id:"hive-blocksdir",level:4},{value:"Hive.ChainFile",id:"hive-chainfile",level:4},{value:"Hive.Enabled",id:"hive-enabled",level:4},{value:"Hive.GenesisFilePath",id:"hive-genesisfilepath",level:4},{value:"Hive.KeysDir",id:"hive-keysdir",level:4},{value:"Init",id:"init",level:3},{value:"Init.AutoDump",id:"init-autodump",level:4},{value:"Init.BadBlocksStored",id:"init-badblocksstored",level:4},{value:"Init.BaseDbPath",id:"init-basedbpath",level:4},{value:"Init.ChainSpecPath",id:"init-chainspecpath",level:4},{value:"Init.DiagnosticMode",id:"init-diagnosticmode",level:4},{value:"Init.DiscoveryEnabled",id:"init-discoveryenabled",level:4},{value:"Init.EnableUnsecuredDevWallet",id:"init-enableunsecureddevwallet",level:4},{value:"Init.GenesisHash",id:"init-genesishash",level:4},{value:"Init.HiveChainSpecPath",id:"init-hivechainspecpath",level:4},{value:"Init.IsMining",id:"init-ismining",level:4},{value:"Init.KeepDevWalletInMemory",id:"init-keepdevwalletinmemory",level:4},{value:"Init.KzgSetupPath",id:"init-kzgsetuppath",level:4},{value:"Init.LogDirectory",id:"init-logdirectory",level:4},{value:"Init.LogFileName",id:"init-logfilename",level:4},{value:"Init.LogRules",id:"init-logrules",level:4},{value:"Init.MemoryHint",id:"init-memoryhint",level:4},{value:"Init.PeerManagerEnabled",id:"init-peermanagerenabled",level:4},{value:"Init.ProcessingEnabled",id:"init-processingenabled",level:4},{value:"Init.RpcDbUrl",id:"init-rpcdburl",level:4},{value:"Init.StaticNodesPath",id:"init-staticnodespath",level:4},{value:"Init.WebSocketsEnabled",id:"init-websocketsenabled",level:4},{value:"JsonRpc",id:"jsonrpc",level:3},{value:"JsonRpc.AdditionalRpcUrls",id:"jsonrpc-additionalrpcurls",level:4},{value:"JsonRpc.BufferResponses",id:"jsonrpc-bufferresponses",level:4},{value:"JsonRpc.CallsFilterFilePath",id:"jsonrpc-callsfilterfilepath",level:4},{value:"JsonRpc.Enabled",id:"jsonrpc-enabled",level:4},{value:"JsonRpc.EnabledModules",id:"jsonrpc-enabledmodules",level:4},{value:"JsonRpc.EngineEnabledModules",id:"jsonrpc-engineenabledmodules",level:4},{value:"JsonRpc.EngineHost",id:"jsonrpc-enginehost",level:4},{value:"JsonRpc.EnginePort",id:"jsonrpc-engineport",level:4},{value:"JsonRpc.EstimateErrorMargin",id:"jsonrpc-estimateerrormargin",level:4},{value:"JsonRpc.EthModuleConcurrentInstances",id:"jsonrpc-ethmoduleconcurrentinstances",level:4},{value:"JsonRpc.GasCap",id:"jsonrpc-gascap",level:4},{value:"JsonRpc.Host",id:"jsonrpc-host",level:4},{value:"JsonRpc.IpcUnixDomainSocketPath",id:"jsonrpc-ipcunixdomainsocketpath",level:4},{value:"JsonRpc.JwtSecretFile",id:"jsonrpc-jwtsecretfile",level:4},{value:"JsonRpc.MaxBatchResponseBodySize",id:"jsonrpc-maxbatchresponsebodysize",level:4},{value:"JsonRpc.MaxBatchSize",id:"jsonrpc-maxbatchsize",level:4},{value:"JsonRpc.MaxLoggedRequestParametersCharacters",id:"jsonrpc-maxloggedrequestparameterscharacters",level:4},{value:"JsonRpc.MaxLogsPerResponse",id:"jsonrpc-maxlogsperresponse",level:4},{value:"JsonRpc.MaxRequestBodySize",id:"jsonrpc-maxrequestbodysize",level:4},{value:"JsonRpc.MaxSimulateBlocksCap",id:"jsonrpc-maxsimulateblockscap",level:4},{value:"JsonRpc.MethodsLoggingFiltering",id:"jsonrpc-methodsloggingfiltering",level:4},{value:"JsonRpc.Port",id:"jsonrpc-port",level:4},{value:"JsonRpc.ReportIntervalSeconds",id:"jsonrpc-reportintervalseconds",level:4},{value:"JsonRpc.RequestQueueLimit",id:"jsonrpc-requestqueuelimit",level:4},{value:"JsonRpc.RpcRecorderBaseFilePath",id:"jsonrpc-rpcrecorderbasefilepath",level:4},{value:"JsonRpc.RpcRecorderState",id:"jsonrpc-rpcrecorderstate",level:4},{value:"JsonRpc.Timeout",id:"jsonrpc-timeout",level:4},{value:"JsonRpc.WebSocketsPort",id:"jsonrpc-websocketsport",level:4},{value:"KeyStore",id:"keystore",level:3},{value:"KeyStore.BlockAuthorAccount",id:"keystore-blockauthoraccount",level:4},{value:"KeyStore.Cipher",id:"keystore-cipher",level:4},{value:"KeyStore.EnodeAccount",id:"keystore-enodeaccount",level:4},{value:"KeyStore.EnodeKeyFile",id:"keystore-enodekeyfile",level:4},{value:"KeyStore.IVSize",id:"keystore-ivsize",level:4},{value:"KeyStore.Kdf",id:"keystore-kdf",level:4},{value:"KeyStore.KdfparamsDklen",id:"keystore-kdfparamsdklen",level:4},{value:"KeyStore.KdfparamsN",id:"keystore-kdfparamsn",level:4},{value:"KeyStore.KdfparamsP",id:"keystore-kdfparamsp",level:4},{value:"KeyStore.KdfparamsR",id:"keystore-kdfparamsr",level:4},{value:"KeyStore.KdfparamsSaltLen",id:"keystore-kdfparamssaltlen",level:4},{value:"KeyStore.KeyStoreDirectory",id:"keystore-keystoredirectory",level:4},{value:"KeyStore.KeyStoreEncoding",id:"keystore-keystoreencoding",level:4},{value:"KeyStore.PasswordFiles",id:"keystore-passwordfiles",level:4},{value:"KeyStore.Passwords",id:"keystore-passwords",level:4},{value:"KeyStore.SymmetricEncrypterBlockSize",id:"keystore-symmetricencrypterblocksize",level:4},{value:"KeyStore.SymmetricEncrypterKeySize",id:"keystore-symmetricencrypterkeysize",level:4},{value:"KeyStore.TestNodeKey",id:"keystore-testnodekey",level:4},{value:"KeyStore.UnlockAccounts",id:"keystore-unlockaccounts",level:4},{value:"Merge",id:"merge",level:3},{value:"Merge.BuilderRelayUrl",id:"merge-builderrelayurl",level:4},{value:"Merge.CollectionsPerDecommit",id:"merge-collectionsperdecommit",level:4},{value:"Merge.CompactMemory",id:"merge-compactmemory",level:4},{value:"Merge.Enabled",id:"merge-enabled",level:4},{value:"Merge.FinalTotalDifficulty",id:"merge-finaltotaldifficulty",level:4},{value:"Merge.PrioritizeBlockLatency",id:"merge-prioritizeblocklatency",level:4},{value:"Merge.SweepMemory",id:"merge-sweepmemory",level:4},{value:"Merge.TerminalBlockHash",id:"merge-terminalblockhash",level:4},{value:"Merge.TerminalBlockNumber",id:"merge-terminalblocknumber",level:4},{value:"Merge.TerminalTotalDifficulty",id:"merge-terminaltotaldifficulty",level:4},{value:"Metrics",id:"metrics",level:3},{value:"Metrics.CountersEnabled",id:"metrics-countersenabled",level:4},{value:"Metrics.Enabled",id:"metrics-enabled",level:4},{value:"Metrics.EnableDbSizeMetrics",id:"metrics-enabledbsizemetrics",level:4},{value:"Metrics.ExposeHost",id:"metrics-exposehost",level:4},{value:"Metrics.ExposePort",id:"metrics-exposeport",level:4},{value:"Metrics.IntervalSeconds",id:"metrics-intervalseconds",level:4},{value:"Metrics.NodeName",id:"metrics-nodename",level:4},{value:"Metrics.PushGatewayUrl",id:"metrics-pushgatewayurl",level:4},{value:"Mining",id:"mining",level:3},{value:"Mining.Enabled",id:"mining-enabled",level:4},{value:"Mining.Signer",id:"mining-signer",level:4},{value:"Network",id:"network",level:3},{value:"Network.Bootnodes",id:"network-bootnodes",level:4},{value:"Network.DiagTracerEnabled",id:"network-diagtracerenabled",level:4},{value:"Network.DiscoveryDns",id:"network-discoverydns",level:4},{value:"Network.DiscoveryPort",id:"network-discoveryport",level:4},{value:"Network.EnableUPnP",id:"network-enableupnp",level:4},{value:"Network.ExternalIp",id:"network-externalip",level:4},{value:"Network.LocalIp",id:"network-localip",level:4},{value:"Network.MaxActivePeers",id:"network-maxactivepeers",level:4},{value:"Network.MaxNettyArenaCount",id:"network-maxnettyarenacount",level:4},{value:"Network.NettyArenaOrder",id:"network-nettyarenaorder",level:4},{value:"Network.OnlyStaticPeers",id:"network-onlystaticpeers",level:4},{value:"Network.P2PPort",id:"network-p2pport",level:4},{value:"Network.PriorityPeersMaxCount",id:"network-prioritypeersmaxcount",level:4},{value:"Network.StaticPeers",id:"network-staticpeers",level:4},{value:"Optimism",id:"optimism",level:3},{value:"Optimism.SequencerUrl",id:"optimism-sequencerurl",level:4},{value:"Pruning",id:"pruning",level:3},{value:"Pruning.AvailableSpaceCheckEnabled",id:"pruning-availablespacecheckenabled",level:4},{value:"Pruning.CacheMb",id:"pruning-cachemb",level:4},{value:"Pruning.FullPruningCompletionBehavior",id:"pruning-fullpruningcompletionbehavior",level:4},{value:"Pruning.FullPruningDisableLowPriorityWrites",id:"pruning-fullpruningdisablelowprioritywrites",level:4},{value:"Pruning.FullPruningMaxDegreeOfParallelism",id:"pruning-fullpruningmaxdegreeofparallelism",level:4},{value:"Pruning.FullPruningMemoryBudgetMb",id:"pruning-fullpruningmemorybudgetmb",level:4},{value:"Pruning.FullPruningMinimumDelayHours",id:"pruning-fullpruningminimumdelayhours",level:4},{value:"Pruning.FullPruningThresholdMb",id:"pruning-fullpruningthresholdmb",level:4},{value:"Pruning.FullPruningTrigger",id:"pruning-fullpruningtrigger",level:4},{value:"Pruning.Mode",id:"pruning-mode",level:4},{value:"Pruning.PersistenceInterval",id:"pruning-persistenceinterval",level:4},{value:"Pruning.PruningBoundary",id:"pruning-pruningboundary",level:4},{value:"Pruning.TrackedPastKeyCountMemoryRatio",id:"pruning-trackedpastkeycountmemoryratio",level:4},{value:"Receipt",id:"receipt",level:3},{value:"Receipt.CompactReceiptStore",id:"receipt-compactreceiptstore",level:4},{value:"Receipt.CompactTxIndex",id:"receipt-compacttxindex",level:4},{value:"Receipt.ReceiptsMigration",id:"receipt-receiptsmigration",level:4},{value:"Receipt.StoreReceipts",id:"receipt-storereceipts",level:4},{value:"Receipt.TxLookupLimit",id:"receipt-txlookuplimit",level:4},{value:"Seq",id:"seq",level:3},{value:"Seq.ApiKey",id:"seq-apikey",level:4},{value:"Seq.MinLevel",id:"seq-minlevel",level:4},{value:"Seq.ServerUrl",id:"seq-serverurl",level:4},{value:"Snapshot",id:"snapshot",level:3},{value:"Snapshot.Checksum",id:"snapshot-checksum",level:4},{value:"Snapshot.DownloadUrl",id:"snapshot-downloadurl",level:4},{value:"Snapshot.Enabled",id:"snapshot-enabled",level:4},{value:"Snapshot.SnapshotDirectory",id:"snapshot-snapshotdirectory",level:4},{value:"Snapshot.SnapshotFileName",id:"snapshot-snapshotfilename",level:4},{value:"Sync",id:"sync",level:3},{value:"Sync.AncientBodiesBarrier",id:"sync-ancientbodiesbarrier",level:4},{value:"Sync.AncientReceiptsBarrier",id:"sync-ancientreceiptsbarrier",level:4},{value:"Sync.BlocksDbTuneDbMode",id:"sync-blocksdbtunedbmode",level:4},{value:"Sync.DownloadBodiesInFastSync",id:"sync-downloadbodiesinfastsync",level:4},{value:"Sync.DownloadHeadersInFastSync",id:"sync-downloadheadersinfastsync",level:4},{value:"Sync.DownloadReceiptsInFastSync",id:"sync-downloadreceiptsinfastsync",level:4},{value:"Sync.ExitOnSynced",id:"sync-exitonsynced",level:4},{value:"Sync.ExitOnSyncedWaitTimeSec",id:"sync-exitonsyncedwaittimesec",level:4},{value:"Sync.FastSync",id:"sync-fastsync",level:4},{value:"Sync.FastSyncCatchUpHeightDelta",id:"sync-fastsynccatchupheightdelta",level:4},{value:"Sync.FixReceipts",id:"sync-fixreceipts",level:4},{value:"Sync.FixTotalDifficulty",id:"sync-fixtotaldifficulty",level:4},{value:"Sync.FixTotalDifficultyLastBlock",id:"sync-fixtotaldifficultylastblock",level:4},{value:"Sync.FixTotalDifficultyStartingBlock",id:"sync-fixtotaldifficultystartingblock",level:4},{value:"Sync.MaxAttemptsToUpdatePivot",id:"sync-maxattemptstoupdatepivot",level:4},{value:"Sync.MaxProcessingThreads",id:"sync-maxprocessingthreads",level:4},{value:"Sync.NetworkingEnabled",id:"sync-networkingenabled",level:4},{value:"Sync.NonValidatorNode",id:"sync-nonvalidatornode",level:4},{value:"Sync.PivotHash",id:"sync-pivothash",level:4},{value:"Sync.PivotNumber",id:"sync-pivotnumber",level:4},{value:"Sync.PivotTotalDifficulty",id:"sync-pivottotaldifficulty",level:4},{value:"Sync.SnapSync",id:"sync-snapsync",level:4},{value:"Sync.SnapSyncAccountRangePartitionCount",id:"sync-snapsyncaccountrangepartitioncount",level:4},{value:"Sync.StrictMode",id:"sync-strictmode",level:4},{value:"Sync.SynchronizationEnabled",id:"sync-synchronizationenabled",level:4},{value:"Sync.TuneDbMode",id:"sync-tunedbmode",level:4},{value:"Sync.UseGethLimitsInFastBlocks",id:"sync-usegethlimitsinfastblocks",level:4},{value:"TraceStore",id:"tracestore",level:3},{value:"TraceStore.BlocksToKeep",id:"tracestore-blockstokeep",level:4},{value:"TraceStore.DeserializationParallelization",id:"tracestore-deserializationparallelization",level:4},{value:"TraceStore.Enabled",id:"tracestore-enabled",level:4},{value:"TraceStore.TraceTypes",id:"tracestore-tracetypes",level:4},{value:"TxPool",id:"txpool",level:3},{value:"TxPool.BlobCacheSize",id:"txpool-blobcachesize",level:4},{value:"TxPool.BlobsSupport",id:"txpool-blobssupport",level:4},{value:"TxPool.GasLimit",id:"txpool-gaslimit",level:4},{value:"TxPool.HashCacheSize",id:"txpool-hashcachesize",level:4},{value:"TxPool.InMemoryBlobPoolSize",id:"txpool-inmemoryblobpoolsize",level:4},{value:"TxPool.MaxPendingBlobTxsPerSender",id:"txpool-maxpendingblobtxspersender",level:4},{value:"TxPool.MaxPendingTxsPerSender",id:"txpool-maxpendingtxspersender",level:4},{value:"TxPool.MinBaseFeeThreshold",id:"txpool-minbasefeethreshold",level:4},{value:"TxPool.PeerNotificationThreshold",id:"txpool-peernotificationthreshold",level:4},{value:"TxPool.PersistentBlobStorageSize",id:"txpool-persistentblobstoragesize",level:4},{value:"TxPool.ReportMinutes",id:"txpool-reportminutes",level:4},{value:"TxPool.Size",id:"txpool-size",level:4},{value:"Wallet",id:"wallet",level:3},{value:"Wallet.DevAccounts",id:"wallet-devaccounts",level:4},{value:"Environment variables",id:"environment-variables",level:2},{value:"Configuration file",id:"configuration-file",level:2}];function x(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components},{Details:l}=n;return l||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#basic-command-line-options",children:"Command line options"})," (aka arguments or flags)"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#environment-variables",children:"Environment variables"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#configuration-file",children:"Configuration file"})}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsx)(n.p,{children:"Given the above priority list, an option defined in a more priority way overrides the same option defined elsewhere if any."})}),"\n",(0,i.jsx)(n.p,{children:"The full list of configuration options can be displayed by running:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,i.jsx)(n.p,{children:"Below is the list of the basic command line options followed by an exhaustive list of configuration options by namespace."}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"The configuration options are case-sensitive and can be defined only once unless stated otherwise."})}),"\n",(0,i.jsx)(n.h2,{id:"basic-command-line-options",children:"Basic command line options"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"basedbpath",children:(0,i.jsx)(n.code,{children:"-d, --baseDbPath "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the Nethermind database directory. Defaults to ",(0,i.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"config",children:(0,i.jsx)(n.code,{children:"-c, --config "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the ",(0,i.jsx)(n.a,{href:"#configuration-file",children:"configuration file"})," or the name (without extension) of any of the configuration files in the configuration directory. Defaults to ",(0,i.jsx)(n.code,{children:"mainnet"}),"."]}),"\n",(0,i.jsxs)(l,{children:[(0,i.jsx)("summary",{children:"Available configurations"}),(0,i.jsxs)("p",{children:[(0,i.jsxs)(n.p,{children:["Nethermind provides the following pre-built configurations named as the networks they are for. Their respective versions for archive nodes are suffixed ",(0,i.jsx)(n.code,{children:"_archive"}),"."]}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"base-mainnet"})," ",(0,i.jsx)(n.code,{children:"base-mainnet_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"base-sepolia"})," ",(0,i.jsx)(n.code,{children:"base-sepolia_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"chiado"})," ",(0,i.jsx)(n.code,{children:"chiado_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"energyweb"})," ",(0,i.jsx)(n.code,{children:"energyweb_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"gnosis"})," ",(0,i.jsx)(n.code,{children:"gnosis_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"holesky"})," ",(0,i.jsx)(n.code,{children:"holesky_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mainnet"})," ",(0,i.jsx)(n.code,{children:"mainnet_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"op-mainnet"})," ",(0,i.jsx)(n.code,{children:"op-mainnet_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"op-sepolia"})," ",(0,i.jsx)(n.code,{children:"op-sepolia_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"sepolia"})," ",(0,i.jsx)(n.code,{children:"sepolia_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"volta"})," ",(0,i.jsx)(n.code,{children:"volta_archive"})]}),"\n"]})]})]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"configs-directory",children:(0,i.jsx)(n.code,{children:"-cd, --configsDirectory "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the configuration files directory. Defaults to ",(0,i.jsx)(n.code,{children:"configs"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"datadir",children:(0,i.jsx)(n.code,{children:"-dd, --datadir "})}),"\n",(0,i.jsx)(n.p,{children:"The path to the Nethermind data directory. Defaults to Nethermind's current directory."}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.p,{children:["The absolute paths set by ",(0,i.jsx)(n.a,{href:"#init-basedbpath",children:(0,i.jsx)(n.code,{children:"Init.BaseDbPath"})}),", ",(0,i.jsx)(n.a,{href:"#init-logdirectory",children:(0,i.jsx)(n.code,{children:"Init.LogDirectory"})}),", or ",(0,i.jsx)(n.a,{href:"#keystore-keystoredirectory",children:(0,i.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})})," options in a configuration file are not overridden by ",(0,i.jsx)(n.code,{children:"--datadir"}),"."]})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"help",children:(0,i.jsx)(n.code,{children:"-?, -h, --help"})}),"\n",(0,i.jsx)(n.p,{children:"Displays the full list of available command line options."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"log",children:(0,i.jsx)(n.code,{children:"-l, --log "})}),"\n",(0,i.jsxs)(n.p,{children:["Log level (severity). Allowed values: ",(0,i.jsx)(n.code,{children:"TRACE"})," ",(0,i.jsx)(n.code,{children:"DEBUG"})," ",(0,i.jsx)(n.code,{children:"INFO"})," ",(0,i.jsx)(n.code,{children:"WARN"})," ",(0,i.jsx)(n.code,{children:"ERROR"})," ",(0,i.jsx)(n.code,{children:"OFF"}),". Defaults to ",(0,i.jsx)(n.code,{children:"INFO"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loggerconfigsource",children:(0,i.jsx)(n.code,{children:"-lcs, --loggerConfigSource "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the NLog configuration file. Defaults to ",(0,i.jsx)(n.code,{children:"NLog.config"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pluginsdirectory",children:(0,i.jsx)(n.code,{children:"-pd, --pluginsDirectory "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the Nethermind plugins directory. Defaults to ",(0,i.jsx)(n.code,{children:"plugins"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"version",children:(0,i.jsx)(n.code,{children:"-v, --version"})}),"\n",(0,i.jsx)(n.p,{children:"Displays the Nethermind version info."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"options-by-namespaces",children:"Options by namespaces"}),"\n",(0,i.jsx)(n.h3,{id:"aura",children:"Aura"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-allowauraprivatechains",children:(0,i.jsx)(n.code,{children:"Aura.AllowAuRaPrivateChains"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.AllowAuRaPrivateChains \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_ALLOWAURAPRIVATECHAINS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "AllowAuRaPrivateChains": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to allow private Aura-based chains only. Do not use with existing Aura-based chains. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-forcesealing",children:(0,i.jsx)(n.code,{children:"Aura.ForceSealing"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.ForceSealing \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_FORCESEALING=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "ForceSealing": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to seal empty blocks if mining. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-minimum2mlngasperblockwhenusingblockgaslimitcontract",children:(0,i.jsx)(n.code,{children:"Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_MINIMUM2MLNGASPERBLOCKWHENUSINGBLOCKGASLIMITCONTRACT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use 2M gas if the contract returns less than that when using ",(0,i.jsx)(n.code,{children:"BlockGasLimitContractTransitions"}),". Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-txpriorityconfigfilepath",children:(0,i.jsx)(n.code,{children:"Aura.TxPriorityConfigFilePath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.TxPriorityConfigFilePath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONFIGFILEPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "TxPriorityConfigFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the transaction priority rules file to use when selecting transactions from the transaction pool. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-txprioritycontractaddress",children:(0,i.jsx)(n.code,{children:"Aura.TxPriorityContractAddress"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.TxPriorityContractAddress \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONTRACTADDRESS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "TxPriorityContractAddress": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The address of the transaction priority contract to use when selecting transactions from the transaction pool. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"blocks",children:"Blocks"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-blockproductiontimeoutms",children:(0,i.jsx)(n.code,{children:"Blocks.BlockProductionTimeoutMs"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.BlockProductionTimeoutMs \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_BLOCKPRODUCTIONTIMEOUTMS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "BlockProductionTimeoutMs": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Block Production timeout, in milliseconds. Defaults to ",(0,i.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-extradata",children:(0,i.jsx)(n.code,{children:"Blocks.ExtraData"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.ExtraData \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_EXTRADATA=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "ExtraData": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block header extra data up to 32 bytes in length. Defaults to ",(0,i.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-genesistimeoutms",children:(0,i.jsx)(n.code,{children:"Blocks.GenesisTimeoutMs"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.GenesisTimeoutMs \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_GENESISTIMEOUTMS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "GenesisTimeoutMs": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Genesis block load timeout, in milliseconds. Defaults to ",(0,i.jsx)(n.code,{children:"40000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-mingasprice",children:(0,i.jsx)(n.code,{children:"Blocks.MinGasPrice"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.MinGasPrice \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_MINGASPRICE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "MinGasPrice": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The minimum gas premium (or the gas price before the London hard fork) for transactions accepted by the block producer. Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-prewarmstateonblockprocessing",children:(0,i.jsx)(n.code,{children:"Blocks.PreWarmStateOnBlockProcessing"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.PreWarmStateOnBlockProcessing \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_PREWARMSTATEONBLOCKPROCESSING=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "PreWarmStateOnBlockProcessing": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to pre-warm the state when processing blocks. This can lead to an up to 2x speed-up in the main loop block processing. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"True"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-randomizedblocks",children:(0,i.jsx)(n.code,{children:"Blocks.RandomizedBlocks"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.RandomizedBlocks \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_RANDOMIZEDBLOCKS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "RandomizedBlocks": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to change the difficulty of the block randomly within the constraints. Used in NethDev only. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-secondsperslot",children:(0,i.jsx)(n.code,{children:"Blocks.SecondsPerSlot"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.SecondsPerSlot \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_SECONDSPERSLOT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "SecondsPerSlot": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block time slot, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"12"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-targetblockgaslimit",children:(0,i.jsx)(n.code,{children:"Blocks.TargetBlockGasLimit"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.TargetBlockGasLimit \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_TARGETBLOCKGASLIMIT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "TargetBlockGasLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block gas limit that the block producer should try to reach in the fastest possible way based on the protocol rules. If not specified, then the block producer should follow others. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"bloom",children:"Bloom"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-index",children:(0,i.jsx)(n.code,{children:"Bloom.Index"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.Index \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEX=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "Index": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use the Bloom index. The Bloom index speeds up the RPC log searches. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-indexlevelbucketsizes",children:(0,i.jsx)(n.code,{children:"Bloom.IndexLevelBucketSizes"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.IndexLevelBucketSizes \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEXLEVELBUCKETSIZES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "IndexLevelBucketSizes": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of multipliers for index levels. Can be tweaked per chain to boost performance. Defaults to ",(0,i.jsx)(n.code,{children:"[4, 8, 8]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-migration",children:(0,i.jsx)(n.code,{children:"Bloom.Migration"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.Migration \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATION=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "Migration": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to migrate the previously downloaded blocks to the Bloom index. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-migrationstatistics",children:(0,i.jsx)(n.code,{children:"Bloom.MigrationStatistics"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.MigrationStatistics \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATIONSTATISTICS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "MigrationStatistics": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether the migration statistics should be calculated and output. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"censorshipdetector",children:"CensorshipDetector"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"censorshipdetector-addressesforcensorshipdetection",children:(0,i.jsx)(n.code,{children:"CensorshipDetector.AddressesForCensorshipDetection"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--CensorshipDetector.AddressesForCensorshipDetection \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_CENSORSHIPDETECTORCONFIG_ADDRESSESFORCENSORSHIPDETECTION=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "CensorshipDetector": {\n "AddressesForCensorshipDetection": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The addresses for which censorship is being detected. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"censorshipdetector-blockcensorshipthreshold",children:(0,i.jsx)(n.code,{children:"CensorshipDetector.BlockCensorshipThreshold"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--CensorshipDetector.BlockCensorshipThreshold \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_CENSORSHIPDETECTORCONFIG_BLOCKCENSORSHIPTHRESHOLD=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "CensorshipDetector": {\n "BlockCensorshipThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Number of consecutive blocks with detected potential censorship to report censorship attempt Defaults to ",(0,i.jsx)(n.code,{children:"2"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"censorshipdetector-enabled",children:(0,i.jsx)(n.code,{children:"CensorshipDetector.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--CensorshipDetector.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_CENSORSHIPDETECTORCONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "CensorshipDetector": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Enabling censorship detection feature Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"ethstats",children:"EthStats"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-contact",children:(0,i.jsx)(n.code,{children:"EthStats.Contact"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Contact \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_CONTACT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Contact": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The node owner contact details displayed on Ethstats. Defaults to ",(0,i.jsx)(n.code,{children:"hello@nethermind.io"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-enabled",children:(0,i.jsx)(n.code,{children:"EthStats.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use Ethstats publishing. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-name",children:(0,i.jsx)(n.code,{children:"EthStats.Name"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Name \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_NAME=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Name": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The node name displayed on Ethstats. Defaults to ",(0,i.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-secret",children:(0,i.jsx)(n.code,{children:"EthStats.Secret"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Secret \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SECRET=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Secret": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Ethstats secret. Defaults to ",(0,i.jsx)(n.code,{children:"secret"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-sendinterval",children:(0,i.jsx)(n.code,{children:"EthStats.SendInterval"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.SendInterval \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SENDINTERVAL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "SendInterval": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The stats update interval, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"15"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-server",children:(0,i.jsx)(n.code,{children:"EthStats.Server"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Server \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SERVER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Server": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Ethstats server URL. Defaults to ",(0,i.jsx)(n.code,{children:"ws://localhost:3000/api"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"healthchecks",children:"HealthChecks"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-enabled",children:(0,i.jsx)(n.code,{children:"HealthChecks.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the health check. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-lowstoragecheckawaitonstartup",children:(0,i.jsx)(n.code,{children:"HealthChecks.LowStorageCheckAwaitOnStartup"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.LowStorageCheckAwaitOnStartup \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGECHECKAWAITONSTARTUP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "LowStorageCheckAwaitOnStartup": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to check for low disk space on startup and suspend until enough space is available. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-lowstoragespaceshutdownthreshold",children:(0,i.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceShutdownThreshold"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACESHUTDOWNTHRESHOLD=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "LowStorageSpaceShutdownThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The percentage of available disk space below which Nethermind shuts down. ",(0,i.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-lowstoragespacewarningthreshold",children:(0,i.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceWarningThreshold"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACEWARNINGTHRESHOLD=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "LowStorageSpaceWarningThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The percentage of available disk space below which a warning is displayed. ",(0,i.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-maxintervalclrequesttime",children:(0,i.jsx)(n.code,{children:"HealthChecks.MaxIntervalClRequestTime"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.MaxIntervalClRequestTime \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALCLREQUESTTIME=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "MaxIntervalClRequestTime": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max request interval, in seconds, in which the consensus client is assumed healthy. Defaults to ",(0,i.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-maxintervalwithoutprocessedblock",children:(0,i.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProcessedBlock"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProcessedBlock \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPROCESSEDBLOCK=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "MaxIntervalWithoutProcessedBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max interval, in seconds, in which the block processing is assumed healthy. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-maxintervalwithoutproducedblock",children:(0,i.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProducedBlock"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProducedBlock \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPRODUCEDBLOCK=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "MaxIntervalWithoutProducedBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max interval, in seconds, in which the block production is assumed healthy. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-pollinginterval",children:(0,i.jsx)(n.code,{children:"HealthChecks.PollingInterval"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.PollingInterval \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_POLLINGINTERVAL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "PollingInterval": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The health check updates polling interval, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-slug",children:(0,i.jsx)(n.code,{children:"HealthChecks.Slug"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.Slug \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_SLUG=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "Slug": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL slug the health checks service is exposed at. Defaults to ",(0,i.jsx)(n.code,{children:"/health"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-uienabled",children:(0,i.jsx)(n.code,{children:"HealthChecks.UIEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.UIEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_UIENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "UIEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the health checks UI. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhooksenabled",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable web hooks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhookspayload",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksPayload"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksPayload \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSPAYLOAD=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksPayload": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on failure.\nDefaults to:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#FFCC00",\n "pretext": "Health Check Status :warning:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "Description",\n "value": "[[DESCRIPTIONS]]",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhooksrestorepayload",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksRestorePayload"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksRestorePayload \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSRESTOREPAYLOAD=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksRestorePayload": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on recovery.\nDefaults to:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#36a64f",\n "pretext": "Health Check Status :+1:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "description",\n "value": "The HealthCheck `[[LIVENESS]]` is recovered. Everything is up and running.",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhooksuri",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksUri"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksUri \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSURI=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksUri": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The web hook URL. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"hive",children:"Hive"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-blocksdir",children:(0,i.jsx)(n.code,{children:"Hive.BlocksDir"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.BlocksDir \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_BLOCKSDIR=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "BlocksDir": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the directory with additional blocks. Defaults to ",(0,i.jsx)(n.code,{children:"/blocks"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-chainfile",children:(0,i.jsx)(n.code,{children:"Hive.ChainFile"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.ChainFile \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_CHAINFILE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "ChainFile": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the test chain spec file. Defaults to ",(0,i.jsx)(n.code,{children:"/chain.rlp"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-enabled",children:(0,i.jsx)(n.code,{children:"Hive.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable Hive for debugging. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-genesisfilepath",children:(0,i.jsx)(n.code,{children:"Hive.GenesisFilePath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.GenesisFilePath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_GENESISFILEPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "GenesisFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the genesis block file. Defaults to ",(0,i.jsx)(n.code,{children:"/genesis.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-keysdir",children:(0,i.jsx)(n.code,{children:"Hive.KeysDir"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.KeysDir \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_KEYSDIR=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "KeysDir": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,i.jsx)(n.code,{children:"/keys"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"init",children:"Init"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-autodump",children:(0,i.jsx)(n.code,{children:"Init.AutoDump"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.AutoDump \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_AUTODUMP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "AutoDump": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Auto-dump on bad blocks for diagnostics. ",(0,i.jsx)(n.code,{children:"Default"})," combines ",(0,i.jsx)(n.code,{children:"Receipts"})," and ",(0,i.jsx)(n.code,{children:"Rlp"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Receipts"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Parity"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Geth"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Rlp"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"RlpLog"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Default"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Default"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-badblocksstored",children:(0,i.jsx)(n.code,{children:"Init.BadBlocksStored"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.BadBlocksStored \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BADBLOCKSSTORED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "BadBlocksStored": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The maximum number of bad blocks observed on the network that will be stored on disk. Defaults to ",(0,i.jsx)(n.code,{children:"100"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-basedbpath",children:(0,i.jsx)(n.code,{children:"Init.BaseDbPath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.BaseDbPath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BASEDBPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "BaseDbPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The base path for all Nethermind databases. Defaults to ",(0,i.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-chainspecpath",children:(0,i.jsx)(n.code,{children:"Init.ChainSpecPath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.ChainSpecPath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_CHAINSPECPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "ChainSpecPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the chain spec file. Defaults to ",(0,i.jsx)(n.code,{children:"chainspec/foundation.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-diagnosticmode",children:(0,i.jsx)(n.code,{children:"Init.DiagnosticMode"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.DiagnosticMode \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DIAGNOSTICMODE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "DiagnosticMode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The diagnostic mode."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"MemDb"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"RpcDb"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ReadOnlyDb"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VerifyRewards"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VerifySupply"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VerifyTrie"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-discoveryenabled",children:(0,i.jsx)(n.code,{children:"Init.DiscoveryEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.DiscoveryEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DISCOVERYENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "DiscoveryEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the node discovery. If disabled, Nethermind doesn't look for other nodes beyond the bootnodes specified. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-enableunsecureddevwallet",children:(0,i.jsx)(n.code,{children:"Init.EnableUnsecuredDevWallet"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.EnableUnsecuredDevWallet \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ENABLEUNSECUREDDEVWALLET=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "EnableUnsecuredDevWallet": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the in-app wallet/keystore. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-genesishash",children:(0,i.jsx)(n.code,{children:"Init.GenesisHash"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.GenesisHash \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_GENESISHASH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "GenesisHash": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The hash of the genesis block. If not specified, the genesis block validity is not checked which is useful in the case of ad hoc test/private networks. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-hivechainspecpath",children:(0,i.jsx)(n.code,{children:"Init.HiveChainSpecPath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.HiveChainSpecPath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_HIVECHAINSPECPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "HiveChainSpecPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the chain spec file for Hive tests. Defaults to ",(0,i.jsx)(n.code,{children:"chainspec/test.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-ismining",children:(0,i.jsx)(n.code,{children:"Init.IsMining"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.IsMining \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ISMINING=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "IsMining": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to seal/mine new blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-keepdevwalletinmemory",children:(0,i.jsx)(n.code,{children:"Init.KeepDevWalletInMemory"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.KeepDevWalletInMemory \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KEEPDEVWALLETINMEMORY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "KeepDevWalletInMemory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to create session-only accounts and delete them on shutdown. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-kzgsetuppath",children:(0,i.jsx)(n.code,{children:"Init.KzgSetupPath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.KzgSetupPath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KZGSETUPPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "KzgSetupPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to KZG trusted setup file. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-logdirectory",children:(0,i.jsx)(n.code,{children:"Init.LogDirectory"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.LogDirectory \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGDIRECTORY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "LogDirectory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the Nethermind logs directory. Defaults to ",(0,i.jsx)(n.code,{children:"logs"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-logfilename",children:(0,i.jsx)(n.code,{children:"Init.LogFileName"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.LogFileName \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGFILENAME=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "LogFileName": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The name of the log file. Defaults to ",(0,i.jsx)(n.code,{children:"log.txt"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-logrules",children:(0,i.jsx)(n.code,{children:"Init.LogRules"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.LogRules \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGRULES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "LogRules": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The logs format as ",(0,i.jsx)(n.code,{children:"LogPath:LogLevel;*"})," Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-memoryhint",children:(0,i.jsx)(n.code,{children:"Init.MemoryHint"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.MemoryHint \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_MEMORYHINT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "MemoryHint": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The hint on the max memory limit, in bytes, to configure the database and networking memory allocations. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-peermanagerenabled",children:(0,i.jsx)(n.code,{children:"Init.PeerManagerEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.PeerManagerEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PEERMANAGERENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "PeerManagerEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to connect to newly discovered peers. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-processingenabled",children:(0,i.jsx)(n.code,{children:"Init.ProcessingEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.ProcessingEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PROCESSINGENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "ProcessingEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download/process new blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-rpcdburl",children:(0,i.jsx)(n.code,{children:"Init.RpcDbUrl"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.RpcDbUrl \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_RPCDBURL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "RpcDbUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of the remote node used as a database source when ",(0,i.jsx)(n.code,{children:"DiagnosticMode"})," is set to ",(0,i.jsx)(n.code,{children:"RpcDb"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-staticnodespath",children:(0,i.jsx)(n.code,{children:"Init.StaticNodesPath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.StaticNodesPath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_STATICNODESPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "StaticNodesPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the static nodes file. Defaults to ",(0,i.jsx)(n.code,{children:"Data/static-nodes.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-websocketsenabled",children:(0,i.jsx)(n.code,{children:"Init.WebSocketsEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.WebSocketsEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_WEBSOCKETSENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "WebSocketsEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable WebSocket service for the default JSON-RPC port on startup. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"jsonrpc",children:"JsonRpc"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-additionalrpcurls",children:(0,i.jsx)(n.code,{children:"JsonRpc.AdditionalRpcUrls"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ADDITIONALRPCURLS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "AdditionalRpcUrls": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list. For instance, ",(0,i.jsx)(n.code,{children:"[http://localhost:8546|http;ws|eth;web3]"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-bufferresponses",children:(0,i.jsx)(n.code,{children:"JsonRpc.BufferResponses"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.BufferResponses \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_BUFFERRESPONSES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "BufferResponses": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to buffer responses before sending them. This allows using of ",(0,i.jsx)(n.code,{children:"Content-Length"})," instead of ",(0,i.jsx)(n.code,{children:"Transfer-Encoding: chunked"}),". Note that it may degrade performance on large responses. The max buffered response length is 2GB. Chunked responses can be larger. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-callsfilterfilepath",children:(0,i.jsx)(n.code,{children:"JsonRpc.CallsFilterFilePath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.CallsFilterFilePath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_CALLSFILTERFILEPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "CallsFilterFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to a file with the list of new-line-separated JSON-RPC calls. If specified, only the calls from that file are allowed. Defaults to ",(0,i.jsx)(n.code,{children:"Data/jsonrpc.filter"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-enabled",children:(0,i.jsx)(n.code,{children:"JsonRpc.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the JSON-RPC service. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-enabledmodules",children:(0,i.jsx)(n.code,{children:"JsonRpc.EnabledModules"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnabledModules \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLEDMODULES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EnabledModules": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of JSON-RPC namespaces to enable. For instance, ",(0,i.jsx)(n.code,{children:"[debug,eth]"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Built-in namespaces:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"admin"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"client"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"debug"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"engine"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"evm"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"health"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"net"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"parity"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"personal"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"proof"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"rpc"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"subscribe"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"trace"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"txpool"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"web3"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"[Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health,Rpc]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-engineenabledmodules",children:(0,i.jsx)(n.code,{children:"JsonRpc.EngineEnabledModules"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EngineEnabledModules \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EngineEnabledModules": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list for Engine API. Defaults to ",(0,i.jsx)(n.code,{children:"[Net,Eth,Subscribe,Web3]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-enginehost",children:(0,i.jsx)(n.code,{children:"JsonRpc.EngineHost"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EngineHost \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEHOST=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EngineHost": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Engine API host. Defaults to ",(0,i.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-engineport",children:(0,i.jsx)(n.code,{children:"JsonRpc.EnginePort"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEPORT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EnginePort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Engine API port. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-estimateerrormargin",children:(0,i.jsx)(n.code,{children:"JsonRpc.EstimateErrorMargin"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EstimateErrorMargin \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ESTIMATEERRORMARGIN=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EstimateErrorMargin": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The error margin used in the ",(0,i.jsx)(n.code,{children:"eth_estimateGas"})," JSON-RPC method, in basis points. Defaults to ",(0,i.jsx)(n.code,{children:"150"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-ethmoduleconcurrentinstances",children:(0,i.jsx)(n.code,{children:"JsonRpc.EthModuleConcurrentInstances"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EthModuleConcurrentInstances \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ETHMODULECONCURRENTINSTANCES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EthModuleConcurrentInstances": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The number of concurrent instances for non-sharable calls:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_call"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"This limits the load on the CPU and I/O to reasonable levels. If the limit is exceeded, HTTP 503 is returned along with the JSON-RPC error. Defaults to the number of logical processors."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-gascap",children:(0,i.jsx)(n.code,{children:"JsonRpc.GasCap"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.GasCap \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_GASCAP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "GasCap": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The gas limit for ",(0,i.jsx)(n.code,{children:"eth_call"})," and ",(0,i.jsx)(n.code,{children:"eth_estimateGas"}),". Defaults to ",(0,i.jsx)(n.code,{children:"100000000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-host",children:(0,i.jsx)(n.code,{children:"JsonRpc.Host"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Host \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_HOST=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Host": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The JSON-RPC service host. Defaults to ",(0,i.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-ipcunixdomainsocketpath",children:(0,i.jsx)(n.code,{children:"JsonRpc.IpcUnixDomainSocketPath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_IPCUNIXDOMAINSOCKETPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "IpcUnixDomainSocketPath": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The path to connect a UNIX domain socket over."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-jwtsecretfile",children:(0,i.jsx)(n.code,{children:"JsonRpc.JwtSecretFile"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "JwtSecretFile": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the JWT secret file required for the Engine API authentication. Defaults to ",(0,i.jsx)(n.code,{children:"keystore/jwt-secret"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxbatchresponsebodysize",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxBatchResponseBodySize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxBatchResponseBodySize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHRESPONSEBODYSIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxBatchResponseBodySize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max batch size limit for batched JSON-RPC calls. Defaults to ",(0,i.jsx)(n.code,{children:"33554432"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxbatchsize",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxBatchSize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxBatchSize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHSIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxBatchSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of JSON-RPC requests in a batch. Defaults to ",(0,i.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxloggedrequestparameterscharacters",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxLoggedRequestParametersCharacters"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxLoggedRequestParametersCharacters \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGGEDREQUESTPARAMETERSCHARACTERS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxLoggedRequestParametersCharacters": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of characters of a JSON-RPC request parameter printing to the log. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxlogsperresponse",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxLogsPerResponse"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxLogsPerResponse \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGSPERRESPONSE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxLogsPerResponse": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of logs per response for the ",(0,i.jsx)(n.code,{children:"eth_getLogs"})," JSON-RPC method. ",(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxrequestbodysize",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxRequestBodySize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxRequestBodySize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXREQUESTBODYSIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxRequestBodySize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max length of HTTP request body, in bytes. Defaults to ",(0,i.jsx)(n.code,{children:"30000000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxsimulateblockscap",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxSimulateBlocksCap"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxSimulateBlocksCap \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXSIMULATEBLOCKSCAP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxSimulateBlocksCap": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max block count limit for the ",(0,i.jsx)(n.code,{children:"eth_simulate"})," JSON-RPC method. Defaults to ",(0,i.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-methodsloggingfiltering",children:(0,i.jsx)(n.code,{children:"JsonRpc.MethodsLoggingFiltering"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MethodsLoggingFiltering \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_METHODSLOGGINGFILTERING=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MethodsLoggingFiltering": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of the method names not to log. Defaults to ",(0,i.jsx)(n.code,{children:"[engine_newPayloadV1,engine_newPayloadV2,engine_newPayloadV3,engine_forkchoiceUpdatedV1,engine_forkchoiceUpdatedV2]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-port",children:(0,i.jsx)(n.code,{children:"JsonRpc.Port"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_PORT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Port": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The JSON-RPC service HTTP port. Defaults to ",(0,i.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-reportintervalseconds",children:(0,i.jsx)(n.code,{children:"JsonRpc.ReportIntervalSeconds"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.ReportIntervalSeconds \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REPORTINTERVALSECONDS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "ReportIntervalSeconds": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The interval, in seconds, between the JSON-RPC stats report log. Defaults to ",(0,i.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-requestqueuelimit",children:(0,i.jsx)(n.code,{children:"JsonRpc.RequestQueueLimit"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.RequestQueueLimit \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REQUESTQUEUELIMIT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "RequestQueueLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The max number of concurrent requests in the queue for:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_call"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"500"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-rpcrecorderbasefilepath",children:(0,i.jsx)(n.code,{children:"JsonRpc.RpcRecorderBaseFilePath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.RpcRecorderBaseFilePath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERBASEFILEPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "RpcRecorderBaseFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the base file for diagnostic recording. Defaults to ",(0,i.jsx)(n.code,{children:"logs/rpc.{counter}.txt"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-rpcrecorderstate",children:(0,i.jsx)(n.code,{children:"JsonRpc.RpcRecorderState"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.RpcRecorderState \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERSTATE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "RpcRecorderState": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The diagnostic recording mode."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Request"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Response"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-timeout",children:(0,i.jsx)(n.code,{children:"JsonRpc.Timeout"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Timeout \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_TIMEOUT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Timeout": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The request timeout, in milliseconds. Defaults to ",(0,i.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-websocketsport",children:(0,i.jsx)(n.code,{children:"JsonRpc.WebSocketsPort"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_WEBSOCKETSPORT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "WebSocketsPort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The JSON-RPC service WebSockets port. Defaults to ",(0,i.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"keystore",children:"KeyStore"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-blockauthoraccount",children:(0,i.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.BlockAuthorAccount \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_BLOCKAUTHORACCOUNT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "BlockAuthorAccount": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"An account to use as the block author (coinbase)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-cipher",children:(0,i.jsx)(n.code,{children:"KeyStore.Cipher"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.Cipher \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_CIPHER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "Cipher": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"aes-128-ctr"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-enodeaccount",children:(0,i.jsx)(n.code,{children:"KeyStore.EnodeAccount"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.EnodeAccount \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEACCOUNT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "EnodeAccount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An account to use for networking (enode). If neither this nor the ",(0,i.jsx)(n.code,{children:"EnodeKeyFile"})," option is specified, the key is autogenerated in ",(0,i.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-enodekeyfile",children:(0,i.jsx)(n.code,{children:"KeyStore.EnodeKeyFile"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.EnodeKeyFile \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEKEYFILE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "EnodeKeyFile": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the key file to use by for networking (enode). If neither this nor the ",(0,i.jsx)(n.code,{children:"EnodeAccount"})," is specified, the key is autogenerated in ",(0,i.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-ivsize",children:(0,i.jsx)(n.code,{children:"KeyStore.IVSize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.IVSize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_IVSIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "IVSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdf",children:(0,i.jsx)(n.code,{children:"KeyStore.Kdf"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.Kdf \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDF=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "Kdf": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"scrypt"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsdklen",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsDklen"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsDklen \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSDKLEN=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsDklen": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsn",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsN"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsN \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSN=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsN": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"262144"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsp",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsP"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsP \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsP": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsr",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsR"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsR \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSR=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsR": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamssaltlen",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsSaltLen"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsSaltLen \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSSALTLEN=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsSaltLen": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-keystoredirectory",children:(0,i.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KeyStoreDirectory \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREDIRECTORY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KeyStoreDirectory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,i.jsx)(n.code,{children:"keystore"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-keystoreencoding",children:(0,i.jsx)(n.code,{children:"KeyStore.KeyStoreEncoding"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KeyStoreEncoding \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREENCODING=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KeyStoreEncoding": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"UTF-8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-passwordfiles",children:(0,i.jsx)(n.code,{children:"KeyStore.PasswordFiles"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.PasswordFiles \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDFILES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "PasswordFiles": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of password files paths used to unlock the accounts set with ",(0,i.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-passwords",children:(0,i.jsx)(n.code,{children:"KeyStore.Passwords"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.Passwords \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "Passwords": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of passwords used to unlock the accounts set with ",(0,i.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-symmetricencrypterblocksize",children:(0,i.jsx)(n.code,{children:"KeyStore.SymmetricEncrypterBlockSize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterBlockSize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERBLOCKSIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "SymmetricEncrypterBlockSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-symmetricencrypterkeysize",children:(0,i.jsx)(n.code,{children:"KeyStore.SymmetricEncrypterKeySize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterKeySize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERKEYSIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "SymmetricEncrypterKeySize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-testnodekey",children:(0,i.jsx)(n.code,{children:"KeyStore.TestNodeKey"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.TestNodeKey \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_TESTNODEKEY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "TestNodeKey": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"A plaintext private key to use for testing purposes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-unlockaccounts",children:(0,i.jsx)(n.code,{children:"KeyStore.UnlockAccounts"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.UnlockAccounts \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_UNLOCKACCOUNTS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "UnlockAccounts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of accounts to unlock on startup using passwords either in ",(0,i.jsx)(n.code,{children:"PasswordFiles"})," and ",(0,i.jsx)(n.code,{children:"Passwords"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"merge",children:"Merge"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-builderrelayurl",children:(0,i.jsx)(n.code,{children:"Merge.BuilderRelayUrl"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.BuilderRelayUrl \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_BUILDERRELAYURL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "BuilderRelayUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of a builder relay. If specified, blocks are sent to the relay. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-collectionsperdecommit",children:(0,i.jsx)(n.code,{children:"Merge.CollectionsPerDecommit"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.CollectionsPerDecommit \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COLLECTIONSPERDECOMMIT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "CollectionsPerDecommit": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Request the garbage collector (GC) to release the process memory."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"-1"})," to disable"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"0"})," to release every time"]}),"\n",(0,i.jsx)(n.li,{children:"A positive number to release memory after that many Engine API calls"}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"25"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-compactmemory",children:(0,i.jsx)(n.code,{children:"Merge.CompactMemory"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.CompactMemory \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COMPACTMEMORY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "CompactMemory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The memory compaction mode. When set to ",(0,i.jsx)(n.code,{children:"Full"}),", compacts the large object heap (LOH) if ",(0,i.jsx)(n.code,{children:"SweepMemory"})," is set to ",(0,i.jsx)(n.code,{children:"Gen2"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"No"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Yes"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Full"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Yes"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-enabled",children:(0,i.jsx)(n.code,{children:"Merge.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the Merge hard fork. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-finaltotaldifficulty",children:(0,i.jsx)(n.code,{children:"Merge.FinalTotalDifficulty"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.FinalTotalDifficulty \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_FINALTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "FinalTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The total difficulty of the last PoW block. Must be greater than or equal to the terminal total difficulty (TTD). Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-prioritizeblocklatency",children:(0,i.jsx)(n.code,{children:"Merge.PrioritizeBlockLatency"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.PrioritizeBlockLatency \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_PRIORITIZEBLOCKLATENCY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "PrioritizeBlockLatency": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to reduce block latency by disabling garbage collection during Engine API calls. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-sweepmemory",children:(0,i.jsx)(n.code,{children:"Merge.SweepMemory"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.SweepMemory \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_SWEEPMEMORY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "SweepMemory": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The garbage collection (GC) mode between Engine API calls."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"NoGC"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Gen0"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Gen1"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Gen2"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Gen1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-terminalblockhash",children:(0,i.jsx)(n.code,{children:"Merge.TerminalBlockHash"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.TerminalBlockHash \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKHASH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "TerminalBlockHash": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The terminal PoW block hash used for the transition. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-terminalblocknumber",children:(0,i.jsx)(n.code,{children:"Merge.TerminalBlockNumber"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.TerminalBlockNumber \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKNUMBER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "TerminalBlockNumber": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The terminal PoW block number used for the transition."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-terminaltotaldifficulty",children:(0,i.jsx)(n.code,{children:"Merge.TerminalTotalDifficulty"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.TerminalTotalDifficulty \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "TerminalTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The terminal total difficulty (TTD) used for the transition. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"metrics",children:"Metrics"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-countersenabled",children:(0,i.jsx)(n.code,{children:"Metrics.CountersEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.CountersEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_COUNTERSENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "CountersEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to publish metrics using .NET diagnostics that can be collected with dotnet-counters. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-enabled",children:(0,i.jsx)(n.code,{children:"Metrics.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to publish various metrics to Prometheus Pushgateway at a given interval. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-enabledbsizemetrics",children:(0,i.jsx)(n.code,{children:"Metrics.EnableDbSizeMetrics"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.EnableDbSizeMetrics \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLEDBSIZEMETRICS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "EnableDbSizeMetrics": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to publish database size metrics. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-exposehost",children:(0,i.jsx)(n.code,{children:"Metrics.ExposeHost"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.ExposeHost \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEHOST=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "ExposeHost": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The IP address to expose Prometheus metrics at. The value of ",(0,i.jsx)(n.code,{children:"+"})," means listening on all available hostnames. Setting this to ",(0,i.jsx)(n.code,{children:"localhost"})," prevents remote access. Defaults to ",(0,i.jsx)(n.code,{children:"+"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-exposeport",children:(0,i.jsx)(n.code,{children:"Metrics.ExposePort"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.ExposePort \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEPORT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "ExposePort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The port to expose Prometheus metrics at. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-intervalseconds",children:(0,i.jsx)(n.code,{children:"Metrics.IntervalSeconds"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.IntervalSeconds \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_INTERVALSECONDS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "IntervalSeconds": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The frequency of pushing metrics to Prometheus, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-nodename",children:(0,i.jsx)(n.code,{children:"Metrics.NodeName"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.NodeName \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_NODENAME=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "NodeName": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The name to display on the Grafana dashboard. Defaults to ",(0,i.jsx)(n.code,{children:'"Nethermind"'}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-pushgatewayurl",children:(0,i.jsx)(n.code,{children:"Metrics.PushGatewayUrl"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.PushGatewayUrl \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_PUSHGATEWAYURL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "PushGatewayUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The Prometheus Pushgateway instance URL."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"mining",children:"Mining"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mining-enabled",children:(0,i.jsx)(n.code,{children:"Mining.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Mining.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Mining": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to produce blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mining-signer",children:(0,i.jsx)(n.code,{children:"Mining.Signer"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Mining.Signer \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_SIGNER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Mining": {\n "Signer": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of an external signer like ",(0,i.jsx)(n.a,{href:"https://github.com/ethereum/go-ethereum/blob/master/cmd/clef/tutorial.md",children:"Clef"}),". Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"network",children:"Network"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-bootnodes",children:(0,i.jsx)(n.code,{children:"Network.Bootnodes"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.Bootnodes \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_BOOTNODES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "Bootnodes": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"A comma-separated enode list to be used as boot nodes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-diagtracerenabled",children:(0,i.jsx)(n.code,{children:"Network.DiagTracerEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.DiagTracerEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DIAGTRACERENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "DiagTracerEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable a verbose diagnostic tracing. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-discoverydns",children:(0,i.jsx)(n.code,{children:"Network.DiscoveryDns"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryDns \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYDNS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "DiscoveryDns": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Use tree is available through a DNS name. For the default of ",(0,i.jsx)(n.code,{children:".ethdisco.net"}),", leave unspecified. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-discoveryport",children:(0,i.jsx)(n.code,{children:"Network.DiscoveryPort"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYPORT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "DiscoveryPort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The UDP port number for incoming discovery connections. It's recommended to keep it the same as the TCP port (",(0,i.jsx)(n.code,{children:"P2PPort"}),") because other values have not been tested yet. Defaults to ",(0,i.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-enableupnp",children:(0,i.jsx)(n.code,{children:"Network.EnableUPnP"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.EnableUPnP \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ENABLEUPNP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "EnableUPnP": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable automatic port forwarding via UPnP. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-externalip",children:(0,i.jsx)(n.code,{children:"Network.ExternalIp"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.ExternalIp \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_EXTERNALIP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "ExternalIp": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The external IP. Use only when the external IP cannot be resolved automatically. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-localip",children:(0,i.jsx)(n.code,{children:"Network.LocalIp"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.LocalIp \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_LOCALIP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "LocalIp": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The local IP. Use only when the local IP cannot be resolved automatically. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-maxactivepeers",children:(0,i.jsx)(n.code,{children:"Network.MaxActivePeers"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.MaxActivePeers \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "MaxActivePeers": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max allowed number of connected peers. Defaults to ",(0,i.jsx)(n.code,{children:"50"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-maxnettyarenacount",children:(0,i.jsx)(n.code,{children:"Network.MaxNettyArenaCount"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.MaxNettyArenaCount \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXNETTYARENACOUNT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "MaxNettyArenaCount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The maximum DotNetty arena count. Increasing this on a high-core CPU without increasing the memory budget may reduce chunk size so much that it causes a huge memory allocation. Defaults to ",(0,i.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-nettyarenaorder",children:(0,i.jsx)(n.code,{children:"Network.NettyArenaOrder"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.NettyArenaOrder \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_NETTYARENAORDER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "NettyArenaOrder": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The size of the DotNetty arena order. ",(0,i.jsx)(n.code,{children:"-1"})," to depend on the memory hint. Defaults to ",(0,i.jsx)(n.code,{children:"-1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-onlystaticpeers",children:(0,i.jsx)(n.code,{children:"Network.OnlyStaticPeers"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.OnlyStaticPeers \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ONLYSTATICPEERS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "OnlyStaticPeers": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use static peers only. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-p2pport",children:(0,i.jsx)(n.code,{children:"Network.P2PPort"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_P2PPORT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "P2PPort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The TCP port for incoming P2P connections. Defaults to ",(0,i.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-prioritypeersmaxcount",children:(0,i.jsx)(n.code,{children:"Network.PriorityPeersMaxCount"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.PriorityPeersMaxCount \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_PRIORITYPEERSMAXCOUNT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "PriorityPeersMaxCount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of priority peers. Can be overridden by a plugin. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-staticpeers",children:(0,i.jsx)(n.code,{children:"Network.StaticPeers"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.StaticPeers \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_STATICPEERS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "StaticPeers": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["A list of peers to keep connection for. Static peers are affected by ",(0,i.jsx)(n.code,{children:"MaxActivePeers"}),". Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"optimism",children:"Optimism"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"optimism-sequencerurl",children:(0,i.jsx)(n.code,{children:"Optimism.SequencerUrl"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Optimism.SequencerUrl \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_OPTIMISMCONFIG_SEQUENCERURL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Optimism": {\n "SequencerUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The sequencer address. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"pruning",children:"Pruning"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-availablespacecheckenabled",children:(0,i.jsx)(n.code,{children:"Pruning.AvailableSpaceCheckEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.AvailableSpaceCheckEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_AVAILABLESPACECHECKENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "AvailableSpaceCheckEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enables available disk space check. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-cachemb",children:(0,i.jsx)(n.code,{children:"Pruning.CacheMb"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.CacheMb \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_CACHEMB=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "CacheMb": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The in-memory cache size, in MB. The bigger the cache size, the bigger the disk space savings. Defaults to ",(0,i.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningcompletionbehavior",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningCompletionBehavior \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGCOMPLETIONBEHAVIOR=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningCompletionBehavior": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The behavior after pruning completion:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"None"}),": Do nothing."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Shut Nethermind down if pruning has succeeded but leave it running if failed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"AlwaysShutdown"}),": Shut Nethermind down when pruning completes, regardless of its status."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ShutdownOnSuccess"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AlwaysShutdown"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningdisablelowprioritywrites",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningDisableLowPriorityWrites"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningDisableLowPriorityWrites \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGDISABLELOWPRIORITYWRITES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningDisableLowPriorityWrites": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to disable low-priority for pruning writes. Full pruning uses low-priority write operations to prevent blocking block processing. If block processing is not high-priority, set this option to ",(0,i.jsx)(n.code,{children:"true"})," for faster pruning. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningmaxdegreeofparallelism",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningMaxDegreeOfParallelism \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMAXDEGREEOFPARALLELISM=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningMaxDegreeOfParallelism": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The max number of parallel tasks that can be used by full pruning:"}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"-1"})," to use the number of logical processors"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"0"})," to use 25% of logical processors"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"1"})," to run on single thread"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"The recommended value depends on the type of the node:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the node needs to be responsive (serves for RPC or validator), then the recommended value is ",(0,i.jsx)(n.code,{children:"0"})," or ",(0,i.jsx)(n.code,{children:"-1"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["If the node doesn't have many other responsibilities but needs to be able to follow the chain reliably without any delays and produce live logs, the ",(0,i.jsx)(n.code,{children:"0"})," or ",(0,i.jsx)(n.code,{children:"1"})," is recommended."]}),"\n",(0,i.jsxs)(n.li,{children:["If the node doesn't have to be responsive, has very fast I/O (like NVMe) and the shortest pruning time is to be achieved, then ",(0,i.jsx)(n.code,{children:"-1"})," is recommended. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningmemorybudgetmb",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningMemoryBudgetMb \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMEMORYBUDGETMB=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningMemoryBudgetMb": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The memory budget, in MB, used for the trie visit. Increasing this value significantly reduces the IOPS requirement at the expense of memory usage. ",(0,i.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,i.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningminimumdelayhours",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningMinimumDelayHours"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningMinimumDelayHours \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMINIMUMDELAYHOURS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningMinimumDelayHours": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The minimum delay, in hours, between full pruning operations not to exhaust disk writes. Defaults to ",(0,i.jsx)(n.code,{children:"240"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningthresholdmb",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningThresholdMb \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTHRESHOLDMB=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningThresholdMb": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The threshold, in MB, to trigger full pruning. Depends on ",(0,i.jsx)(n.code,{children:"Mode"})," and ",(0,i.jsx)(n.code,{children:"FullPruningTrigger"}),". Defaults to ",(0,i.jsx)(n.code,{children:"256000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningtrigger",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningTrigger"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningTrigger \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTRIGGER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningTrigger": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The full pruning trigger:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Manual"}),": Triggered manually."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"StateDbSize"}),": Trigger when the state DB size is above the threshold."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"VolumeFreeSpace"}),": Trigger when the free disk space where the state DB is stored is below the threshold."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Manual"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"StateDbSize"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VolumeFreeSpace"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Manual"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-mode",children:(0,i.jsx)(n.code,{children:"Pruning.Mode"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.Mode \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_MODE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "Mode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The pruning mode:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"None"}),": No pruning (full archive)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Memory"}),": In-memory pruning"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Full"}),": Full pruning"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Hybrid"}),": Combined in-memory and full pruning"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Memory"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Full"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Hybrid"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Hybrid"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-persistenceinterval",children:(0,i.jsx)(n.code,{children:"Pruning.PersistenceInterval"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.PersistenceInterval \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PERSISTENCEINTERVAL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "PersistenceInterval": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block persistence frequency. If set to ",(0,i.jsx)(n.code,{children:"N"}),", it caches after each ",(0,i.jsx)(n.code,{children:"Nth"})," block even if not required by cache memory usage. Defaults to ",(0,i.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-pruningboundary",children:(0,i.jsx)(n.code,{children:"Pruning.PruningBoundary"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.PruningBoundary \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PRUNINGBOUNDARY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "PruningBoundary": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of past states before the state gets pruned. Used to determine how old of a state to keep from the head. Defaults to ",(0,i.jsx)(n.code,{children:"64"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-trackedpastkeycountmemoryratio",children:(0,i.jsx)(n.code,{children:"Pruning.TrackedPastKeyCountMemoryRatio"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.TrackedPastKeyCountMemoryRatio \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_TRACKEDPASTKEYCOUNTMEMORYRATIO=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "TrackedPastKeyCountMemoryRatio": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The ratio of memory out of ",(0,i.jsx)(n.code,{children:"Pruning.CacheMb"})," to allocate for the LRU cache, used to track past keys for live pruning. Defaults to ",(0,i.jsx)(n.code,{children:"0.1"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"receipt",children:"Receipt"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-compactreceiptstore",children:(0,i.jsx)(n.code,{children:"Receipt.CompactReceiptStore"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.CompactReceiptStore \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTRECEIPTSTORE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "CompactReceiptStore": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to compact receipts database size at the expense of RPC performance. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-compacttxindex",children:(0,i.jsx)(n.code,{children:"Receipt.CompactTxIndex"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.CompactTxIndex \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTTXINDEX=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "CompactTxIndex": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to compact receipts transaction index database size at the expense of RPC performance. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-receiptsmigration",children:(0,i.jsx)(n.code,{children:"Receipt.ReceiptsMigration"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.ReceiptsMigration \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_RECEIPTSMIGRATION=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "ReceiptsMigration": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to migrate the receipts database to the new schema. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-storereceipts",children:(0,i.jsx)(n.code,{children:"Receipt.StoreReceipts"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.StoreReceipts \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_STORERECEIPTS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "StoreReceipts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to store receipts after a new block is processed. This setting is independent from downloading receipts in fast sync mode. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-txlookuplimit",children:(0,i.jsx)(n.code,{children:"Receipt.TxLookupLimit"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.TxLookupLimit \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_TXLOOKUPLIMIT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "TxLookupLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of recent blocks to maintain transaction index for. ",(0,i.jsx)(n.code,{children:"0"})," to never remove indices, ",(0,i.jsx)(n.code,{children:"-1"})," to never index. Defaults to ",(0,i.jsx)(n.code,{children:"2350000"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"seq",children:"Seq"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"seq-apikey",children:(0,i.jsx)(n.code,{children:"Seq.ApiKey"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Seq.ApiKey \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_APIKEY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Seq": {\n "ApiKey": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The Seq API key."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"seq-minlevel",children:(0,i.jsx)(n.code,{children:"Seq.MinLevel"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Seq.MinLevel \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_MINLEVEL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Seq": {\n "MinLevel": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The min log level to sent to Seq. Defaults to ",(0,i.jsx)(n.code,{children:"Off"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"seq-serverurl",children:(0,i.jsx)(n.code,{children:"Seq.ServerUrl"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Seq.ServerUrl \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_SERVERURL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Seq": {\n "ServerUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Seq instance URL. Defaults to ",(0,i.jsx)(n.code,{children:"http://localhost:5341"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"snapshot",children:"Snapshot"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-checksum",children:(0,i.jsx)(n.code,{children:"Snapshot.Checksum"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.Checksum \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_CHECKSUM=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "Checksum": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The SHA-256 checksum of the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-downloadurl",children:(0,i.jsx)(n.code,{children:"Snapshot.DownloadUrl"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.DownloadUrl \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_DOWNLOADURL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "DownloadUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-enabled",children:(0,i.jsx)(n.code,{children:"Snapshot.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the Snapshot plugin. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-snapshotdirectory",children:(0,i.jsx)(n.code,{children:"Snapshot.SnapshotDirectory"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.SnapshotDirectory \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTDIRECTORY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "SnapshotDirectory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the directory to store the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"snapshot"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-snapshotfilename",children:(0,i.jsx)(n.code,{children:"Snapshot.SnapshotFileName"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.SnapshotFileName \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTFILENAME=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "SnapshotFileName": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The name of the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"snapshot.zip"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"sync",children:"Sync"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-ancientbodiesbarrier",children:(0,i.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.AncientBodiesBarrier \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "AncientBodiesBarrier": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The earliest body downloaded with fast sync when ",(0,i.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, AncientBodiesBarrier } }\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-ancientreceiptsbarrier",children:(0,i.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.AncientReceiptsBarrier \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "AncientReceiptsBarrier": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The earliest receipt downloaded with fast sync when ",(0,i.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, max{ AncientBodiesBarrier, AncientReceiptsBarrier } } }\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-blocksdbtunedbmode",children:(0,i.jsx)(n.code,{children:"Sync.BlocksDbTuneDbMode"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.BlocksDbTuneDbMode \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_BLOCKSDBTUNEDBMODE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "BlocksDbTuneDbMode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Configure the blocks database for write optimizations during sync."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Default"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"EnableBlobFiles"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-downloadbodiesinfastsync",children:(0,i.jsx)(n.code,{children:"Sync.DownloadBodiesInFastSync"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNC=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "DownloadBodiesInFastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download the block bodies in the Fast sync mode. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-downloadheadersinfastsync",children:(0,i.jsx)(n.code,{children:"Sync.DownloadHeadersInFastSync"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.DownloadHeadersInFastSync \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADHEADERSINFASTSYNC=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "DownloadHeadersInFastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download the old block headers in the Fast sync mode. If ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind downloads only recent blocks headers. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-downloadreceiptsinfastsync",children:(0,i.jsx)(n.code,{children:"Sync.DownloadReceiptsInFastSync"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.DownloadReceiptsInFastSync \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNC=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "DownloadReceiptsInFastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download receipts in the Fast sync mode. This slows down the process by a few hours but allows to interact with dApps that perform extensive historical logs searches. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-exitonsynced",children:(0,i.jsx)(n.code,{children:"Sync.ExitOnSynced"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.ExitOnSynced \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "ExitOnSynced": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to shut down Nethermind once sync is finished. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-exitonsyncedwaittimesec",children:(0,i.jsx)(n.code,{children:"Sync.ExitOnSyncedWaitTimeSec"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.ExitOnSyncedWaitTimeSec \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCEDWAITTIMESEC=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "ExitOnSyncedWaitTimeSec": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The time, in seconds, to wait before shutting down Nethermind once sync is finished. Defaults to ",(0,i.jsx)(n.code,{children:"60"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fastsync",children:(0,i.jsx)(n.code,{children:"Sync.FastSync"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FastSync \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNC=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use the Fast sync mode (the eth/63 synchronization algorithm). Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fastsynccatchupheightdelta",children:(0,i.jsx)(n.code,{children:"Sync.FastSyncCatchUpHeightDelta"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FastSyncCatchUpHeightDelta \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNCCATCHUPHEIGHTDELTA=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FastSyncCatchUpHeightDelta": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["In Fast sync mode, the min height threshold limit up to which the Full sync, if already on, stays on when the chain is behind the network head. If the limit is exceeded, it switches back to Fast sync. For regular usage scenarios, setting this value lower than 32 is not recommended as this can cause issues with chain reorgs. Note that the last 2 blocks are always processed in Full sync, so setting it lower than 2 has no effect. Defaults to ",(0,i.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixreceipts",children:(0,i.jsx)(n.code,{children:"Sync.FixReceipts"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixReceipts \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXRECEIPTS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixReceipts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable receipts validation that checks for receipts that might be missing because of a bug. If needed, receipts are downloaded from the network. If ",(0,i.jsx)(n.code,{children:"true"}),", the pivot number must be same one used originally as it's used as a cut-off point. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixtotaldifficulty",children:(0,i.jsx)(n.code,{children:"Sync.FixTotalDifficulty"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixTotalDifficulty \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to recalculate the total difficulty from ",(0,i.jsx)(n.code,{children:"FixTotalDifficultyStartingBlock"})," to ",(0,i.jsx)(n.code,{children:"FixTotalDifficultyLastBlock"}),". Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixtotaldifficultylastblock",children:(0,i.jsx)(n.code,{children:"Sync.FixTotalDifficultyLastBlock"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixTotalDifficultyLastBlock \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYLASTBLOCK=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixTotalDifficultyLastBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The last block to recalculate the total difficulty for. If not specified, the best known block is used.\nDefaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixtotaldifficultystartingblock",children:(0,i.jsx)(n.code,{children:"Sync.FixTotalDifficultyStartingBlock"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixTotalDifficultyStartingBlock \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYSTARTINGBLOCK=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixTotalDifficultyStartingBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The first block to recalculate the total difficulty for. Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-maxattemptstoupdatepivot",children:(0,i.jsx)(n.code,{children:"Sync.MaxAttemptsToUpdatePivot"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.MaxAttemptsToUpdatePivot \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXATTEMPTSTOUPDATEPIVOT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "MaxAttemptsToUpdatePivot": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of attempts to update the pivot block based on the FCU message from the consensus client. Defaults to ",(0,i.jsx)(n.code,{children:"2147483647"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-maxprocessingthreads",children:(0,i.jsx)(n.code,{children:"Sync.MaxProcessingThreads"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.MaxProcessingThreads \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXPROCESSINGTHREADS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "MaxProcessingThreads": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of threads used for syncing. ",(0,i.jsx)(n.code,{children:"0"})," to use the number of logical processors. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-networkingenabled",children:(0,i.jsx)(n.code,{children:"Sync.NetworkingEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.NetworkingEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NETWORKINGENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "NetworkingEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to connect to peers and sync. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-nonvalidatornode",children:(0,i.jsx)(n.code,{children:"Sync.NonValidatorNode"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.NonValidatorNode \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NONVALIDATORNODE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "NonValidatorNode": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to operate as a non-validator. If ",(0,i.jsx)(n.code,{children:"true"}),", the ",(0,i.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," and ",(0,i.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," can be set to ",(0,i.jsx)(n.code,{children:"false"}),". Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-pivothash",children:(0,i.jsx)(n.code,{children:"Sync.PivotHash"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.PivotHash \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTHASH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "PivotHash": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The hash of the pivot block for the Fast sync mode. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-pivotnumber",children:(0,i.jsx)(n.code,{children:"Sync.PivotNumber"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.PivotNumber \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTNUMBER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "PivotNumber": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of the pivot block for the Fast sync mode. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-pivottotaldifficulty",children:(0,i.jsx)(n.code,{children:"Sync.PivotTotalDifficulty"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.PivotTotalDifficulty \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "PivotTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The total difficulty of the pivot block for the Fast sync mode. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-snapsync",children:(0,i.jsx)(n.code,{children:"Sync.SnapSync"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.SnapSync \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNC=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "SnapSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use the Snap sync mode. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-snapsyncaccountrangepartitioncount",children:(0,i.jsx)(n.code,{children:"Sync.SnapSyncAccountRangePartitionCount"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.SnapSyncAccountRangePartitionCount \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNCACCOUNTRANGEPARTITIONCOUNT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "SnapSyncAccountRangePartitionCount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of account range partitions to create. Increases the Snap sync request concurrency. Allowed values are between between 1 and 256. Defaults to ",(0,i.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-strictmode",children:(0,i.jsx)(n.code,{children:"Sync.StrictMode"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.StrictMode \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_STRICTMODE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "StrictMode": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to disable some optimizations and do a more extensive sync. Useful when sync state is corrupted. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-synchronizationenabled",children:(0,i.jsx)(n.code,{children:"Sync.SynchronizationEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.SynchronizationEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SYNCHRONIZATIONENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "SynchronizationEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download and process new blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-tunedbmode",children:(0,i.jsx)(n.code,{children:"Sync.TuneDbMode"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.TuneDbMode \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_TUNEDBMODE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "TuneDbMode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Configure the database for write optimizations during sync. Significantly reduces the total number of writes and sync time if you are not network limited."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Default"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"HeavyWrite"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-usegethlimitsinfastblocks",children:(0,i.jsx)(n.code,{children:"Sync.UseGethLimitsInFastBlocks"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.UseGethLimitsInFastBlocks \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "UseGethLimitsInFastBlocks": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to make smaller requests, in Fast Blocks mode, to avoid Geth from disconnecting. On the Geth-heavy networks (e.g., Mainnet), it's a desired behavior while on Nethermind- or OpenEthereum-heavy networks (Aura), it slows down the sync by a factor of ~4. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"tracestore",children:"TraceStore"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-blockstokeep",children:(0,i.jsx)(n.code,{children:"TraceStore.BlocksToKeep"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.BlocksToKeep \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_BLOCKSTOKEEP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "BlocksToKeep": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of blocks to store, counting from the head. If ",(0,i.jsx)(n.code,{children:"0"}),", all traces of the processed blocks are stored. Defaults to ",(0,i.jsx)(n.code,{children:"10000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-deserializationparallelization",children:(0,i.jsx)(n.code,{children:"TraceStore.DeserializationParallelization"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.DeserializationParallelization \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_DESERIALIZATIONPARALLELIZATION=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "DeserializationParallelization": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max parallelization when deserialization requests the ",(0,i.jsx)(n.code,{children:"trace_filter"})," method. ",(0,i.jsx)(n.code,{children:"0"})," to use the number of logical processors. If you experience a resource shortage, set to a low number. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-enabled",children:(0,i.jsx)(n.code,{children:"TraceStore.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the TraceStore plugin. If enabled, traces come from the database whenever possible. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-tracetypes",children:(0,i.jsx)(n.code,{children:"TraceStore.TraceTypes"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.TraceTypes \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_TRACETYPES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "TraceTypes": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The type of traces to store."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VmTrace"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"StateDiff"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Trace"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Rewards"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Trace, Rewards"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"txpool",children:"TxPool"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-blobcachesize",children:(0,i.jsx)(n.code,{children:"TxPool.BlobCacheSize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.BlobCacheSize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBCACHESIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "BlobCacheSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of full blob transactions cached in memory. The default value uses max 200MB for 6 blobs where one blob is 33MB (256 * 128KB) Defaults to ",(0,i.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-blobssupport",children:(0,i.jsx)(n.code,{children:"TxPool.BlobsSupport"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.BlobsSupport \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBSSUPPORT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "BlobsSupport": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Blobs support mode:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Disabled"}),": No support for blob transactions"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"InMemory"}),": Blob transactions stored only in memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Storage"}),": Blob transactions stored in db"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"StorageWithReorgs"}),": Blob transactions stored in db with support for restoring reorganized blob transactions to blob pool"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Disabled"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"InMemory"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Storage"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"StorageWithReorgs"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"StorageWithReorgs"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-gaslimit",children:(0,i.jsx)(n.code,{children:"TxPool.GasLimit"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.GasLimit \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_GASLIMIT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "GasLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max transaction gas allowed. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-hashcachesize",children:(0,i.jsx)(n.code,{children:"TxPool.HashCacheSize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.HashCacheSize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_HASHCACHESIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "HashCacheSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of cached hashes of already known transactions. Set automatically by the memory hint. Defaults to ",(0,i.jsx)(n.code,{children:"524288"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-inmemoryblobpoolsize",children:(0,i.jsx)(n.code,{children:"TxPool.InMemoryBlobPoolSize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.InMemoryBlobPoolSize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_INMEMORYBLOBPOOLSIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "InMemoryBlobPoolSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of full blob transactions stored in memory. Used only if persistent storage is disabled. Defaults to ",(0,i.jsx)(n.code,{children:"512"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-maxpendingblobtxspersender",children:(0,i.jsx)(n.code,{children:"TxPool.MaxPendingBlobTxsPerSender"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.MaxPendingBlobTxsPerSender \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGBLOBTXSPERSENDER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "MaxPendingBlobTxsPerSender": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of pending blob transactions per single sender. ",(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-maxpendingtxspersender",children:(0,i.jsx)(n.code,{children:"TxPool.MaxPendingTxsPerSender"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.MaxPendingTxsPerSender \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGTXSPERSENDER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "MaxPendingTxsPerSender": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of pending transactions per single sender. ",(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-minbasefeethreshold",children:(0,i.jsx)(n.code,{children:"TxPool.MinBaseFeeThreshold"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.MinBaseFeeThreshold \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MINBASEFEETHRESHOLD=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "MinBaseFeeThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The minimal percentage of the current base fee that must be surpassed by the max fee (",(0,i.jsx)(n.code,{children:"max_fee_per_gas"}),") for the transaction to be broadcasted. Defaults to ",(0,i.jsx)(n.code,{children:"70"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-peernotificationthreshold",children:(0,i.jsx)(n.code,{children:"TxPool.PeerNotificationThreshold"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.PeerNotificationThreshold \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PEERNOTIFICATIONTHRESHOLD=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "PeerNotificationThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The average percentage of transaction hashes from persistent broadcast sent to a peer together with hashes of the last added transactions. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-persistentblobstoragesize",children:(0,i.jsx)(n.code,{children:"TxPool.PersistentBlobStorageSize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.PersistentBlobStorageSize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PERSISTENTBLOBSTORAGESIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "PersistentBlobStorageSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of full blob transactions stored in the database (increasing the number of transactions in the blob pool also results in higher memory usage). The default value uses max 13GB for 6 blobs where one blob is 2GB (16386 * 128KB). Defaults to ",(0,i.jsx)(n.code,{children:"16384"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-reportminutes",children:(0,i.jsx)(n.code,{children:"TxPool.ReportMinutes"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.ReportMinutes \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_REPORTMINUTES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "ReportMinutes": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The current transaction pool state reporting interval, in minutes. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-size",children:(0,i.jsx)(n.code,{children:"TxPool.Size"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.Size \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_SIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "Size": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of transactions held in the mempool (the more transactions in the mempool, the more memory used). Defaults to ",(0,i.jsx)(n.code,{children:"2048"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"wallet",children:"Wallet"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"wallet-devaccounts",children:(0,i.jsx)(n.code,{children:"Wallet.DevAccounts"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Wallet.DevAccounts \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_WALLETCONFIG_DEVACCOUNTS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Wallet": {\n "DevAccounts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of autogenerated developer accounts to work with. Developer accounts have private keys from ",(0,i.jsx)(n.code,{children:"00...01"})," to ",(0,i.jsx)(n.code,{children:"00...n"}),". Defaults to ",(0,i.jsx)(n.code,{children:"10"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"environment-variables",children:"Environment variables"}),"\n",(0,i.jsx)(n.p,{children:"To configure Nethermind using environment variables, the following naming convention is used in all uppercase:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-text",children:"NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}\n"})}),"\n",(0,i.jsxs)(n.p,{children:["For instance, the environment variable equivalent of the command line ",(0,i.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile"})," option is ",(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"}),". For the list of configuration namespaces and their options, see ",(0,i.jsx)(n.a,{href:"#options-by-namespaces",children:"Options by namespaces"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"configuration-file",children:"Configuration file"}),"\n",(0,i.jsxs)(n.p,{children:["The configuration file is a JSON file with ",(0,i.jsx)(n.code,{children:".cfg"})," extension. The bundled configuration files are located in the ",(0,i.jsx)(n.code,{children:"configs"})," directory and named after the network they are used for. For instance, see the Mainnet configuration file ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:(0,i.jsx)(n.code,{children:"mainnet.cfg"})}),"."]})]})}function j(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}},9365:(e,n,l)=>{l.d(n,{A:()=>r});l(6540);var i=l(4164);const s={tabItem:"tabItem_Ymn6"};var c=l(4848);function r(e){let{children:n,hidden:l,className:r}=e;return(0,c.jsx)("div",{role:"tabpanel",className:(0,i.A)(s.tabItem,r),hidden:l,children:n})}},1470:(e,n,l)=>{l.d(n,{A:()=>I});var i=l(6540),s=l(4164),c=l(3104),r=l(6347),d=l(205),a=l(7485),o=l(1682),h=l(679);function t(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:l}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:l,attributes:i,default:s}}=e;return{value:n,label:l,attributes:i,default:s}}))}(l);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,l])}function j(e){let{value:n,tabValues:l}=e;return l.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:l}=e;const s=(0,r.W6)(),c=function(e){let{queryString:n=!1,groupId:l}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!l)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return l??null}({queryString:n,groupId:l});return[(0,a.aZ)(c),(0,i.useCallback)((e=>{if(!c)return;const n=new URLSearchParams(s.location.search);n.set(c,e),s.replace({...s.location,search:n.toString()})}),[c,s])]}function v(e){const{defaultValue:n,queryString:l=!1,groupId:s}=e,c=x(e),[r,a]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:l}=e;if(0===l.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:l}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${l.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=l.find((e=>e.default))??l[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:c}))),[o,t]=u({queryString:l,groupId:s}),[v,p]=function(e){let{groupId:n}=e;const l=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,c]=(0,h.Dv)(l);return[s,(0,i.useCallback)((e=>{l&&c.set(e)}),[l,c])]}({groupId:s}),g=(()=>{const e=o??v;return j({value:e,tabValues:c})?e:null})();(0,d.A)((()=>{g&&a(g)}),[g]);return{selectedValue:r,selectValue:(0,i.useCallback)((e=>{if(!j({value:e,tabValues:c}))throw new Error(`Can't select invalid tab value=${e}`);a(e),t(e),p(e)}),[t,p,c]),tabValues:c}}var p=l(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=l(4848);function f(e){let{className:n,block:l,selectedValue:i,selectValue:r,tabValues:d}=e;const a=[],{blockElementScrollPositionUntilNextRender:o}=(0,c.a_)(),h=e=>{const n=e.currentTarget,l=a.indexOf(n),s=d[l].value;s!==i&&(o(n),r(s))},t=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const l=a.indexOf(e.currentTarget)+1;n=a[l]??a[0];break}case"ArrowLeft":{const l=a.indexOf(e.currentTarget)-1;n=a[l]??a[a.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":l},n),children:d.map((e=>{let{value:n,label:l,attributes:c}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>a.push(e),onKeyDown:t,onClick:h,...c,className:(0,s.A)("tabs__item",g.tabItem,c?.className,{"tabs__item--active":i===n}),children:l??n},n)}))})}function m(e){let{lazy:n,children:l,selectedValue:c}=e;const r=(Array.isArray(l)?l:[l]).filter(Boolean);if(n){const e=r.find((e=>e.props.value===c));return e?(0,i.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:r.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==c})))})}function E(e){const n=v(e);return(0,b.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(m,{...n,...e})]})}function I(e){const n=(0,p.A)();return(0,b.jsx)(E,{...e,children:t(e.children)},String(n))}},8453:(e,n,l)=>{l.d(n,{R:()=>r,x:()=>d});var i=l(6540);const s={},c=i.createContext(s);function r(e){const n=i.useContext(c);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(c.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2963],{9954:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>h,contentTitle:()=>a,default:()=>j,frontMatter:()=>d,metadata:()=>o,toc:()=>t});var i=l(4848),s=l(8453),c=l(1470),r=l(9365);const d={title:"Configuration",sidebar_position:1},a=void 0,o={id:"fundamentals/configuration",title:"Configuration",description:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:",source:"@site/versioned_docs/version-1.29.0/fundamentals/configuration.md",sourceDirName:"fundamentals",slug:"/fundamentals/configuration",permalink:"/fundamentals/configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/configuration.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Configuration",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Migrating from Geth",permalink:"/get-started/migrating-from-geth"},next:{title:"Sync",permalink:"/fundamentals/sync"}},h={},t=[{value:"Basic command line options",id:"basic-command-line-options",level:2},{value:"-d, --baseDbPath <path>",id:"basedbpath",level:4},{value:"-c, --config <value>",id:"config",level:4},{value:"-cd, --configsDirectory <path>",id:"configs-directory",level:4},{value:"-dd, --datadir <path>",id:"datadir",level:4},{value:"-?, -h, --help",id:"help",level:4},{value:"-l, --log <level>",id:"log",level:4},{value:"-lcs, --loggerConfigSource <path>",id:"loggerconfigsource",level:4},{value:"-pd, --pluginsDirectory <path>",id:"pluginsdirectory",level:4},{value:"-v, --version",id:"version",level:4},{value:"Options by namespaces",id:"options-by-namespaces",level:2},{value:"Aura",id:"aura",level:3},{value:"Aura.AllowAuRaPrivateChains",id:"aura-allowauraprivatechains",level:4},{value:"Aura.ForceSealing",id:"aura-forcesealing",level:4},{value:"Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract",id:"aura-minimum2mlngasperblockwhenusingblockgaslimitcontract",level:4},{value:"Aura.TxPriorityConfigFilePath",id:"aura-txpriorityconfigfilepath",level:4},{value:"Aura.TxPriorityContractAddress",id:"aura-txprioritycontractaddress",level:4},{value:"Blocks",id:"blocks",level:3},{value:"Blocks.BlockProductionTimeoutMs",id:"blocks-blockproductiontimeoutms",level:4},{value:"Blocks.ExtraData",id:"blocks-extradata",level:4},{value:"Blocks.GenesisTimeoutMs",id:"blocks-genesistimeoutms",level:4},{value:"Blocks.MinGasPrice",id:"blocks-mingasprice",level:4},{value:"Blocks.PreWarmStateOnBlockProcessing",id:"blocks-prewarmstateonblockprocessing",level:4},{value:"Blocks.RandomizedBlocks",id:"blocks-randomizedblocks",level:4},{value:"Blocks.SecondsPerSlot",id:"blocks-secondsperslot",level:4},{value:"Blocks.TargetBlockGasLimit",id:"blocks-targetblockgaslimit",level:4},{value:"Bloom",id:"bloom",level:3},{value:"Bloom.Index",id:"bloom-index",level:4},{value:"Bloom.IndexLevelBucketSizes",id:"bloom-indexlevelbucketsizes",level:4},{value:"Bloom.Migration",id:"bloom-migration",level:4},{value:"Bloom.MigrationStatistics",id:"bloom-migrationstatistics",level:4},{value:"CensorshipDetector",id:"censorshipdetector",level:3},{value:"CensorshipDetector.AddressesForCensorshipDetection",id:"censorshipdetector-addressesforcensorshipdetection",level:4},{value:"CensorshipDetector.BlockCensorshipThreshold",id:"censorshipdetector-blockcensorshipthreshold",level:4},{value:"CensorshipDetector.Enabled",id:"censorshipdetector-enabled",level:4},{value:"EthStats",id:"ethstats",level:3},{value:"EthStats.Contact",id:"ethstats-contact",level:4},{value:"EthStats.Enabled",id:"ethstats-enabled",level:4},{value:"EthStats.Name",id:"ethstats-name",level:4},{value:"EthStats.Secret",id:"ethstats-secret",level:4},{value:"EthStats.SendInterval",id:"ethstats-sendinterval",level:4},{value:"EthStats.Server",id:"ethstats-server",level:4},{value:"HealthChecks",id:"healthchecks",level:3},{value:"HealthChecks.Enabled",id:"healthchecks-enabled",level:4},{value:"HealthChecks.LowStorageCheckAwaitOnStartup",id:"healthchecks-lowstoragecheckawaitonstartup",level:4},{value:"HealthChecks.LowStorageSpaceShutdownThreshold",id:"healthchecks-lowstoragespaceshutdownthreshold",level:4},{value:"HealthChecks.LowStorageSpaceWarningThreshold",id:"healthchecks-lowstoragespacewarningthreshold",level:4},{value:"HealthChecks.MaxIntervalClRequestTime",id:"healthchecks-maxintervalclrequesttime",level:4},{value:"HealthChecks.MaxIntervalWithoutProcessedBlock",id:"healthchecks-maxintervalwithoutprocessedblock",level:4},{value:"HealthChecks.MaxIntervalWithoutProducedBlock",id:"healthchecks-maxintervalwithoutproducedblock",level:4},{value:"HealthChecks.PollingInterval",id:"healthchecks-pollinginterval",level:4},{value:"HealthChecks.Slug",id:"healthchecks-slug",level:4},{value:"HealthChecks.UIEnabled",id:"healthchecks-uienabled",level:4},{value:"HealthChecks.WebhooksEnabled",id:"healthchecks-webhooksenabled",level:4},{value:"HealthChecks.WebhooksPayload",id:"healthchecks-webhookspayload",level:4},{value:"HealthChecks.WebhooksRestorePayload",id:"healthchecks-webhooksrestorepayload",level:4},{value:"HealthChecks.WebhooksUri",id:"healthchecks-webhooksuri",level:4},{value:"Hive",id:"hive",level:3},{value:"Hive.BlocksDir",id:"hive-blocksdir",level:4},{value:"Hive.ChainFile",id:"hive-chainfile",level:4},{value:"Hive.Enabled",id:"hive-enabled",level:4},{value:"Hive.GenesisFilePath",id:"hive-genesisfilepath",level:4},{value:"Hive.KeysDir",id:"hive-keysdir",level:4},{value:"Init",id:"init",level:3},{value:"Init.AutoDump",id:"init-autodump",level:4},{value:"Init.BadBlocksStored",id:"init-badblocksstored",level:4},{value:"Init.BaseDbPath",id:"init-basedbpath",level:4},{value:"Init.ChainSpecPath",id:"init-chainspecpath",level:4},{value:"Init.DiagnosticMode",id:"init-diagnosticmode",level:4},{value:"Init.DiscoveryEnabled",id:"init-discoveryenabled",level:4},{value:"Init.EnableUnsecuredDevWallet",id:"init-enableunsecureddevwallet",level:4},{value:"Init.GenesisHash",id:"init-genesishash",level:4},{value:"Init.HiveChainSpecPath",id:"init-hivechainspecpath",level:4},{value:"Init.IsMining",id:"init-ismining",level:4},{value:"Init.KeepDevWalletInMemory",id:"init-keepdevwalletinmemory",level:4},{value:"Init.KzgSetupPath",id:"init-kzgsetuppath",level:4},{value:"Init.LogDirectory",id:"init-logdirectory",level:4},{value:"Init.LogFileName",id:"init-logfilename",level:4},{value:"Init.LogRules",id:"init-logrules",level:4},{value:"Init.MemoryHint",id:"init-memoryhint",level:4},{value:"Init.PeerManagerEnabled",id:"init-peermanagerenabled",level:4},{value:"Init.ProcessingEnabled",id:"init-processingenabled",level:4},{value:"Init.RpcDbUrl",id:"init-rpcdburl",level:4},{value:"Init.StaticNodesPath",id:"init-staticnodespath",level:4},{value:"Init.WebSocketsEnabled",id:"init-websocketsenabled",level:4},{value:"JsonRpc",id:"jsonrpc",level:3},{value:"JsonRpc.AdditionalRpcUrls",id:"jsonrpc-additionalrpcurls",level:4},{value:"JsonRpc.BufferResponses",id:"jsonrpc-bufferresponses",level:4},{value:"JsonRpc.CallsFilterFilePath",id:"jsonrpc-callsfilterfilepath",level:4},{value:"JsonRpc.Enabled",id:"jsonrpc-enabled",level:4},{value:"JsonRpc.EnabledModules",id:"jsonrpc-enabledmodules",level:4},{value:"JsonRpc.EngineEnabledModules",id:"jsonrpc-engineenabledmodules",level:4},{value:"JsonRpc.EngineHost",id:"jsonrpc-enginehost",level:4},{value:"JsonRpc.EnginePort",id:"jsonrpc-engineport",level:4},{value:"JsonRpc.EstimateErrorMargin",id:"jsonrpc-estimateerrormargin",level:4},{value:"JsonRpc.EthModuleConcurrentInstances",id:"jsonrpc-ethmoduleconcurrentinstances",level:4},{value:"JsonRpc.GasCap",id:"jsonrpc-gascap",level:4},{value:"JsonRpc.Host",id:"jsonrpc-host",level:4},{value:"JsonRpc.IpcUnixDomainSocketPath",id:"jsonrpc-ipcunixdomainsocketpath",level:4},{value:"JsonRpc.JwtSecretFile",id:"jsonrpc-jwtsecretfile",level:4},{value:"JsonRpc.MaxBatchResponseBodySize",id:"jsonrpc-maxbatchresponsebodysize",level:4},{value:"JsonRpc.MaxBatchSize",id:"jsonrpc-maxbatchsize",level:4},{value:"JsonRpc.MaxLoggedRequestParametersCharacters",id:"jsonrpc-maxloggedrequestparameterscharacters",level:4},{value:"JsonRpc.MaxLogsPerResponse",id:"jsonrpc-maxlogsperresponse",level:4},{value:"JsonRpc.MaxRequestBodySize",id:"jsonrpc-maxrequestbodysize",level:4},{value:"JsonRpc.MaxSimulateBlocksCap",id:"jsonrpc-maxsimulateblockscap",level:4},{value:"JsonRpc.MethodsLoggingFiltering",id:"jsonrpc-methodsloggingfiltering",level:4},{value:"JsonRpc.Port",id:"jsonrpc-port",level:4},{value:"JsonRpc.ReportIntervalSeconds",id:"jsonrpc-reportintervalseconds",level:4},{value:"JsonRpc.RequestQueueLimit",id:"jsonrpc-requestqueuelimit",level:4},{value:"JsonRpc.RpcRecorderBaseFilePath",id:"jsonrpc-rpcrecorderbasefilepath",level:4},{value:"JsonRpc.RpcRecorderState",id:"jsonrpc-rpcrecorderstate",level:4},{value:"JsonRpc.Timeout",id:"jsonrpc-timeout",level:4},{value:"JsonRpc.WebSocketsPort",id:"jsonrpc-websocketsport",level:4},{value:"KeyStore",id:"keystore",level:3},{value:"KeyStore.BlockAuthorAccount",id:"keystore-blockauthoraccount",level:4},{value:"KeyStore.Cipher",id:"keystore-cipher",level:4},{value:"KeyStore.EnodeAccount",id:"keystore-enodeaccount",level:4},{value:"KeyStore.EnodeKeyFile",id:"keystore-enodekeyfile",level:4},{value:"KeyStore.IVSize",id:"keystore-ivsize",level:4},{value:"KeyStore.Kdf",id:"keystore-kdf",level:4},{value:"KeyStore.KdfparamsDklen",id:"keystore-kdfparamsdklen",level:4},{value:"KeyStore.KdfparamsN",id:"keystore-kdfparamsn",level:4},{value:"KeyStore.KdfparamsP",id:"keystore-kdfparamsp",level:4},{value:"KeyStore.KdfparamsR",id:"keystore-kdfparamsr",level:4},{value:"KeyStore.KdfparamsSaltLen",id:"keystore-kdfparamssaltlen",level:4},{value:"KeyStore.KeyStoreDirectory",id:"keystore-keystoredirectory",level:4},{value:"KeyStore.KeyStoreEncoding",id:"keystore-keystoreencoding",level:4},{value:"KeyStore.PasswordFiles",id:"keystore-passwordfiles",level:4},{value:"KeyStore.Passwords",id:"keystore-passwords",level:4},{value:"KeyStore.SymmetricEncrypterBlockSize",id:"keystore-symmetricencrypterblocksize",level:4},{value:"KeyStore.SymmetricEncrypterKeySize",id:"keystore-symmetricencrypterkeysize",level:4},{value:"KeyStore.TestNodeKey",id:"keystore-testnodekey",level:4},{value:"KeyStore.UnlockAccounts",id:"keystore-unlockaccounts",level:4},{value:"Merge",id:"merge",level:3},{value:"Merge.BuilderRelayUrl",id:"merge-builderrelayurl",level:4},{value:"Merge.CollectionsPerDecommit",id:"merge-collectionsperdecommit",level:4},{value:"Merge.CompactMemory",id:"merge-compactmemory",level:4},{value:"Merge.Enabled",id:"merge-enabled",level:4},{value:"Merge.FinalTotalDifficulty",id:"merge-finaltotaldifficulty",level:4},{value:"Merge.PrioritizeBlockLatency",id:"merge-prioritizeblocklatency",level:4},{value:"Merge.SweepMemory",id:"merge-sweepmemory",level:4},{value:"Merge.TerminalBlockHash",id:"merge-terminalblockhash",level:4},{value:"Merge.TerminalBlockNumber",id:"merge-terminalblocknumber",level:4},{value:"Merge.TerminalTotalDifficulty",id:"merge-terminaltotaldifficulty",level:4},{value:"Metrics",id:"metrics",level:3},{value:"Metrics.CountersEnabled",id:"metrics-countersenabled",level:4},{value:"Metrics.Enabled",id:"metrics-enabled",level:4},{value:"Metrics.EnableDbSizeMetrics",id:"metrics-enabledbsizemetrics",level:4},{value:"Metrics.ExposeHost",id:"metrics-exposehost",level:4},{value:"Metrics.ExposePort",id:"metrics-exposeport",level:4},{value:"Metrics.IntervalSeconds",id:"metrics-intervalseconds",level:4},{value:"Metrics.NodeName",id:"metrics-nodename",level:4},{value:"Metrics.PushGatewayUrl",id:"metrics-pushgatewayurl",level:4},{value:"Mining",id:"mining",level:3},{value:"Mining.Enabled",id:"mining-enabled",level:4},{value:"Mining.Signer",id:"mining-signer",level:4},{value:"Network",id:"network",level:3},{value:"Network.Bootnodes",id:"network-bootnodes",level:4},{value:"Network.DiagTracerEnabled",id:"network-diagtracerenabled",level:4},{value:"Network.DiscoveryDns",id:"network-discoverydns",level:4},{value:"Network.DiscoveryPort",id:"network-discoveryport",level:4},{value:"Network.EnableUPnP",id:"network-enableupnp",level:4},{value:"Network.ExternalIp",id:"network-externalip",level:4},{value:"Network.LocalIp",id:"network-localip",level:4},{value:"Network.MaxActivePeers",id:"network-maxactivepeers",level:4},{value:"Network.MaxNettyArenaCount",id:"network-maxnettyarenacount",level:4},{value:"Network.NettyArenaOrder",id:"network-nettyarenaorder",level:4},{value:"Network.OnlyStaticPeers",id:"network-onlystaticpeers",level:4},{value:"Network.P2PPort",id:"network-p2pport",level:4},{value:"Network.PriorityPeersMaxCount",id:"network-prioritypeersmaxcount",level:4},{value:"Network.StaticPeers",id:"network-staticpeers",level:4},{value:"Optimism",id:"optimism",level:3},{value:"Optimism.SequencerUrl",id:"optimism-sequencerurl",level:4},{value:"Pruning",id:"pruning",level:3},{value:"Pruning.AvailableSpaceCheckEnabled",id:"pruning-availablespacecheckenabled",level:4},{value:"Pruning.CacheMb",id:"pruning-cachemb",level:4},{value:"Pruning.FullPruningCompletionBehavior",id:"pruning-fullpruningcompletionbehavior",level:4},{value:"Pruning.FullPruningDisableLowPriorityWrites",id:"pruning-fullpruningdisablelowprioritywrites",level:4},{value:"Pruning.FullPruningMaxDegreeOfParallelism",id:"pruning-fullpruningmaxdegreeofparallelism",level:4},{value:"Pruning.FullPruningMemoryBudgetMb",id:"pruning-fullpruningmemorybudgetmb",level:4},{value:"Pruning.FullPruningMinimumDelayHours",id:"pruning-fullpruningminimumdelayhours",level:4},{value:"Pruning.FullPruningThresholdMb",id:"pruning-fullpruningthresholdmb",level:4},{value:"Pruning.FullPruningTrigger",id:"pruning-fullpruningtrigger",level:4},{value:"Pruning.Mode",id:"pruning-mode",level:4},{value:"Pruning.PersistenceInterval",id:"pruning-persistenceinterval",level:4},{value:"Pruning.PruningBoundary",id:"pruning-pruningboundary",level:4},{value:"Pruning.TrackedPastKeyCountMemoryRatio",id:"pruning-trackedpastkeycountmemoryratio",level:4},{value:"Receipt",id:"receipt",level:3},{value:"Receipt.CompactReceiptStore",id:"receipt-compactreceiptstore",level:4},{value:"Receipt.CompactTxIndex",id:"receipt-compacttxindex",level:4},{value:"Receipt.ReceiptsMigration",id:"receipt-receiptsmigration",level:4},{value:"Receipt.StoreReceipts",id:"receipt-storereceipts",level:4},{value:"Receipt.TxLookupLimit",id:"receipt-txlookuplimit",level:4},{value:"Seq",id:"seq",level:3},{value:"Seq.ApiKey",id:"seq-apikey",level:4},{value:"Seq.MinLevel",id:"seq-minlevel",level:4},{value:"Seq.ServerUrl",id:"seq-serverurl",level:4},{value:"Snapshot",id:"snapshot",level:3},{value:"Snapshot.Checksum",id:"snapshot-checksum",level:4},{value:"Snapshot.DownloadUrl",id:"snapshot-downloadurl",level:4},{value:"Snapshot.Enabled",id:"snapshot-enabled",level:4},{value:"Snapshot.SnapshotDirectory",id:"snapshot-snapshotdirectory",level:4},{value:"Snapshot.SnapshotFileName",id:"snapshot-snapshotfilename",level:4},{value:"Sync",id:"sync",level:3},{value:"Sync.AncientBodiesBarrier",id:"sync-ancientbodiesbarrier",level:4},{value:"Sync.AncientReceiptsBarrier",id:"sync-ancientreceiptsbarrier",level:4},{value:"Sync.BlocksDbTuneDbMode",id:"sync-blocksdbtunedbmode",level:4},{value:"Sync.DownloadBodiesInFastSync",id:"sync-downloadbodiesinfastsync",level:4},{value:"Sync.DownloadHeadersInFastSync",id:"sync-downloadheadersinfastsync",level:4},{value:"Sync.DownloadReceiptsInFastSync",id:"sync-downloadreceiptsinfastsync",level:4},{value:"Sync.ExitOnSynced",id:"sync-exitonsynced",level:4},{value:"Sync.ExitOnSyncedWaitTimeSec",id:"sync-exitonsyncedwaittimesec",level:4},{value:"Sync.FastSync",id:"sync-fastsync",level:4},{value:"Sync.FastSyncCatchUpHeightDelta",id:"sync-fastsynccatchupheightdelta",level:4},{value:"Sync.FixReceipts",id:"sync-fixreceipts",level:4},{value:"Sync.FixTotalDifficulty",id:"sync-fixtotaldifficulty",level:4},{value:"Sync.FixTotalDifficultyLastBlock",id:"sync-fixtotaldifficultylastblock",level:4},{value:"Sync.FixTotalDifficultyStartingBlock",id:"sync-fixtotaldifficultystartingblock",level:4},{value:"Sync.MaxAttemptsToUpdatePivot",id:"sync-maxattemptstoupdatepivot",level:4},{value:"Sync.MaxProcessingThreads",id:"sync-maxprocessingthreads",level:4},{value:"Sync.NetworkingEnabled",id:"sync-networkingenabled",level:4},{value:"Sync.NonValidatorNode",id:"sync-nonvalidatornode",level:4},{value:"Sync.PivotHash",id:"sync-pivothash",level:4},{value:"Sync.PivotNumber",id:"sync-pivotnumber",level:4},{value:"Sync.PivotTotalDifficulty",id:"sync-pivottotaldifficulty",level:4},{value:"Sync.SnapSync",id:"sync-snapsync",level:4},{value:"Sync.SnapSyncAccountRangePartitionCount",id:"sync-snapsyncaccountrangepartitioncount",level:4},{value:"Sync.StrictMode",id:"sync-strictmode",level:4},{value:"Sync.SynchronizationEnabled",id:"sync-synchronizationenabled",level:4},{value:"Sync.TuneDbMode",id:"sync-tunedbmode",level:4},{value:"Sync.UseGethLimitsInFastBlocks",id:"sync-usegethlimitsinfastblocks",level:4},{value:"TraceStore",id:"tracestore",level:3},{value:"TraceStore.BlocksToKeep",id:"tracestore-blockstokeep",level:4},{value:"TraceStore.DeserializationParallelization",id:"tracestore-deserializationparallelization",level:4},{value:"TraceStore.Enabled",id:"tracestore-enabled",level:4},{value:"TraceStore.TraceTypes",id:"tracestore-tracetypes",level:4},{value:"TxPool",id:"txpool",level:3},{value:"TxPool.BlobCacheSize",id:"txpool-blobcachesize",level:4},{value:"TxPool.BlobsSupport",id:"txpool-blobssupport",level:4},{value:"TxPool.GasLimit",id:"txpool-gaslimit",level:4},{value:"TxPool.HashCacheSize",id:"txpool-hashcachesize",level:4},{value:"TxPool.InMemoryBlobPoolSize",id:"txpool-inmemoryblobpoolsize",level:4},{value:"TxPool.MaxPendingBlobTxsPerSender",id:"txpool-maxpendingblobtxspersender",level:4},{value:"TxPool.MaxPendingTxsPerSender",id:"txpool-maxpendingtxspersender",level:4},{value:"TxPool.MinBaseFeeThreshold",id:"txpool-minbasefeethreshold",level:4},{value:"TxPool.PeerNotificationThreshold",id:"txpool-peernotificationthreshold",level:4},{value:"TxPool.PersistentBlobStorageSize",id:"txpool-persistentblobstoragesize",level:4},{value:"TxPool.ReportMinutes",id:"txpool-reportminutes",level:4},{value:"TxPool.Size",id:"txpool-size",level:4},{value:"Wallet",id:"wallet",level:3},{value:"Wallet.DevAccounts",id:"wallet-devaccounts",level:4},{value:"Environment variables",id:"environment-variables",level:2},{value:"Configuration file",id:"configuration-file",level:2}];function x(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components},{Details:l}=n;return l||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#basic-command-line-options",children:"Command line options"})," (aka arguments or flags)"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#environment-variables",children:"Environment variables"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#configuration-file",children:"Configuration file"})}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsx)(n.p,{children:"Given the above priority list, an option defined in a more priority way overrides the same option defined elsewhere if any."})}),"\n",(0,i.jsx)(n.p,{children:"The full list of configuration options can be displayed by running:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,i.jsx)(n.p,{children:"Below is the list of the basic command line options followed by an exhaustive list of configuration options by namespace."}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"The configuration options are case-sensitive and can be defined only once unless stated otherwise."})}),"\n",(0,i.jsx)(n.h2,{id:"basic-command-line-options",children:"Basic command line options"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"basedbpath",children:(0,i.jsx)(n.code,{children:"-d, --baseDbPath "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the Nethermind database directory. Defaults to ",(0,i.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"config",children:(0,i.jsx)(n.code,{children:"-c, --config "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the ",(0,i.jsx)(n.a,{href:"#configuration-file",children:"configuration file"})," or the name (without extension) of any of the configuration files in the configuration directory. Defaults to ",(0,i.jsx)(n.code,{children:"mainnet"}),"."]}),"\n",(0,i.jsxs)(l,{children:[(0,i.jsx)("summary",{children:"Available configurations"}),(0,i.jsxs)("p",{children:[(0,i.jsxs)(n.p,{children:["Nethermind provides the following pre-built configurations named as the networks they are for. Their respective versions for archive nodes are suffixed ",(0,i.jsx)(n.code,{children:"_archive"}),"."]}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"base-mainnet"})," ",(0,i.jsx)(n.code,{children:"base-mainnet_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"base-sepolia"})," ",(0,i.jsx)(n.code,{children:"base-sepolia_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"chiado"})," ",(0,i.jsx)(n.code,{children:"chiado_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"energyweb"})," ",(0,i.jsx)(n.code,{children:"energyweb_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"gnosis"})," ",(0,i.jsx)(n.code,{children:"gnosis_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"holesky"})," ",(0,i.jsx)(n.code,{children:"holesky_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mainnet"})," ",(0,i.jsx)(n.code,{children:"mainnet_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"op-mainnet"})," ",(0,i.jsx)(n.code,{children:"op-mainnet_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"op-sepolia"})," ",(0,i.jsx)(n.code,{children:"op-sepolia_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"sepolia"})," ",(0,i.jsx)(n.code,{children:"sepolia_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"volta"})," ",(0,i.jsx)(n.code,{children:"volta_archive"})]}),"\n"]})]})]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"configs-directory",children:(0,i.jsx)(n.code,{children:"-cd, --configsDirectory "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the configuration files directory. Defaults to ",(0,i.jsx)(n.code,{children:"configs"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"datadir",children:(0,i.jsx)(n.code,{children:"-dd, --datadir "})}),"\n",(0,i.jsx)(n.p,{children:"The path to the Nethermind data directory. Defaults to Nethermind's current directory."}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.p,{children:["The absolute paths set by ",(0,i.jsx)(n.a,{href:"#init-basedbpath",children:(0,i.jsx)(n.code,{children:"Init.BaseDbPath"})}),", ",(0,i.jsx)(n.a,{href:"#init-logdirectory",children:(0,i.jsx)(n.code,{children:"Init.LogDirectory"})}),", or ",(0,i.jsx)(n.a,{href:"#keystore-keystoredirectory",children:(0,i.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})})," options in a configuration file are not overridden by ",(0,i.jsx)(n.code,{children:"--datadir"}),"."]})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"help",children:(0,i.jsx)(n.code,{children:"-?, -h, --help"})}),"\n",(0,i.jsx)(n.p,{children:"Displays the full list of available command line options."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"log",children:(0,i.jsx)(n.code,{children:"-l, --log "})}),"\n",(0,i.jsxs)(n.p,{children:["Log level (severity). Allowed values: ",(0,i.jsx)(n.code,{children:"TRACE"})," ",(0,i.jsx)(n.code,{children:"DEBUG"})," ",(0,i.jsx)(n.code,{children:"INFO"})," ",(0,i.jsx)(n.code,{children:"WARN"})," ",(0,i.jsx)(n.code,{children:"ERROR"})," ",(0,i.jsx)(n.code,{children:"OFF"}),". Defaults to ",(0,i.jsx)(n.code,{children:"INFO"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loggerconfigsource",children:(0,i.jsx)(n.code,{children:"-lcs, --loggerConfigSource "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the NLog configuration file. Defaults to ",(0,i.jsx)(n.code,{children:"NLog.config"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pluginsdirectory",children:(0,i.jsx)(n.code,{children:"-pd, --pluginsDirectory "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the Nethermind plugins directory. Defaults to ",(0,i.jsx)(n.code,{children:"plugins"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"version",children:(0,i.jsx)(n.code,{children:"-v, --version"})}),"\n",(0,i.jsx)(n.p,{children:"Displays the Nethermind version info."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"options-by-namespaces",children:"Options by namespaces"}),"\n",(0,i.jsx)(n.h3,{id:"aura",children:"Aura"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-allowauraprivatechains",children:(0,i.jsx)(n.code,{children:"Aura.AllowAuRaPrivateChains"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.AllowAuRaPrivateChains \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_ALLOWAURAPRIVATECHAINS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "AllowAuRaPrivateChains": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to allow private Aura-based chains only. Do not use with existing Aura-based chains. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-forcesealing",children:(0,i.jsx)(n.code,{children:"Aura.ForceSealing"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.ForceSealing \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_FORCESEALING=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "ForceSealing": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to seal empty blocks if mining. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-minimum2mlngasperblockwhenusingblockgaslimitcontract",children:(0,i.jsx)(n.code,{children:"Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_MINIMUM2MLNGASPERBLOCKWHENUSINGBLOCKGASLIMITCONTRACT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use 2M gas if the contract returns less than that when using ",(0,i.jsx)(n.code,{children:"BlockGasLimitContractTransitions"}),". Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-txpriorityconfigfilepath",children:(0,i.jsx)(n.code,{children:"Aura.TxPriorityConfigFilePath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.TxPriorityConfigFilePath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONFIGFILEPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "TxPriorityConfigFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the transaction priority rules file to use when selecting transactions from the transaction pool. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-txprioritycontractaddress",children:(0,i.jsx)(n.code,{children:"Aura.TxPriorityContractAddress"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.TxPriorityContractAddress \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONTRACTADDRESS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "TxPriorityContractAddress": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The address of the transaction priority contract to use when selecting transactions from the transaction pool. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"blocks",children:"Blocks"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-blockproductiontimeoutms",children:(0,i.jsx)(n.code,{children:"Blocks.BlockProductionTimeoutMs"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.BlockProductionTimeoutMs \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_BLOCKPRODUCTIONTIMEOUTMS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "BlockProductionTimeoutMs": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Block Production timeout, in milliseconds. Defaults to ",(0,i.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-extradata",children:(0,i.jsx)(n.code,{children:"Blocks.ExtraData"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.ExtraData \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_EXTRADATA=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "ExtraData": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block header extra data up to 32 bytes in length. Defaults to ",(0,i.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-genesistimeoutms",children:(0,i.jsx)(n.code,{children:"Blocks.GenesisTimeoutMs"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.GenesisTimeoutMs \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_GENESISTIMEOUTMS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "GenesisTimeoutMs": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Genesis block load timeout, in milliseconds. Defaults to ",(0,i.jsx)(n.code,{children:"40000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-mingasprice",children:(0,i.jsx)(n.code,{children:"Blocks.MinGasPrice"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.MinGasPrice \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_MINGASPRICE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "MinGasPrice": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The minimum gas premium (or the gas price before the London hard fork) for transactions accepted by the block producer. Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-prewarmstateonblockprocessing",children:(0,i.jsx)(n.code,{children:"Blocks.PreWarmStateOnBlockProcessing"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.PreWarmStateOnBlockProcessing \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_PREWARMSTATEONBLOCKPROCESSING=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "PreWarmStateOnBlockProcessing": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to pre-warm the state when processing blocks. This can lead to an up to 2x speed-up in the main loop block processing. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"True"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-randomizedblocks",children:(0,i.jsx)(n.code,{children:"Blocks.RandomizedBlocks"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.RandomizedBlocks \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_RANDOMIZEDBLOCKS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "RandomizedBlocks": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to change the difficulty of the block randomly within the constraints. Used in NethDev only. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-secondsperslot",children:(0,i.jsx)(n.code,{children:"Blocks.SecondsPerSlot"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.SecondsPerSlot \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_SECONDSPERSLOT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "SecondsPerSlot": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block time slot, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"12"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-targetblockgaslimit",children:(0,i.jsx)(n.code,{children:"Blocks.TargetBlockGasLimit"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.TargetBlockGasLimit \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_TARGETBLOCKGASLIMIT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "TargetBlockGasLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block gas limit that the block producer should try to reach in the fastest possible way based on the protocol rules. If not specified, then the block producer should follow others. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"bloom",children:"Bloom"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-index",children:(0,i.jsx)(n.code,{children:"Bloom.Index"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.Index \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEX=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "Index": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use the Bloom index. The Bloom index speeds up the RPC log searches. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-indexlevelbucketsizes",children:(0,i.jsx)(n.code,{children:"Bloom.IndexLevelBucketSizes"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.IndexLevelBucketSizes \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEXLEVELBUCKETSIZES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "IndexLevelBucketSizes": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of multipliers for index levels. Can be tweaked per chain to boost performance. Defaults to ",(0,i.jsx)(n.code,{children:"[4, 8, 8]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-migration",children:(0,i.jsx)(n.code,{children:"Bloom.Migration"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.Migration \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATION=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "Migration": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to migrate the previously downloaded blocks to the Bloom index. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-migrationstatistics",children:(0,i.jsx)(n.code,{children:"Bloom.MigrationStatistics"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.MigrationStatistics \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATIONSTATISTICS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "MigrationStatistics": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether the migration statistics should be calculated and output. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"censorshipdetector",children:"CensorshipDetector"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"censorshipdetector-addressesforcensorshipdetection",children:(0,i.jsx)(n.code,{children:"CensorshipDetector.AddressesForCensorshipDetection"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--CensorshipDetector.AddressesForCensorshipDetection \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_CENSORSHIPDETECTORCONFIG_ADDRESSESFORCENSORSHIPDETECTION=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "CensorshipDetector": {\n "AddressesForCensorshipDetection": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The addresses for which censorship is being detected. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"censorshipdetector-blockcensorshipthreshold",children:(0,i.jsx)(n.code,{children:"CensorshipDetector.BlockCensorshipThreshold"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--CensorshipDetector.BlockCensorshipThreshold \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_CENSORSHIPDETECTORCONFIG_BLOCKCENSORSHIPTHRESHOLD=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "CensorshipDetector": {\n "BlockCensorshipThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Number of consecutive blocks with detected potential censorship to report censorship attempt Defaults to ",(0,i.jsx)(n.code,{children:"2"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"censorshipdetector-enabled",children:(0,i.jsx)(n.code,{children:"CensorshipDetector.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--CensorshipDetector.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_CENSORSHIPDETECTORCONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "CensorshipDetector": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Enabling censorship detection feature Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"ethstats",children:"EthStats"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-contact",children:(0,i.jsx)(n.code,{children:"EthStats.Contact"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Contact \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_CONTACT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Contact": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The node owner contact details displayed on Ethstats. Defaults to ",(0,i.jsx)(n.code,{children:"hello@nethermind.io"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-enabled",children:(0,i.jsx)(n.code,{children:"EthStats.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use Ethstats publishing. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-name",children:(0,i.jsx)(n.code,{children:"EthStats.Name"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Name \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_NAME=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Name": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The node name displayed on Ethstats. Defaults to ",(0,i.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-secret",children:(0,i.jsx)(n.code,{children:"EthStats.Secret"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Secret \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SECRET=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Secret": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Ethstats secret. Defaults to ",(0,i.jsx)(n.code,{children:"secret"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-sendinterval",children:(0,i.jsx)(n.code,{children:"EthStats.SendInterval"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.SendInterval \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SENDINTERVAL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "SendInterval": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The stats update interval, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"15"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-server",children:(0,i.jsx)(n.code,{children:"EthStats.Server"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Server \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SERVER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Server": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Ethstats server URL. Defaults to ",(0,i.jsx)(n.code,{children:"ws://localhost:3000/api"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"healthchecks",children:"HealthChecks"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-enabled",children:(0,i.jsx)(n.code,{children:"HealthChecks.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the health check. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-lowstoragecheckawaitonstartup",children:(0,i.jsx)(n.code,{children:"HealthChecks.LowStorageCheckAwaitOnStartup"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.LowStorageCheckAwaitOnStartup \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGECHECKAWAITONSTARTUP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "LowStorageCheckAwaitOnStartup": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to check for low disk space on startup and suspend until enough space is available. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-lowstoragespaceshutdownthreshold",children:(0,i.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceShutdownThreshold"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACESHUTDOWNTHRESHOLD=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "LowStorageSpaceShutdownThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The percentage of available disk space below which Nethermind shuts down. ",(0,i.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-lowstoragespacewarningthreshold",children:(0,i.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceWarningThreshold"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACEWARNINGTHRESHOLD=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "LowStorageSpaceWarningThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The percentage of available disk space below which a warning is displayed. ",(0,i.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-maxintervalclrequesttime",children:(0,i.jsx)(n.code,{children:"HealthChecks.MaxIntervalClRequestTime"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.MaxIntervalClRequestTime \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALCLREQUESTTIME=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "MaxIntervalClRequestTime": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max request interval, in seconds, in which the consensus client is assumed healthy. Defaults to ",(0,i.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-maxintervalwithoutprocessedblock",children:(0,i.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProcessedBlock"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProcessedBlock \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPROCESSEDBLOCK=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "MaxIntervalWithoutProcessedBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max interval, in seconds, in which the block processing is assumed healthy. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-maxintervalwithoutproducedblock",children:(0,i.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProducedBlock"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProducedBlock \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPRODUCEDBLOCK=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "MaxIntervalWithoutProducedBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max interval, in seconds, in which the block production is assumed healthy. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-pollinginterval",children:(0,i.jsx)(n.code,{children:"HealthChecks.PollingInterval"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.PollingInterval \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_POLLINGINTERVAL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "PollingInterval": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The health check updates polling interval, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-slug",children:(0,i.jsx)(n.code,{children:"HealthChecks.Slug"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.Slug \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_SLUG=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "Slug": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL slug the health checks service is exposed at. Defaults to ",(0,i.jsx)(n.code,{children:"/health"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-uienabled",children:(0,i.jsx)(n.code,{children:"HealthChecks.UIEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.UIEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_UIENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "UIEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the health checks UI. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhooksenabled",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable web hooks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhookspayload",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksPayload"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksPayload \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSPAYLOAD=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksPayload": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on failure.\nDefaults to:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#FFCC00",\n "pretext": "Health Check Status :warning:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "Description",\n "value": "[[DESCRIPTIONS]]",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhooksrestorepayload",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksRestorePayload"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksRestorePayload \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSRESTOREPAYLOAD=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksRestorePayload": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on recovery.\nDefaults to:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#36a64f",\n "pretext": "Health Check Status :+1:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "description",\n "value": "The HealthCheck `[[LIVENESS]]` is recovered. Everything is up and running.",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhooksuri",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksUri"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksUri \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSURI=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksUri": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The web hook URL. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"hive",children:"Hive"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-blocksdir",children:(0,i.jsx)(n.code,{children:"Hive.BlocksDir"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.BlocksDir \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_BLOCKSDIR=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "BlocksDir": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the directory with additional blocks. Defaults to ",(0,i.jsx)(n.code,{children:"/blocks"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-chainfile",children:(0,i.jsx)(n.code,{children:"Hive.ChainFile"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.ChainFile \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_CHAINFILE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "ChainFile": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the test chain spec file. Defaults to ",(0,i.jsx)(n.code,{children:"/chain.rlp"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-enabled",children:(0,i.jsx)(n.code,{children:"Hive.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable Hive for debugging. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-genesisfilepath",children:(0,i.jsx)(n.code,{children:"Hive.GenesisFilePath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.GenesisFilePath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_GENESISFILEPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "GenesisFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the genesis block file. Defaults to ",(0,i.jsx)(n.code,{children:"/genesis.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-keysdir",children:(0,i.jsx)(n.code,{children:"Hive.KeysDir"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.KeysDir \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_KEYSDIR=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "KeysDir": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,i.jsx)(n.code,{children:"/keys"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"init",children:"Init"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-autodump",children:(0,i.jsx)(n.code,{children:"Init.AutoDump"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.AutoDump \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_AUTODUMP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "AutoDump": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Auto-dump on bad blocks for diagnostics. ",(0,i.jsx)(n.code,{children:"Default"})," combines ",(0,i.jsx)(n.code,{children:"Receipts"})," and ",(0,i.jsx)(n.code,{children:"Rlp"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Receipts"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Parity"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Geth"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Rlp"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"RlpLog"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Default"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Default"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-badblocksstored",children:(0,i.jsx)(n.code,{children:"Init.BadBlocksStored"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.BadBlocksStored \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BADBLOCKSSTORED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "BadBlocksStored": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The maximum number of bad blocks observed on the network that will be stored on disk. Defaults to ",(0,i.jsx)(n.code,{children:"100"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-basedbpath",children:(0,i.jsx)(n.code,{children:"Init.BaseDbPath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.BaseDbPath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BASEDBPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "BaseDbPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The base path for all Nethermind databases. Defaults to ",(0,i.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-chainspecpath",children:(0,i.jsx)(n.code,{children:"Init.ChainSpecPath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.ChainSpecPath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_CHAINSPECPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "ChainSpecPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the chain spec file. Defaults to ",(0,i.jsx)(n.code,{children:"chainspec/foundation.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-diagnosticmode",children:(0,i.jsx)(n.code,{children:"Init.DiagnosticMode"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.DiagnosticMode \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DIAGNOSTICMODE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "DiagnosticMode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The diagnostic mode."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"MemDb"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"RpcDb"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ReadOnlyDb"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VerifyRewards"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VerifySupply"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VerifyTrie"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-discoveryenabled",children:(0,i.jsx)(n.code,{children:"Init.DiscoveryEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.DiscoveryEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DISCOVERYENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "DiscoveryEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the node discovery. If disabled, Nethermind doesn't look for other nodes beyond the bootnodes specified. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-enableunsecureddevwallet",children:(0,i.jsx)(n.code,{children:"Init.EnableUnsecuredDevWallet"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.EnableUnsecuredDevWallet \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ENABLEUNSECUREDDEVWALLET=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "EnableUnsecuredDevWallet": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the in-app wallet/keystore. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-genesishash",children:(0,i.jsx)(n.code,{children:"Init.GenesisHash"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.GenesisHash \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_GENESISHASH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "GenesisHash": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The hash of the genesis block. If not specified, the genesis block validity is not checked which is useful in the case of ad hoc test/private networks. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-hivechainspecpath",children:(0,i.jsx)(n.code,{children:"Init.HiveChainSpecPath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.HiveChainSpecPath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_HIVECHAINSPECPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "HiveChainSpecPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the chain spec file for Hive tests. Defaults to ",(0,i.jsx)(n.code,{children:"chainspec/test.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-ismining",children:(0,i.jsx)(n.code,{children:"Init.IsMining"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.IsMining \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ISMINING=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "IsMining": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to seal/mine new blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-keepdevwalletinmemory",children:(0,i.jsx)(n.code,{children:"Init.KeepDevWalletInMemory"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.KeepDevWalletInMemory \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KEEPDEVWALLETINMEMORY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "KeepDevWalletInMemory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to create session-only accounts and delete them on shutdown. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-kzgsetuppath",children:(0,i.jsx)(n.code,{children:"Init.KzgSetupPath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.KzgSetupPath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KZGSETUPPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "KzgSetupPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to KZG trusted setup file. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-logdirectory",children:(0,i.jsx)(n.code,{children:"Init.LogDirectory"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.LogDirectory \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGDIRECTORY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "LogDirectory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the Nethermind logs directory. Defaults to ",(0,i.jsx)(n.code,{children:"logs"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-logfilename",children:(0,i.jsx)(n.code,{children:"Init.LogFileName"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.LogFileName \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGFILENAME=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "LogFileName": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The name of the log file. Defaults to ",(0,i.jsx)(n.code,{children:"log.txt"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-logrules",children:(0,i.jsx)(n.code,{children:"Init.LogRules"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.LogRules \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGRULES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "LogRules": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The logs format as ",(0,i.jsx)(n.code,{children:"LogPath:LogLevel;*"})," Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-memoryhint",children:(0,i.jsx)(n.code,{children:"Init.MemoryHint"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.MemoryHint \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_MEMORYHINT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "MemoryHint": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The hint on the max memory limit, in bytes, to configure the database and networking memory allocations. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-peermanagerenabled",children:(0,i.jsx)(n.code,{children:"Init.PeerManagerEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.PeerManagerEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PEERMANAGERENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "PeerManagerEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to connect to newly discovered peers. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-processingenabled",children:(0,i.jsx)(n.code,{children:"Init.ProcessingEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.ProcessingEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PROCESSINGENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "ProcessingEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download/process new blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-rpcdburl",children:(0,i.jsx)(n.code,{children:"Init.RpcDbUrl"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.RpcDbUrl \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_RPCDBURL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "RpcDbUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of the remote node used as a database source when ",(0,i.jsx)(n.code,{children:"DiagnosticMode"})," is set to ",(0,i.jsx)(n.code,{children:"RpcDb"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-staticnodespath",children:(0,i.jsx)(n.code,{children:"Init.StaticNodesPath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.StaticNodesPath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_STATICNODESPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "StaticNodesPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the static nodes file. Defaults to ",(0,i.jsx)(n.code,{children:"Data/static-nodes.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-websocketsenabled",children:(0,i.jsx)(n.code,{children:"Init.WebSocketsEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.WebSocketsEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_WEBSOCKETSENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "WebSocketsEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable WebSocket service for the default JSON-RPC port on startup. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"jsonrpc",children:"JsonRpc"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-additionalrpcurls",children:(0,i.jsx)(n.code,{children:"JsonRpc.AdditionalRpcUrls"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ADDITIONALRPCURLS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "AdditionalRpcUrls": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list. For instance, ",(0,i.jsx)(n.code,{children:"[http://localhost:8546|http;ws|eth;web3]"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-bufferresponses",children:(0,i.jsx)(n.code,{children:"JsonRpc.BufferResponses"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.BufferResponses \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_BUFFERRESPONSES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "BufferResponses": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to buffer responses before sending them. This allows using of ",(0,i.jsx)(n.code,{children:"Content-Length"})," instead of ",(0,i.jsx)(n.code,{children:"Transfer-Encoding: chunked"}),". Note that it may degrade performance on large responses. The max buffered response length is 2GB. Chunked responses can be larger. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-callsfilterfilepath",children:(0,i.jsx)(n.code,{children:"JsonRpc.CallsFilterFilePath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.CallsFilterFilePath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_CALLSFILTERFILEPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "CallsFilterFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to a file with the list of new-line-separated JSON-RPC calls. If specified, only the calls from that file are allowed. Defaults to ",(0,i.jsx)(n.code,{children:"Data/jsonrpc.filter"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-enabled",children:(0,i.jsx)(n.code,{children:"JsonRpc.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the JSON-RPC service. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-enabledmodules",children:(0,i.jsx)(n.code,{children:"JsonRpc.EnabledModules"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnabledModules \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLEDMODULES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EnabledModules": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of JSON-RPC namespaces to enable. For instance, ",(0,i.jsx)(n.code,{children:"[debug,eth]"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Built-in namespaces:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"admin"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"client"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"debug"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"engine"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"evm"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"health"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"net"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"parity"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"personal"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"proof"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"rpc"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"subscribe"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"trace"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"txpool"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"web3"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"[Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health,Rpc]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-engineenabledmodules",children:(0,i.jsx)(n.code,{children:"JsonRpc.EngineEnabledModules"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EngineEnabledModules \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EngineEnabledModules": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list for Engine API. Defaults to ",(0,i.jsx)(n.code,{children:"[Net,Eth,Subscribe,Web3]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-enginehost",children:(0,i.jsx)(n.code,{children:"JsonRpc.EngineHost"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EngineHost \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEHOST=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EngineHost": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Engine API host. Defaults to ",(0,i.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-engineport",children:(0,i.jsx)(n.code,{children:"JsonRpc.EnginePort"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEPORT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EnginePort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Engine API port. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-estimateerrormargin",children:(0,i.jsx)(n.code,{children:"JsonRpc.EstimateErrorMargin"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EstimateErrorMargin \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ESTIMATEERRORMARGIN=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EstimateErrorMargin": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The error margin used in the ",(0,i.jsx)(n.code,{children:"eth_estimateGas"})," JSON-RPC method, in basis points. Defaults to ",(0,i.jsx)(n.code,{children:"150"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-ethmoduleconcurrentinstances",children:(0,i.jsx)(n.code,{children:"JsonRpc.EthModuleConcurrentInstances"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EthModuleConcurrentInstances \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ETHMODULECONCURRENTINSTANCES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EthModuleConcurrentInstances": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The number of concurrent instances for non-sharable calls:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_call"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"This limits the load on the CPU and I/O to reasonable levels. If the limit is exceeded, HTTP 503 is returned along with the JSON-RPC error. Defaults to the number of logical processors."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-gascap",children:(0,i.jsx)(n.code,{children:"JsonRpc.GasCap"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.GasCap \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_GASCAP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "GasCap": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The gas limit for ",(0,i.jsx)(n.code,{children:"eth_call"})," and ",(0,i.jsx)(n.code,{children:"eth_estimateGas"}),". Defaults to ",(0,i.jsx)(n.code,{children:"100000000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-host",children:(0,i.jsx)(n.code,{children:"JsonRpc.Host"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Host \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_HOST=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Host": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The JSON-RPC service host. Defaults to ",(0,i.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-ipcunixdomainsocketpath",children:(0,i.jsx)(n.code,{children:"JsonRpc.IpcUnixDomainSocketPath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_IPCUNIXDOMAINSOCKETPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "IpcUnixDomainSocketPath": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The path to connect a UNIX domain socket over."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-jwtsecretfile",children:(0,i.jsx)(n.code,{children:"JsonRpc.JwtSecretFile"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "JwtSecretFile": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the JWT secret file required for the Engine API authentication. Defaults to ",(0,i.jsx)(n.code,{children:"keystore/jwt-secret"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxbatchresponsebodysize",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxBatchResponseBodySize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxBatchResponseBodySize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHRESPONSEBODYSIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxBatchResponseBodySize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max batch size limit for batched JSON-RPC calls. Defaults to ",(0,i.jsx)(n.code,{children:"33554432"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxbatchsize",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxBatchSize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxBatchSize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHSIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxBatchSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of JSON-RPC requests in a batch. Defaults to ",(0,i.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxloggedrequestparameterscharacters",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxLoggedRequestParametersCharacters"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxLoggedRequestParametersCharacters \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGGEDREQUESTPARAMETERSCHARACTERS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxLoggedRequestParametersCharacters": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of characters of a JSON-RPC request parameter printing to the log. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxlogsperresponse",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxLogsPerResponse"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxLogsPerResponse \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGSPERRESPONSE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxLogsPerResponse": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of logs per response for the ",(0,i.jsx)(n.code,{children:"eth_getLogs"})," JSON-RPC method. ",(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxrequestbodysize",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxRequestBodySize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxRequestBodySize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXREQUESTBODYSIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxRequestBodySize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max length of HTTP request body, in bytes. Defaults to ",(0,i.jsx)(n.code,{children:"30000000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxsimulateblockscap",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxSimulateBlocksCap"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxSimulateBlocksCap \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXSIMULATEBLOCKSCAP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxSimulateBlocksCap": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max block count limit for the ",(0,i.jsx)(n.code,{children:"eth_simulate"})," JSON-RPC method. Defaults to ",(0,i.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-methodsloggingfiltering",children:(0,i.jsx)(n.code,{children:"JsonRpc.MethodsLoggingFiltering"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MethodsLoggingFiltering \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_METHODSLOGGINGFILTERING=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MethodsLoggingFiltering": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of the method names not to log. Defaults to ",(0,i.jsx)(n.code,{children:"[engine_newPayloadV1,engine_newPayloadV2,engine_newPayloadV3,engine_forkchoiceUpdatedV1,engine_forkchoiceUpdatedV2]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-port",children:(0,i.jsx)(n.code,{children:"JsonRpc.Port"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_PORT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Port": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The JSON-RPC service HTTP port. Defaults to ",(0,i.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-reportintervalseconds",children:(0,i.jsx)(n.code,{children:"JsonRpc.ReportIntervalSeconds"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.ReportIntervalSeconds \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REPORTINTERVALSECONDS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "ReportIntervalSeconds": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The interval, in seconds, between the JSON-RPC stats report log. Defaults to ",(0,i.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-requestqueuelimit",children:(0,i.jsx)(n.code,{children:"JsonRpc.RequestQueueLimit"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.RequestQueueLimit \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REQUESTQUEUELIMIT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "RequestQueueLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The max number of concurrent requests in the queue for:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_call"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"500"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-rpcrecorderbasefilepath",children:(0,i.jsx)(n.code,{children:"JsonRpc.RpcRecorderBaseFilePath"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.RpcRecorderBaseFilePath \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERBASEFILEPATH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "RpcRecorderBaseFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the base file for diagnostic recording. Defaults to ",(0,i.jsx)(n.code,{children:"logs/rpc.{counter}.txt"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-rpcrecorderstate",children:(0,i.jsx)(n.code,{children:"JsonRpc.RpcRecorderState"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.RpcRecorderState \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERSTATE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "RpcRecorderState": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The diagnostic recording mode."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Request"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Response"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-timeout",children:(0,i.jsx)(n.code,{children:"JsonRpc.Timeout"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Timeout \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_TIMEOUT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Timeout": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The request timeout, in milliseconds. Defaults to ",(0,i.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-websocketsport",children:(0,i.jsx)(n.code,{children:"JsonRpc.WebSocketsPort"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_WEBSOCKETSPORT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "WebSocketsPort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The JSON-RPC service WebSockets port. Defaults to ",(0,i.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"keystore",children:"KeyStore"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-blockauthoraccount",children:(0,i.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.BlockAuthorAccount \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_BLOCKAUTHORACCOUNT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "BlockAuthorAccount": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"An account to use as the block author (coinbase)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-cipher",children:(0,i.jsx)(n.code,{children:"KeyStore.Cipher"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.Cipher \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_CIPHER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "Cipher": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"aes-128-ctr"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-enodeaccount",children:(0,i.jsx)(n.code,{children:"KeyStore.EnodeAccount"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.EnodeAccount \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEACCOUNT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "EnodeAccount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An account to use for networking (enode). If neither this nor the ",(0,i.jsx)(n.code,{children:"EnodeKeyFile"})," option is specified, the key is autogenerated in ",(0,i.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-enodekeyfile",children:(0,i.jsx)(n.code,{children:"KeyStore.EnodeKeyFile"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.EnodeKeyFile \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEKEYFILE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "EnodeKeyFile": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the key file to use by for networking (enode). If neither this nor the ",(0,i.jsx)(n.code,{children:"EnodeAccount"})," is specified, the key is autogenerated in ",(0,i.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-ivsize",children:(0,i.jsx)(n.code,{children:"KeyStore.IVSize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.IVSize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_IVSIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "IVSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdf",children:(0,i.jsx)(n.code,{children:"KeyStore.Kdf"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.Kdf \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDF=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "Kdf": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"scrypt"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsdklen",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsDklen"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsDklen \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSDKLEN=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsDklen": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsn",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsN"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsN \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSN=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsN": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"262144"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsp",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsP"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsP \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsP": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsr",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsR"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsR \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSR=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsR": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamssaltlen",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsSaltLen"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsSaltLen \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSSALTLEN=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsSaltLen": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-keystoredirectory",children:(0,i.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KeyStoreDirectory \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREDIRECTORY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KeyStoreDirectory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,i.jsx)(n.code,{children:"keystore"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-keystoreencoding",children:(0,i.jsx)(n.code,{children:"KeyStore.KeyStoreEncoding"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KeyStoreEncoding \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREENCODING=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KeyStoreEncoding": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"UTF-8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-passwordfiles",children:(0,i.jsx)(n.code,{children:"KeyStore.PasswordFiles"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.PasswordFiles \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDFILES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "PasswordFiles": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of password files paths used to unlock the accounts set with ",(0,i.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-passwords",children:(0,i.jsx)(n.code,{children:"KeyStore.Passwords"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.Passwords \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "Passwords": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of passwords used to unlock the accounts set with ",(0,i.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-symmetricencrypterblocksize",children:(0,i.jsx)(n.code,{children:"KeyStore.SymmetricEncrypterBlockSize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterBlockSize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERBLOCKSIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "SymmetricEncrypterBlockSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-symmetricencrypterkeysize",children:(0,i.jsx)(n.code,{children:"KeyStore.SymmetricEncrypterKeySize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterKeySize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERKEYSIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "SymmetricEncrypterKeySize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-testnodekey",children:(0,i.jsx)(n.code,{children:"KeyStore.TestNodeKey"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.TestNodeKey \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_TESTNODEKEY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "TestNodeKey": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"A plaintext private key to use for testing purposes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-unlockaccounts",children:(0,i.jsx)(n.code,{children:"KeyStore.UnlockAccounts"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.UnlockAccounts \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_UNLOCKACCOUNTS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "UnlockAccounts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of accounts to unlock on startup using passwords either in ",(0,i.jsx)(n.code,{children:"PasswordFiles"})," and ",(0,i.jsx)(n.code,{children:"Passwords"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"merge",children:"Merge"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-builderrelayurl",children:(0,i.jsx)(n.code,{children:"Merge.BuilderRelayUrl"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.BuilderRelayUrl \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_BUILDERRELAYURL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "BuilderRelayUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of a builder relay. If specified, blocks are sent to the relay. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-collectionsperdecommit",children:(0,i.jsx)(n.code,{children:"Merge.CollectionsPerDecommit"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.CollectionsPerDecommit \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COLLECTIONSPERDECOMMIT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "CollectionsPerDecommit": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Request the garbage collector (GC) to release the process memory."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"-1"})," to disable"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"0"})," to release every time"]}),"\n",(0,i.jsx)(n.li,{children:"A positive number to release memory after that many Engine API calls"}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"25"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-compactmemory",children:(0,i.jsx)(n.code,{children:"Merge.CompactMemory"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.CompactMemory \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COMPACTMEMORY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "CompactMemory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The memory compaction mode. When set to ",(0,i.jsx)(n.code,{children:"Full"}),", compacts the large object heap (LOH) if ",(0,i.jsx)(n.code,{children:"SweepMemory"})," is set to ",(0,i.jsx)(n.code,{children:"Gen2"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"No"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Yes"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Full"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Yes"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-enabled",children:(0,i.jsx)(n.code,{children:"Merge.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the Merge hard fork. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-finaltotaldifficulty",children:(0,i.jsx)(n.code,{children:"Merge.FinalTotalDifficulty"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.FinalTotalDifficulty \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_FINALTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "FinalTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The total difficulty of the last PoW block. Must be greater than or equal to the terminal total difficulty (TTD). Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-prioritizeblocklatency",children:(0,i.jsx)(n.code,{children:"Merge.PrioritizeBlockLatency"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.PrioritizeBlockLatency \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_PRIORITIZEBLOCKLATENCY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "PrioritizeBlockLatency": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to reduce block latency by disabling garbage collection during Engine API calls. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-sweepmemory",children:(0,i.jsx)(n.code,{children:"Merge.SweepMemory"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.SweepMemory \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_SWEEPMEMORY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "SweepMemory": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The garbage collection (GC) mode between Engine API calls."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"NoGC"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Gen0"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Gen1"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Gen2"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Gen1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-terminalblockhash",children:(0,i.jsx)(n.code,{children:"Merge.TerminalBlockHash"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.TerminalBlockHash \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKHASH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "TerminalBlockHash": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The terminal PoW block hash used for the transition. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-terminalblocknumber",children:(0,i.jsx)(n.code,{children:"Merge.TerminalBlockNumber"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.TerminalBlockNumber \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKNUMBER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "TerminalBlockNumber": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The terminal PoW block number used for the transition."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-terminaltotaldifficulty",children:(0,i.jsx)(n.code,{children:"Merge.TerminalTotalDifficulty"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.TerminalTotalDifficulty \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "TerminalTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The terminal total difficulty (TTD) used for the transition. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"metrics",children:"Metrics"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-countersenabled",children:(0,i.jsx)(n.code,{children:"Metrics.CountersEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.CountersEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_COUNTERSENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "CountersEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to publish metrics using .NET diagnostics that can be collected with dotnet-counters. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-enabled",children:(0,i.jsx)(n.code,{children:"Metrics.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to publish various metrics to Prometheus Pushgateway at a given interval. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-enabledbsizemetrics",children:(0,i.jsx)(n.code,{children:"Metrics.EnableDbSizeMetrics"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.EnableDbSizeMetrics \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLEDBSIZEMETRICS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "EnableDbSizeMetrics": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to publish database size metrics. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-exposehost",children:(0,i.jsx)(n.code,{children:"Metrics.ExposeHost"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.ExposeHost \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEHOST=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "ExposeHost": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The IP address to expose Prometheus metrics at. The value of ",(0,i.jsx)(n.code,{children:"+"})," means listening on all available hostnames. Setting this to ",(0,i.jsx)(n.code,{children:"localhost"})," prevents remote access. Defaults to ",(0,i.jsx)(n.code,{children:"+"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-exposeport",children:(0,i.jsx)(n.code,{children:"Metrics.ExposePort"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.ExposePort \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEPORT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "ExposePort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The port to expose Prometheus metrics at. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-intervalseconds",children:(0,i.jsx)(n.code,{children:"Metrics.IntervalSeconds"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.IntervalSeconds \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_INTERVALSECONDS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "IntervalSeconds": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The frequency of pushing metrics to Prometheus, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-nodename",children:(0,i.jsx)(n.code,{children:"Metrics.NodeName"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.NodeName \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_NODENAME=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "NodeName": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The name to display on the Grafana dashboard. Defaults to ",(0,i.jsx)(n.code,{children:'"Nethermind"'}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-pushgatewayurl",children:(0,i.jsx)(n.code,{children:"Metrics.PushGatewayUrl"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.PushGatewayUrl \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_PUSHGATEWAYURL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "PushGatewayUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The Prometheus Pushgateway instance URL."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"mining",children:"Mining"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mining-enabled",children:(0,i.jsx)(n.code,{children:"Mining.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Mining.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Mining": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to produce blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mining-signer",children:(0,i.jsx)(n.code,{children:"Mining.Signer"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Mining.Signer \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_SIGNER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Mining": {\n "Signer": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of an external signer like ",(0,i.jsx)(n.a,{href:"https://github.com/ethereum/go-ethereum/blob/master/cmd/clef/tutorial.md",children:"Clef"}),". Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"network",children:"Network"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-bootnodes",children:(0,i.jsx)(n.code,{children:"Network.Bootnodes"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.Bootnodes \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_BOOTNODES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "Bootnodes": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"A comma-separated enode list to be used as boot nodes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-diagtracerenabled",children:(0,i.jsx)(n.code,{children:"Network.DiagTracerEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.DiagTracerEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DIAGTRACERENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "DiagTracerEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable a verbose diagnostic tracing. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-discoverydns",children:(0,i.jsx)(n.code,{children:"Network.DiscoveryDns"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryDns \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYDNS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "DiscoveryDns": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Use tree is available through a DNS name. For the default of ",(0,i.jsx)(n.code,{children:".ethdisco.net"}),", leave unspecified. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-discoveryport",children:(0,i.jsx)(n.code,{children:"Network.DiscoveryPort"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYPORT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "DiscoveryPort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The UDP port number for incoming discovery connections. It's recommended to keep it the same as the TCP port (",(0,i.jsx)(n.code,{children:"P2PPort"}),") because other values have not been tested yet. Defaults to ",(0,i.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-enableupnp",children:(0,i.jsx)(n.code,{children:"Network.EnableUPnP"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.EnableUPnP \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ENABLEUPNP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "EnableUPnP": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable automatic port forwarding via UPnP. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-externalip",children:(0,i.jsx)(n.code,{children:"Network.ExternalIp"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.ExternalIp \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_EXTERNALIP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "ExternalIp": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The external IP. Use only when the external IP cannot be resolved automatically. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-localip",children:(0,i.jsx)(n.code,{children:"Network.LocalIp"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.LocalIp \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_LOCALIP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "LocalIp": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The local IP. Use only when the local IP cannot be resolved automatically. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-maxactivepeers",children:(0,i.jsx)(n.code,{children:"Network.MaxActivePeers"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.MaxActivePeers \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "MaxActivePeers": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max allowed number of connected peers. Defaults to ",(0,i.jsx)(n.code,{children:"50"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-maxnettyarenacount",children:(0,i.jsx)(n.code,{children:"Network.MaxNettyArenaCount"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.MaxNettyArenaCount \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXNETTYARENACOUNT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "MaxNettyArenaCount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The maximum DotNetty arena count. Increasing this on a high-core CPU without increasing the memory budget may reduce chunk size so much that it causes a huge memory allocation. Defaults to ",(0,i.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-nettyarenaorder",children:(0,i.jsx)(n.code,{children:"Network.NettyArenaOrder"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.NettyArenaOrder \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_NETTYARENAORDER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "NettyArenaOrder": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The size of the DotNetty arena order. ",(0,i.jsx)(n.code,{children:"-1"})," to depend on the memory hint. Defaults to ",(0,i.jsx)(n.code,{children:"-1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-onlystaticpeers",children:(0,i.jsx)(n.code,{children:"Network.OnlyStaticPeers"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.OnlyStaticPeers \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ONLYSTATICPEERS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "OnlyStaticPeers": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use static peers only. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-p2pport",children:(0,i.jsx)(n.code,{children:"Network.P2PPort"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_P2PPORT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "P2PPort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The TCP port for incoming P2P connections. Defaults to ",(0,i.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-prioritypeersmaxcount",children:(0,i.jsx)(n.code,{children:"Network.PriorityPeersMaxCount"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.PriorityPeersMaxCount \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_PRIORITYPEERSMAXCOUNT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "PriorityPeersMaxCount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of priority peers. Can be overridden by a plugin. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-staticpeers",children:(0,i.jsx)(n.code,{children:"Network.StaticPeers"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.StaticPeers \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_STATICPEERS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "StaticPeers": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["A list of peers to keep connection for. Static peers are affected by ",(0,i.jsx)(n.code,{children:"MaxActivePeers"}),". Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"optimism",children:"Optimism"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"optimism-sequencerurl",children:(0,i.jsx)(n.code,{children:"Optimism.SequencerUrl"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Optimism.SequencerUrl \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_OPTIMISMCONFIG_SEQUENCERURL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Optimism": {\n "SequencerUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The sequencer address. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"pruning",children:"Pruning"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-availablespacecheckenabled",children:(0,i.jsx)(n.code,{children:"Pruning.AvailableSpaceCheckEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.AvailableSpaceCheckEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_AVAILABLESPACECHECKENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "AvailableSpaceCheckEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enables available disk space check. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-cachemb",children:(0,i.jsx)(n.code,{children:"Pruning.CacheMb"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.CacheMb \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_CACHEMB=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "CacheMb": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The in-memory cache size, in MB. The bigger the cache size, the bigger the disk space savings. Defaults to ",(0,i.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningcompletionbehavior",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningCompletionBehavior \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGCOMPLETIONBEHAVIOR=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningCompletionBehavior": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The behavior after pruning completion:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"None"}),": Do nothing."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Shut Nethermind down if pruning has succeeded but leave it running if failed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"AlwaysShutdown"}),": Shut Nethermind down when pruning completes, regardless of its status."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ShutdownOnSuccess"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AlwaysShutdown"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningdisablelowprioritywrites",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningDisableLowPriorityWrites"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningDisableLowPriorityWrites \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGDISABLELOWPRIORITYWRITES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningDisableLowPriorityWrites": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to disable low-priority for pruning writes. Full pruning uses low-priority write operations to prevent blocking block processing. If block processing is not high-priority, set this option to ",(0,i.jsx)(n.code,{children:"true"})," for faster pruning. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningmaxdegreeofparallelism",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningMaxDegreeOfParallelism \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMAXDEGREEOFPARALLELISM=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningMaxDegreeOfParallelism": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The max number of parallel tasks that can be used by full pruning:"}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"-1"})," to use the number of logical processors"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"0"})," to use 25% of logical processors"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"1"})," to run on single thread"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"The recommended value depends on the type of the node:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the node needs to be responsive (serves for RPC or validator), then the recommended value is ",(0,i.jsx)(n.code,{children:"0"})," or ",(0,i.jsx)(n.code,{children:"-1"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["If the node doesn't have many other responsibilities but needs to be able to follow the chain reliably without any delays and produce live logs, the ",(0,i.jsx)(n.code,{children:"0"})," or ",(0,i.jsx)(n.code,{children:"1"})," is recommended."]}),"\n",(0,i.jsxs)(n.li,{children:["If the node doesn't have to be responsive, has very fast I/O (like NVMe) and the shortest pruning time is to be achieved, then ",(0,i.jsx)(n.code,{children:"-1"})," is recommended. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningmemorybudgetmb",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningMemoryBudgetMb \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMEMORYBUDGETMB=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningMemoryBudgetMb": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The memory budget, in MB, used for the trie visit. Increasing this value significantly reduces the IOPS requirement at the expense of memory usage. ",(0,i.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,i.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningminimumdelayhours",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningMinimumDelayHours"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningMinimumDelayHours \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMINIMUMDELAYHOURS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningMinimumDelayHours": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The minimum delay, in hours, between full pruning operations not to exhaust disk writes. Defaults to ",(0,i.jsx)(n.code,{children:"240"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningthresholdmb",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningThresholdMb \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTHRESHOLDMB=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningThresholdMb": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The threshold, in MB, to trigger full pruning. Depends on ",(0,i.jsx)(n.code,{children:"Mode"})," and ",(0,i.jsx)(n.code,{children:"FullPruningTrigger"}),". Defaults to ",(0,i.jsx)(n.code,{children:"256000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningtrigger",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningTrigger"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningTrigger \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTRIGGER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningTrigger": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The full pruning trigger:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Manual"}),": Triggered manually."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"StateDbSize"}),": Trigger when the state DB size is above the threshold."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"VolumeFreeSpace"}),": Trigger when the free disk space where the state DB is stored is below the threshold."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Manual"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"StateDbSize"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VolumeFreeSpace"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Manual"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-mode",children:(0,i.jsx)(n.code,{children:"Pruning.Mode"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.Mode \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_MODE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "Mode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The pruning mode:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"None"}),": No pruning (full archive)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Memory"}),": In-memory pruning"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Full"}),": Full pruning"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Hybrid"}),": Combined in-memory and full pruning"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Memory"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Full"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Hybrid"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Hybrid"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-persistenceinterval",children:(0,i.jsx)(n.code,{children:"Pruning.PersistenceInterval"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.PersistenceInterval \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PERSISTENCEINTERVAL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "PersistenceInterval": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block persistence frequency. If set to ",(0,i.jsx)(n.code,{children:"N"}),", it caches after each ",(0,i.jsx)(n.code,{children:"Nth"})," block even if not required by cache memory usage. Defaults to ",(0,i.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-pruningboundary",children:(0,i.jsx)(n.code,{children:"Pruning.PruningBoundary"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.PruningBoundary \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PRUNINGBOUNDARY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "PruningBoundary": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of past states before the state gets pruned. Used to determine how old of a state to keep from the head. Defaults to ",(0,i.jsx)(n.code,{children:"64"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-trackedpastkeycountmemoryratio",children:(0,i.jsx)(n.code,{children:"Pruning.TrackedPastKeyCountMemoryRatio"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.TrackedPastKeyCountMemoryRatio \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_TRACKEDPASTKEYCOUNTMEMORYRATIO=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "TrackedPastKeyCountMemoryRatio": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The ratio of memory out of ",(0,i.jsx)(n.code,{children:"Pruning.CacheMb"})," to allocate for the LRU cache, used to track past keys for live pruning. Defaults to ",(0,i.jsx)(n.code,{children:"0.1"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"receipt",children:"Receipt"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-compactreceiptstore",children:(0,i.jsx)(n.code,{children:"Receipt.CompactReceiptStore"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.CompactReceiptStore \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTRECEIPTSTORE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "CompactReceiptStore": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to compact receipts database size at the expense of RPC performance. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-compacttxindex",children:(0,i.jsx)(n.code,{children:"Receipt.CompactTxIndex"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.CompactTxIndex \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTTXINDEX=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "CompactTxIndex": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to compact receipts transaction index database size at the expense of RPC performance. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-receiptsmigration",children:(0,i.jsx)(n.code,{children:"Receipt.ReceiptsMigration"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.ReceiptsMigration \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_RECEIPTSMIGRATION=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "ReceiptsMigration": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to migrate the receipts database to the new schema. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-storereceipts",children:(0,i.jsx)(n.code,{children:"Receipt.StoreReceipts"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.StoreReceipts \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_STORERECEIPTS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "StoreReceipts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to store receipts after a new block is processed. This setting is independent from downloading receipts in fast sync mode. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-txlookuplimit",children:(0,i.jsx)(n.code,{children:"Receipt.TxLookupLimit"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.TxLookupLimit \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_TXLOOKUPLIMIT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "TxLookupLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of recent blocks to maintain transaction index for. ",(0,i.jsx)(n.code,{children:"0"})," to never remove indices, ",(0,i.jsx)(n.code,{children:"-1"})," to never index. Defaults to ",(0,i.jsx)(n.code,{children:"2350000"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"seq",children:"Seq"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"seq-apikey",children:(0,i.jsx)(n.code,{children:"Seq.ApiKey"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Seq.ApiKey \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_APIKEY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Seq": {\n "ApiKey": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The Seq API key."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"seq-minlevel",children:(0,i.jsx)(n.code,{children:"Seq.MinLevel"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Seq.MinLevel \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_MINLEVEL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Seq": {\n "MinLevel": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The min log level to sent to Seq. Defaults to ",(0,i.jsx)(n.code,{children:"Off"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"seq-serverurl",children:(0,i.jsx)(n.code,{children:"Seq.ServerUrl"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Seq.ServerUrl \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_SERVERURL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Seq": {\n "ServerUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Seq instance URL. Defaults to ",(0,i.jsx)(n.code,{children:"http://localhost:5341"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"snapshot",children:"Snapshot"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-checksum",children:(0,i.jsx)(n.code,{children:"Snapshot.Checksum"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.Checksum \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_CHECKSUM=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "Checksum": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The SHA-256 checksum of the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-downloadurl",children:(0,i.jsx)(n.code,{children:"Snapshot.DownloadUrl"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.DownloadUrl \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_DOWNLOADURL=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "DownloadUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-enabled",children:(0,i.jsx)(n.code,{children:"Snapshot.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the Snapshot plugin. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-snapshotdirectory",children:(0,i.jsx)(n.code,{children:"Snapshot.SnapshotDirectory"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.SnapshotDirectory \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTDIRECTORY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "SnapshotDirectory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the directory to store the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"snapshot"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-snapshotfilename",children:(0,i.jsx)(n.code,{children:"Snapshot.SnapshotFileName"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.SnapshotFileName \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTFILENAME=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "SnapshotFileName": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The name of the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"snapshot.zip"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"sync",children:"Sync"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-ancientbodiesbarrier",children:(0,i.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.AncientBodiesBarrier \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "AncientBodiesBarrier": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The earliest body downloaded with fast sync when ",(0,i.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, AncientBodiesBarrier } }\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-ancientreceiptsbarrier",children:(0,i.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.AncientReceiptsBarrier \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "AncientReceiptsBarrier": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The earliest receipt downloaded with fast sync when ",(0,i.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, max{ AncientBodiesBarrier, AncientReceiptsBarrier } } }\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-blocksdbtunedbmode",children:(0,i.jsx)(n.code,{children:"Sync.BlocksDbTuneDbMode"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.BlocksDbTuneDbMode \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_BLOCKSDBTUNEDBMODE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "BlocksDbTuneDbMode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Configure the blocks database for write optimizations during sync."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Default"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"EnableBlobFiles"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-downloadbodiesinfastsync",children:(0,i.jsx)(n.code,{children:"Sync.DownloadBodiesInFastSync"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNC=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "DownloadBodiesInFastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download the block bodies in the Fast sync mode. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-downloadheadersinfastsync",children:(0,i.jsx)(n.code,{children:"Sync.DownloadHeadersInFastSync"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.DownloadHeadersInFastSync \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADHEADERSINFASTSYNC=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "DownloadHeadersInFastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download the old block headers in the Fast sync mode. If ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind downloads only recent blocks headers. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-downloadreceiptsinfastsync",children:(0,i.jsx)(n.code,{children:"Sync.DownloadReceiptsInFastSync"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.DownloadReceiptsInFastSync \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNC=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "DownloadReceiptsInFastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download receipts in the Fast sync mode. This slows down the process by a few hours but allows to interact with dApps that perform extensive historical logs searches. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-exitonsynced",children:(0,i.jsx)(n.code,{children:"Sync.ExitOnSynced"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.ExitOnSynced \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "ExitOnSynced": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to shut down Nethermind once sync is finished. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-exitonsyncedwaittimesec",children:(0,i.jsx)(n.code,{children:"Sync.ExitOnSyncedWaitTimeSec"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.ExitOnSyncedWaitTimeSec \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCEDWAITTIMESEC=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "ExitOnSyncedWaitTimeSec": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The time, in seconds, to wait before shutting down Nethermind once sync is finished. Defaults to ",(0,i.jsx)(n.code,{children:"60"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fastsync",children:(0,i.jsx)(n.code,{children:"Sync.FastSync"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FastSync \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNC=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use the Fast sync mode (the eth/63 synchronization algorithm). Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fastsynccatchupheightdelta",children:(0,i.jsx)(n.code,{children:"Sync.FastSyncCatchUpHeightDelta"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FastSyncCatchUpHeightDelta \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNCCATCHUPHEIGHTDELTA=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FastSyncCatchUpHeightDelta": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["In Fast sync mode, the min height threshold limit up to which the Full sync, if already on, stays on when the chain is behind the network head. If the limit is exceeded, it switches back to Fast sync. For regular usage scenarios, setting this value lower than 32 is not recommended as this can cause issues with chain reorgs. Note that the last 2 blocks are always processed in Full sync, so setting it lower than 2 has no effect. Defaults to ",(0,i.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixreceipts",children:(0,i.jsx)(n.code,{children:"Sync.FixReceipts"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixReceipts \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXRECEIPTS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixReceipts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable receipts validation that checks for receipts that might be missing because of a bug. If needed, receipts are downloaded from the network. If ",(0,i.jsx)(n.code,{children:"true"}),", the pivot number must be same one used originally as it's used as a cut-off point. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixtotaldifficulty",children:(0,i.jsx)(n.code,{children:"Sync.FixTotalDifficulty"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixTotalDifficulty \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to recalculate the total difficulty from ",(0,i.jsx)(n.code,{children:"FixTotalDifficultyStartingBlock"})," to ",(0,i.jsx)(n.code,{children:"FixTotalDifficultyLastBlock"}),". Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixtotaldifficultylastblock",children:(0,i.jsx)(n.code,{children:"Sync.FixTotalDifficultyLastBlock"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixTotalDifficultyLastBlock \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYLASTBLOCK=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixTotalDifficultyLastBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The last block to recalculate the total difficulty for. If not specified, the best known block is used.\nDefaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixtotaldifficultystartingblock",children:(0,i.jsx)(n.code,{children:"Sync.FixTotalDifficultyStartingBlock"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixTotalDifficultyStartingBlock \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYSTARTINGBLOCK=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixTotalDifficultyStartingBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The first block to recalculate the total difficulty for. Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-maxattemptstoupdatepivot",children:(0,i.jsx)(n.code,{children:"Sync.MaxAttemptsToUpdatePivot"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.MaxAttemptsToUpdatePivot \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXATTEMPTSTOUPDATEPIVOT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "MaxAttemptsToUpdatePivot": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of attempts to update the pivot block based on the FCU message from the consensus client. Defaults to ",(0,i.jsx)(n.code,{children:"2147483647"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-maxprocessingthreads",children:(0,i.jsx)(n.code,{children:"Sync.MaxProcessingThreads"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.MaxProcessingThreads \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXPROCESSINGTHREADS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "MaxProcessingThreads": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of threads used for syncing. ",(0,i.jsx)(n.code,{children:"0"})," to use the number of logical processors. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-networkingenabled",children:(0,i.jsx)(n.code,{children:"Sync.NetworkingEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.NetworkingEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NETWORKINGENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "NetworkingEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to connect to peers and sync. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-nonvalidatornode",children:(0,i.jsx)(n.code,{children:"Sync.NonValidatorNode"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.NonValidatorNode \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NONVALIDATORNODE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "NonValidatorNode": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to operate as a non-validator. If ",(0,i.jsx)(n.code,{children:"true"}),", the ",(0,i.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," and ",(0,i.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," can be set to ",(0,i.jsx)(n.code,{children:"false"}),". Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-pivothash",children:(0,i.jsx)(n.code,{children:"Sync.PivotHash"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.PivotHash \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTHASH=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "PivotHash": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The hash of the pivot block for the Fast sync mode. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-pivotnumber",children:(0,i.jsx)(n.code,{children:"Sync.PivotNumber"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.PivotNumber \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTNUMBER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "PivotNumber": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of the pivot block for the Fast sync mode. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-pivottotaldifficulty",children:(0,i.jsx)(n.code,{children:"Sync.PivotTotalDifficulty"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.PivotTotalDifficulty \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "PivotTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The total difficulty of the pivot block for the Fast sync mode. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-snapsync",children:(0,i.jsx)(n.code,{children:"Sync.SnapSync"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.SnapSync \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNC=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "SnapSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use the Snap sync mode. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-snapsyncaccountrangepartitioncount",children:(0,i.jsx)(n.code,{children:"Sync.SnapSyncAccountRangePartitionCount"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.SnapSyncAccountRangePartitionCount \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNCACCOUNTRANGEPARTITIONCOUNT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "SnapSyncAccountRangePartitionCount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of account range partitions to create. Increases the Snap sync request concurrency. Allowed values are between between 1 and 256. Defaults to ",(0,i.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-strictmode",children:(0,i.jsx)(n.code,{children:"Sync.StrictMode"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.StrictMode \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_STRICTMODE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "StrictMode": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to disable some optimizations and do a more extensive sync. Useful when sync state is corrupted. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-synchronizationenabled",children:(0,i.jsx)(n.code,{children:"Sync.SynchronizationEnabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.SynchronizationEnabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SYNCHRONIZATIONENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "SynchronizationEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download and process new blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-tunedbmode",children:(0,i.jsx)(n.code,{children:"Sync.TuneDbMode"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.TuneDbMode \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_TUNEDBMODE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "TuneDbMode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Configure the database for write optimizations during sync. Significantly reduces the total number of writes and sync time if you are not network limited."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Default"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"HeavyWrite"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-usegethlimitsinfastblocks",children:(0,i.jsx)(n.code,{children:"Sync.UseGethLimitsInFastBlocks"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.UseGethLimitsInFastBlocks \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "UseGethLimitsInFastBlocks": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to make smaller requests, in Fast Blocks mode, to avoid Geth from disconnecting. On the Geth-heavy networks (e.g., Mainnet), it's a desired behavior while on Nethermind- or OpenEthereum-heavy networks (Aura), it slows down the sync by a factor of ~4. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"tracestore",children:"TraceStore"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-blockstokeep",children:(0,i.jsx)(n.code,{children:"TraceStore.BlocksToKeep"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.BlocksToKeep \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_BLOCKSTOKEEP=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "BlocksToKeep": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of blocks to store, counting from the head. If ",(0,i.jsx)(n.code,{children:"0"}),", all traces of the processed blocks are stored. Defaults to ",(0,i.jsx)(n.code,{children:"10000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-deserializationparallelization",children:(0,i.jsx)(n.code,{children:"TraceStore.DeserializationParallelization"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.DeserializationParallelization \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_DESERIALIZATIONPARALLELIZATION=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "DeserializationParallelization": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max parallelization when deserialization requests the ",(0,i.jsx)(n.code,{children:"trace_filter"})," method. ",(0,i.jsx)(n.code,{children:"0"})," to use the number of logical processors. If you experience a resource shortage, set to a low number. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-enabled",children:(0,i.jsx)(n.code,{children:"TraceStore.Enabled"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.Enabled \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_ENABLED=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the TraceStore plugin. If enabled, traces come from the database whenever possible. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-tracetypes",children:(0,i.jsx)(n.code,{children:"TraceStore.TraceTypes"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.TraceTypes \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_TRACETYPES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "TraceTypes": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The type of traces to store."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VmTrace"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"StateDiff"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Trace"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Rewards"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Trace, Rewards"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"txpool",children:"TxPool"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-blobcachesize",children:(0,i.jsx)(n.code,{children:"TxPool.BlobCacheSize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.BlobCacheSize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBCACHESIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "BlobCacheSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of full blob transactions cached in memory. The default value uses max 200MB for 6 blobs where one blob is 33MB (256 * 128KB) Defaults to ",(0,i.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-blobssupport",children:(0,i.jsx)(n.code,{children:"TxPool.BlobsSupport"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.BlobsSupport \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBSSUPPORT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "BlobsSupport": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Blobs support mode:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Disabled"}),": No support for blob transactions"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"InMemory"}),": Blob transactions stored only in memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Storage"}),": Blob transactions stored in db"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"StorageWithReorgs"}),": Blob transactions stored in db with support for restoring reorganized blob transactions to blob pool"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Disabled"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"InMemory"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Storage"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"StorageWithReorgs"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"StorageWithReorgs"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-gaslimit",children:(0,i.jsx)(n.code,{children:"TxPool.GasLimit"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.GasLimit \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_GASLIMIT=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "GasLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max transaction gas allowed. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-hashcachesize",children:(0,i.jsx)(n.code,{children:"TxPool.HashCacheSize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.HashCacheSize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_HASHCACHESIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "HashCacheSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of cached hashes of already known transactions. Set automatically by the memory hint. Defaults to ",(0,i.jsx)(n.code,{children:"524288"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-inmemoryblobpoolsize",children:(0,i.jsx)(n.code,{children:"TxPool.InMemoryBlobPoolSize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.InMemoryBlobPoolSize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_INMEMORYBLOBPOOLSIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "InMemoryBlobPoolSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of full blob transactions stored in memory. Used only if persistent storage is disabled. Defaults to ",(0,i.jsx)(n.code,{children:"512"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-maxpendingblobtxspersender",children:(0,i.jsx)(n.code,{children:"TxPool.MaxPendingBlobTxsPerSender"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.MaxPendingBlobTxsPerSender \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGBLOBTXSPERSENDER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "MaxPendingBlobTxsPerSender": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of pending blob transactions per single sender. ",(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-maxpendingtxspersender",children:(0,i.jsx)(n.code,{children:"TxPool.MaxPendingTxsPerSender"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.MaxPendingTxsPerSender \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGTXSPERSENDER=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "MaxPendingTxsPerSender": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of pending transactions per single sender. ",(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-minbasefeethreshold",children:(0,i.jsx)(n.code,{children:"TxPool.MinBaseFeeThreshold"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.MinBaseFeeThreshold \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MINBASEFEETHRESHOLD=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "MinBaseFeeThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The minimal percentage of the current base fee that must be surpassed by the max fee (",(0,i.jsx)(n.code,{children:"max_fee_per_gas"}),") for the transaction to be broadcasted. Defaults to ",(0,i.jsx)(n.code,{children:"70"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-peernotificationthreshold",children:(0,i.jsx)(n.code,{children:"TxPool.PeerNotificationThreshold"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.PeerNotificationThreshold \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PEERNOTIFICATIONTHRESHOLD=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "PeerNotificationThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The average percentage of transaction hashes from persistent broadcast sent to a peer together with hashes of the last added transactions. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-persistentblobstoragesize",children:(0,i.jsx)(n.code,{children:"TxPool.PersistentBlobStorageSize"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.PersistentBlobStorageSize \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PERSISTENTBLOBSTORAGESIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "PersistentBlobStorageSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of full blob transactions stored in the database (increasing the number of transactions in the blob pool also results in higher memory usage). The default value uses max 13GB for 6 blobs where one blob is 2GB (16386 * 128KB). Defaults to ",(0,i.jsx)(n.code,{children:"16384"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-reportminutes",children:(0,i.jsx)(n.code,{children:"TxPool.ReportMinutes"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.ReportMinutes \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_REPORTMINUTES=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "ReportMinutes": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The current transaction pool state reporting interval, in minutes. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-size",children:(0,i.jsx)(n.code,{children:"TxPool.Size"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.Size \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_SIZE=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "Size": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of transactions held in the mempool (the more transactions in the mempool, the more memory used). Defaults to ",(0,i.jsx)(n.code,{children:"2048"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"wallet",children:"Wallet"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"wallet-devaccounts",children:(0,i.jsx)(n.code,{children:"Wallet.DevAccounts"})}),"\n",(0,i.jsxs)(c.A,{groupId:"usage",children:[(0,i.jsx)(r.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Wallet.DevAccounts \n"})})}),(0,i.jsx)(r.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_WALLETCONFIG_DEVACCOUNTS=\n"})})}),(0,i.jsx)(r.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Wallet": {\n "DevAccounts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of autogenerated developer accounts to work with. Developer accounts have private keys from ",(0,i.jsx)(n.code,{children:"00...01"})," to ",(0,i.jsx)(n.code,{children:"00...n"}),". Defaults to ",(0,i.jsx)(n.code,{children:"10"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"environment-variables",children:"Environment variables"}),"\n",(0,i.jsx)(n.p,{children:"To configure Nethermind using environment variables, the following naming convention is used in all uppercase:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-text",children:"NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}\n"})}),"\n",(0,i.jsxs)(n.p,{children:["For instance, the environment variable equivalent of the command line ",(0,i.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile"})," option is ",(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"}),". For the list of configuration namespaces and their options, see ",(0,i.jsx)(n.a,{href:"#options-by-namespaces",children:"Options by namespaces"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"configuration-file",children:"Configuration file"}),"\n",(0,i.jsxs)(n.p,{children:["The configuration file is a JSON file with ",(0,i.jsx)(n.code,{children:".cfg"})," extension. The bundled configuration files are located in the ",(0,i.jsx)(n.code,{children:"configs"})," directory and named after the network they are used for. For instance, see the Mainnet configuration file ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:(0,i.jsx)(n.code,{children:"mainnet.cfg"})}),"."]})]})}function j(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}},9365:(e,n,l)=>{l.d(n,{A:()=>r});l(6540);var i=l(4164);const s={tabItem:"tabItem_Ymn6"};var c=l(4848);function r(e){let{children:n,hidden:l,className:r}=e;return(0,c.jsx)("div",{role:"tabpanel",className:(0,i.A)(s.tabItem,r),hidden:l,children:n})}},1470:(e,n,l)=>{l.d(n,{A:()=>I});var i=l(6540),s=l(4164),c=l(3104),r=l(6347),d=l(205),a=l(7485),o=l(1682),h=l(679);function t(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:l}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:l,attributes:i,default:s}}=e;return{value:n,label:l,attributes:i,default:s}}))}(l);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,l])}function j(e){let{value:n,tabValues:l}=e;return l.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:l}=e;const s=(0,r.W6)(),c=function(e){let{queryString:n=!1,groupId:l}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!l)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return l??null}({queryString:n,groupId:l});return[(0,a.aZ)(c),(0,i.useCallback)((e=>{if(!c)return;const n=new URLSearchParams(s.location.search);n.set(c,e),s.replace({...s.location,search:n.toString()})}),[c,s])]}function v(e){const{defaultValue:n,queryString:l=!1,groupId:s}=e,c=x(e),[r,a]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:l}=e;if(0===l.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:l}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${l.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=l.find((e=>e.default))??l[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:c}))),[o,t]=u({queryString:l,groupId:s}),[v,p]=function(e){let{groupId:n}=e;const l=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,c]=(0,h.Dv)(l);return[s,(0,i.useCallback)((e=>{l&&c.set(e)}),[l,c])]}({groupId:s}),g=(()=>{const e=o??v;return j({value:e,tabValues:c})?e:null})();(0,d.A)((()=>{g&&a(g)}),[g]);return{selectedValue:r,selectValue:(0,i.useCallback)((e=>{if(!j({value:e,tabValues:c}))throw new Error(`Can't select invalid tab value=${e}`);a(e),t(e),p(e)}),[t,p,c]),tabValues:c}}var p=l(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=l(4848);function f(e){let{className:n,block:l,selectedValue:i,selectValue:r,tabValues:d}=e;const a=[],{blockElementScrollPositionUntilNextRender:o}=(0,c.a_)(),h=e=>{const n=e.currentTarget,l=a.indexOf(n),s=d[l].value;s!==i&&(o(n),r(s))},t=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const l=a.indexOf(e.currentTarget)+1;n=a[l]??a[0];break}case"ArrowLeft":{const l=a.indexOf(e.currentTarget)-1;n=a[l]??a[a.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":l},n),children:d.map((e=>{let{value:n,label:l,attributes:c}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>a.push(e),onKeyDown:t,onClick:h,...c,className:(0,s.A)("tabs__item",g.tabItem,c?.className,{"tabs__item--active":i===n}),children:l??n},n)}))})}function m(e){let{lazy:n,children:l,selectedValue:c}=e;const r=(Array.isArray(l)?l:[l]).filter(Boolean);if(n){const e=r.find((e=>e.props.value===c));return e?(0,i.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:r.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==c})))})}function E(e){const n=v(e);return(0,b.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(m,{...n,...e})]})}function I(e){const n=(0,p.A)();return(0,b.jsx)(E,{...e,children:t(e.children)},String(n))}},8453:(e,n,l)=>{l.d(n,{R:()=>r,x:()=>d});var i=l(6540);const s={},c=i.createContext(s);function r(e){const n=i.useContext(c);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(c.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/408679b9.c5afc17f.js b/assets/js/408679b9.6a203cb2.js similarity index 99% rename from assets/js/408679b9.c5afc17f.js rename to assets/js/408679b9.6a203cb2.js index 9dff35ed2..a229cb3f4 100644 --- a/assets/js/408679b9.c5afc17f.js +++ b/assets/js/408679b9.6a203cb2.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8634],{3733:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=s(4848),a=s(8453),l=s(1470),t=s(9365);const o={title:"personal namespace",sidebar_label:"personal",sidebar_position:6},c=void 0,i={id:"interacting/json-rpc-ns/personal",title:"personal namespace",description:"personal_importRawKey",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/personal.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/personal",permalink:"/interacting/json-rpc-ns/personal",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/personal.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:6,frontMatter:{title:"personal namespace",sidebar_label:"personal",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"parity",permalink:"/interacting/json-rpc-ns/parity"},next:{title:"proof",permalink:"/interacting/json-rpc-ns/proof"}},u={},d=[{value:"personal_importRawKey",id:"personal_importrawkey",level:3},{value:"personal_listAccounts",id:"personal_listaccounts",level:3},{value:"personal_lockAccount",id:"personal_lockaccount",level:3},{value:"personal_newAccount",id:"personal_newaccount",level:3},{value:"personal_unlockAccount",id:"personal_unlockaccount",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"personal_importrawkey",children:"personal_importRawKey"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"keyData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_importRawKey",\n "params": [keyData, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_listaccounts",children:"personal_listAccounts"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_listAccounts",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_lockaccount",children:"personal_lockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_lockAccount",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_newaccount",children:"personal_newAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_newAccount",\n "params": [passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_unlockaccount",children:"personal_unlockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_unlockAccount",\n "params": [address, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const a={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),a=s(4164),l=s(3104),t=s(6347),o=s(205),c=s(7485),i=s(1682),u=s(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:a}}=e;return{value:n,label:s,attributes:r,default:a}}))}(s);return function(e){const n=(0,i.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const a=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(a.location.search);n.set(l,e),a.replace({...a.location,search:n.toString()})}),[l,a])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:a}=e,l=p(e),[t,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[i,d]=j({queryString:s,groupId:a}),[m,x]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,l]=(0,u.Dv)(s);return[a,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:a}),b=(()=>{const e=i??m;return h({value:e,tabValues:l})?e:null})();(0,o.A)((()=>{b&&c(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),x(e)}),[d,x,l]),tabValues:l}}var x=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:o}=e;const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),u=e=>{const n=e.currentTarget,s=c.indexOf(n),a=o[s].value;a!==r&&(i(n),t(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":s},n),children:o.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:d,onClick:u,...l,className:(0,a.A)("tabs__item",b.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function g(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function A(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(g,{...n,...e})]})}function _(e){const n=(0,x.A)();return(0,f.jsx)(A,{...e,children:d(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>o});var r=s(6540);const a={},l=r.createContext(a);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8634],{3733:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=s(4848),a=s(8453),l=s(1470),t=s(9365);const o={title:"personal namespace",sidebar_label:"personal",sidebar_position:6},c=void 0,i={id:"interacting/json-rpc-ns/personal",title:"personal namespace",description:"personal_importRawKey",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/personal.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/personal",permalink:"/interacting/json-rpc-ns/personal",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/personal.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:6,frontMatter:{title:"personal namespace",sidebar_label:"personal",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"parity",permalink:"/interacting/json-rpc-ns/parity"},next:{title:"proof",permalink:"/interacting/json-rpc-ns/proof"}},u={},d=[{value:"personal_importRawKey",id:"personal_importrawkey",level:3},{value:"personal_listAccounts",id:"personal_listaccounts",level:3},{value:"personal_lockAccount",id:"personal_lockaccount",level:3},{value:"personal_newAccount",id:"personal_newaccount",level:3},{value:"personal_unlockAccount",id:"personal_unlockaccount",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"personal_importrawkey",children:"personal_importRawKey"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"keyData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_importRawKey",\n "params": [keyData, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_listaccounts",children:"personal_listAccounts"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_listAccounts",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_lockaccount",children:"personal_lockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_lockAccount",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_newaccount",children:"personal_newAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_newAccount",\n "params": [passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_unlockaccount",children:"personal_unlockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_unlockAccount",\n "params": [address, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const a={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),a=s(4164),l=s(3104),t=s(6347),o=s(205),c=s(7485),i=s(1682),u=s(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:a}}=e;return{value:n,label:s,attributes:r,default:a}}))}(s);return function(e){const n=(0,i.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const a=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(a.location.search);n.set(l,e),a.replace({...a.location,search:n.toString()})}),[l,a])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:a}=e,l=p(e),[t,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[i,d]=j({queryString:s,groupId:a}),[m,x]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,l]=(0,u.Dv)(s);return[a,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:a}),b=(()=>{const e=i??m;return h({value:e,tabValues:l})?e:null})();(0,o.A)((()=>{b&&c(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),x(e)}),[d,x,l]),tabValues:l}}var x=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:o}=e;const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),u=e=>{const n=e.currentTarget,s=c.indexOf(n),a=o[s].value;a!==r&&(i(n),t(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":s},n),children:o.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:d,onClick:u,...l,className:(0,a.A)("tabs__item",b.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function g(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function A(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(g,{...n,...e})]})}function _(e){const n=(0,x.A)();return(0,f.jsx)(A,{...e,children:d(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>o});var r=s(6540);const a={},l=r.createContext(a);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4444ff13.fe08f4d1.js b/assets/js/4444ff13.2e01e795.js similarity index 99% rename from assets/js/4444ff13.fe08f4d1.js rename to assets/js/4444ff13.2e01e795.js index 6aef6c9ab..23ade5752 100644 --- a/assets/js/4444ff13.fe08f4d1.js +++ b/assets/js/4444ff13.2e01e795.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9855],{361:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=n(4848),o=n(8453);const r={title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},i=void 0,a={id:"fundamentals/private-networks",title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",source:"@site/docs/fundamentals/private-networks.md",sourceDirName:"fundamentals",slug:"/fundamentals/private-networks",permalink:"/next/fundamentals/private-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/private-networks.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Performance tuning",permalink:"/next/fundamentals/performance-tuning"},next:{title:"JSON-RPC server",permalink:"/next/interacting/json-rpc-server"}},c={},d=[{value:"Step 1: Prerequisites",id:"step-1-prerequisites",level:2},{value:"Step 2: Configure your network",id:"step-2-configure-your-network",level:2},{value:"Step 3: Deploy",id:"step-3-deploy",level:2},{value:"Step 4: Optional workflows",id:"step-4-optional-workflows",level:2},{value:"Simulating MEV workflows with mev-boost",id:"simulating-mev-workflows-with-mev-boost",level:3},{value:"Observability tools",id:"observability-tools",level:3},{value:"Deploying on Kubernetes",id:"deploying-on-kubernetes",level:3},{value:"Questions and feedback",id:"questions-and-feedback",level:2}];function l(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["This guide will walk you through using ",(0,s.jsxs)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:["Kurtosis ",(0,s.jsx)(t.code,{children:"ethereum-package"})]})," to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure to simulate MEV workflows."]}),"\n",(0,s.jsx)(t.h2,{id:"step-1-prerequisites",children:"Step 1: Prerequisites"}),"\n",(0,s.jsxs)(t.p,{children:["Before you begin, ensure you have ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/install",children:"Kurtosis CLI"})," and ",(0,s.jsx)(t.a,{href:"https://docs.docker.com/get-docker",children:"Docker"})," installed. The ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:(0,s.jsx)(t.code,{children:"ethereum-package"})})," is a Kurtosis environment definition known as a ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/packages",children:"package"}),". For more info about Kurtosis, see the ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com",children:"Kurtosis docs"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-2-configure-your-network",children:"Step 2: Configure your network"}),"\n",(0,s.jsxs)(t.p,{children:["Next, in your home directory, create a file with the name ",(0,s.jsx)(t.code,{children:"network_params.json"})," and populate it with the following contents:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-json",metastring:'title="network_params.json"',children:'{\n "participants": [\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lighthouse",\n "cl_client_image": "sigp/lighthouse:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "teku",\n "cl_client_image": "consensys/teku:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lodestar",\n "cl_client_image": "chainsafe/lodestar:next",\n "count": 1\n }\n ],\n "mev_type": "None",\n "launch_additional_services": false\n}\n'})}),"\n",(0,s.jsxs)(t.p,{children:["As you can see above, you have effectively created a network configuration file that Kurtosis will use to pass in the necessary parameters at runtime for your network. Notice that the ",(0,s.jsx)(t.code,{children:"participant"})," key describes the execution and consensus client pairing desired for each full node and how many nodes of that type to instantiate."]}),"\n",(0,s.jsxs)(t.p,{children:["There are many other configurations and flags you can use, including metrics and observability tools (e.g., Grafana, Prometheus, etc). For all supported options, see the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package#configuration",children:"configuration"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-3-deploy",children:"Step 3: Deploy"}),"\n",(0,s.jsxs)(t.p,{children:["Finally, once you have saved the ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, it is time to deploy the private net:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'kurtosis run github.com/ethpandaops/ethereum-package "$(cat ~/network_params.json)"\n'})}),"\n",(0,s.jsxs)(t.p,{children:["Kurtosis will use the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," environment definition and your custom network configuration (defined in ",(0,s.jsx)(t.code,{children:"network_params.json"}),") to spin up your network. Kurtosis will first spin up an ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"})," (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 and used to start up the private testnet."]}),"\n",(0,s.jsx)(t.p,{children:"Here is a sample output:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{children:"INFO[2023-09-01T16:10:45-04:00] ====================================================\nINFO[2023-09-01T16:10:45-04:00] || Created enclave: timid-knoll ||\nINFO[2023-09-01T16:10:45-04:00] ====================================================\nName: timid-knoll\nUUID: 939dfb5d59b0\nStatus: RUNNING\nCreation Time: Fri, 01 Sep 2023 16:08:57 EDT\n\n========================================= Files Artifacts =========================================\nUUID Name\na876b06035b7 1-lighthouse-nethermind-0-63\n87955ef69845 2-teku-nethermind-64-127\n4f77377da494 3-lodestar-nethermind-128-191\n9734313101e3 cl-genesis-data\n4164ed5c594c el-genesis-data\na49a3d2774b5 genesis-generation-config-cl\n16fcc4f96236 genesis-generation-config-el\n5fc72346f646 geth-prefunded-keys\n96ae153a0b51 prysm-password\n\n========================================== User Services ==========================================\nUUID Name Ports Status\nf369802ad2ae cl-1-lighthouse-nethermind http: 4000/tcp -> http://127.0.0.1:49894 RUNNING\n metrics: 5054/tcp -> http://127.0.0.1:49892\n tcp-discovery: 9000/tcp -> 127.0.0.1:49893\n udp-discovery: 9000/udp -> 127.0.0.1:64949\n5e14eb26ef45 cl-1-lighthouse-nethermind-validator http: 5042/tcp -> 127.0.0.1:49895 RUNNING\n metrics: 5064/tcp -> http://127.0.0.1:49896\nfed533d0e143 cl-2-teku-nethermind http: 4000/tcp -> 127.0.0.1:49899 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49897\n tcp-discovery: 9000/tcp -> 127.0.0.1:49898\n udp-discovery: 9000/udp -> 127.0.0.1:55521\n69cd832de246 cl-3-lodestar-nethermind http: 4000/tcp -> 127.0.0.1:49903 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49901\n tcp-discovery: 9000/tcp -> 127.0.0.1:49902\n udp-discovery: 9000/udp -> 127.0.0.1:50507\n75e3eec0c7d1 cl-3-lodestar-nethermind-validator metrics: 8008/tcp -> 127.0.0.1:49904 RUNNING\ne10c3f07e0e0 el-1-nethermind-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:49872 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49870\n tcp-discovery: 30303/tcp -> 127.0.0.1:49869\n udp-discovery: 30303/udp -> 127.0.0.1:64508\n ws: 8546/tcp -> 127.0.0.1:49871\nc6a28d3136fe el-2-nethermind-teku engine-rpc: 8551/tcp -> 127.0.0.1:49873 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49875\n tcp-discovery: 30303/tcp -> 127.0.0.1:49874\n udp-discovery: 30303/udp -> 127.0.0.1:52495\n ws: 8546/tcp -> 127.0.0.1:49876\n2fae3b3c41d3 el-3-nethermind-lodestar engine-rpc: 8551/tcp -> 127.0.0.1:49890 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49888\n tcp-discovery: 30303/tcp -> 127.0.0.1:49891\n udp-discovery: 30303/udp -> 127.0.0.1:62119\n ws: 8546/tcp -> 127.0.0.1:49889\n403cafe8416e prelaunch-data-generator-cl-genesis-data RUNNING\nebea71008cf4 prelaunch-data-generator-el-genesis-data RUNNING\n"})}),"\n",(0,s.jsx)(t.p,{children:"And that is it! You now have a 3-node, private Ethereum devnet with Nethermind/Lodestar, Nethermind/Teku, and Nethermind/Lighthouse execution and consensus client combinations."}),"\n",(0,s.jsxs)(t.p,{children:["Notice how, at the end, Kurtosis will print out the contents of your enclave, which includes both the various ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/files-artifacts",children:"files artifacts"})," and services that form your network. Kurtosis also maps the container ports to ephemeral local ports on your machine."]}),"\n",(0,s.jsxs)(t.p,{children:["Genesis data was generated using this ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-genesis-generator",children:"genesis-generator"})," to bootstrap the execution and consensus 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 ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"Kurtosis packages are modular, reproducible, and will work over Docker or Kubernetes. Read on to learn about additional services and configurations you may want to add to your private network."}),"\n",(0,s.jsx)(t.h2,{id:"step-4-optional-workflows",children:"Step 4: Optional workflows"}),"\n",(0,s.jsx)(t.p,{children:"This section briefly covers some optional configurations for your private devnet that are commonly used for validating and testing node-level behavior."}),"\n",(0,s.jsxs)(t.h3,{id:"simulating-mev-workflows-with-mev-boost",children:["Simulating MEV workflows with ",(0,s.jsx)(t.code,{children:"mev-boost"})]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," can simulate out-of-protocol Proposer Builder Separation (PBS) workflows using Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure. With a single flag, you can configure your network's validators to be instantiated with ",(0,s.jsx)(t.code,{children:"mev-boost"})," and be registered with a relayer to receive payloads from builders."]}),"\n",(0,s.jsxs)(t.p,{children:["To enable this in your ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, set ",(0,s.jsx)(t.code,{children:'"mev_type":'})," to ",(0,s.jsx)(t.code,{children:'"full"'})," or ",(0,s.jsx)(t.code,{children:'"mock"'}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["To learn more about how the ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure works with your private network, check out ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/how-to-full-mev-with-ethereum-package",children:"this guide"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"observability-tools",children:"Observability tools"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," comes out of the box with a few observability tools, including:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"A Grafana and Prometheus instance"}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/dapplion/beacon-metrics-gazer",children:"beacon metrics gazer service"})," to collect network-wide participation metrics"]}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/ethDreamer/json_rpc_snoop",children:"JSON-RPC Snooper"})," to log responses & requests between the execution engine API and the consensus client"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["To add your own custom Grafana dashboard template, fork the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," repository and add your configuration ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package/tree/main/static_files/grafana-config/dashboards",children:"here"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"deploying-on-kubernetes",children:"Deploying on Kubernetes"}),"\n",(0,s.jsxs)(t.p,{children:["As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," on Kubernetes, see ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/k8s",children:"Running Kurtosis in Kubernetes"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"questions-and-feedback",children:"Questions and feedback"}),"\n",(0,s.jsxs)(t.p,{children:["If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:"GitHub"})," or ",(0,s.jsx)(t.a,{href:"https://discord.gg/jJFG7XBqcY",children:"Discord"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9855],{361:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=n(4848),o=n(8453);const r={title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},i=void 0,a={id:"fundamentals/private-networks",title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",source:"@site/docs/fundamentals/private-networks.md",sourceDirName:"fundamentals",slug:"/fundamentals/private-networks",permalink:"/next/fundamentals/private-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/private-networks.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Performance tuning",permalink:"/next/fundamentals/performance-tuning"},next:{title:"JSON-RPC server",permalink:"/next/interacting/json-rpc-server"}},c={},d=[{value:"Step 1: Prerequisites",id:"step-1-prerequisites",level:2},{value:"Step 2: Configure your network",id:"step-2-configure-your-network",level:2},{value:"Step 3: Deploy",id:"step-3-deploy",level:2},{value:"Step 4: Optional workflows",id:"step-4-optional-workflows",level:2},{value:"Simulating MEV workflows with mev-boost",id:"simulating-mev-workflows-with-mev-boost",level:3},{value:"Observability tools",id:"observability-tools",level:3},{value:"Deploying on Kubernetes",id:"deploying-on-kubernetes",level:3},{value:"Questions and feedback",id:"questions-and-feedback",level:2}];function l(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["This guide will walk you through using ",(0,s.jsxs)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:["Kurtosis ",(0,s.jsx)(t.code,{children:"ethereum-package"})]})," to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure to simulate MEV workflows."]}),"\n",(0,s.jsx)(t.h2,{id:"step-1-prerequisites",children:"Step 1: Prerequisites"}),"\n",(0,s.jsxs)(t.p,{children:["Before you begin, ensure you have ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/install",children:"Kurtosis CLI"})," and ",(0,s.jsx)(t.a,{href:"https://docs.docker.com/get-docker",children:"Docker"})," installed. The ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:(0,s.jsx)(t.code,{children:"ethereum-package"})})," is a Kurtosis environment definition known as a ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/packages",children:"package"}),". For more info about Kurtosis, see the ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com",children:"Kurtosis docs"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-2-configure-your-network",children:"Step 2: Configure your network"}),"\n",(0,s.jsxs)(t.p,{children:["Next, in your home directory, create a file with the name ",(0,s.jsx)(t.code,{children:"network_params.json"})," and populate it with the following contents:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-json",metastring:'title="network_params.json"',children:'{\n "participants": [\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lighthouse",\n "cl_client_image": "sigp/lighthouse:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "teku",\n "cl_client_image": "consensys/teku:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lodestar",\n "cl_client_image": "chainsafe/lodestar:next",\n "count": 1\n }\n ],\n "mev_type": "None",\n "launch_additional_services": false\n}\n'})}),"\n",(0,s.jsxs)(t.p,{children:["As you can see above, you have effectively created a network configuration file that Kurtosis will use to pass in the necessary parameters at runtime for your network. Notice that the ",(0,s.jsx)(t.code,{children:"participant"})," key describes the execution and consensus client pairing desired for each full node and how many nodes of that type to instantiate."]}),"\n",(0,s.jsxs)(t.p,{children:["There are many other configurations and flags you can use, including metrics and observability tools (e.g., Grafana, Prometheus, etc). For all supported options, see the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package#configuration",children:"configuration"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-3-deploy",children:"Step 3: Deploy"}),"\n",(0,s.jsxs)(t.p,{children:["Finally, once you have saved the ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, it is time to deploy the private net:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'kurtosis run github.com/ethpandaops/ethereum-package "$(cat ~/network_params.json)"\n'})}),"\n",(0,s.jsxs)(t.p,{children:["Kurtosis will use the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," environment definition and your custom network configuration (defined in ",(0,s.jsx)(t.code,{children:"network_params.json"}),") to spin up your network. Kurtosis will first spin up an ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"})," (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 and used to start up the private testnet."]}),"\n",(0,s.jsx)(t.p,{children:"Here is a sample output:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{children:"INFO[2023-09-01T16:10:45-04:00] ====================================================\nINFO[2023-09-01T16:10:45-04:00] || Created enclave: timid-knoll ||\nINFO[2023-09-01T16:10:45-04:00] ====================================================\nName: timid-knoll\nUUID: 939dfb5d59b0\nStatus: RUNNING\nCreation Time: Fri, 01 Sep 2023 16:08:57 EDT\n\n========================================= Files Artifacts =========================================\nUUID Name\na876b06035b7 1-lighthouse-nethermind-0-63\n87955ef69845 2-teku-nethermind-64-127\n4f77377da494 3-lodestar-nethermind-128-191\n9734313101e3 cl-genesis-data\n4164ed5c594c el-genesis-data\na49a3d2774b5 genesis-generation-config-cl\n16fcc4f96236 genesis-generation-config-el\n5fc72346f646 geth-prefunded-keys\n96ae153a0b51 prysm-password\n\n========================================== User Services ==========================================\nUUID Name Ports Status\nf369802ad2ae cl-1-lighthouse-nethermind http: 4000/tcp -> http://127.0.0.1:49894 RUNNING\n metrics: 5054/tcp -> http://127.0.0.1:49892\n tcp-discovery: 9000/tcp -> 127.0.0.1:49893\n udp-discovery: 9000/udp -> 127.0.0.1:64949\n5e14eb26ef45 cl-1-lighthouse-nethermind-validator http: 5042/tcp -> 127.0.0.1:49895 RUNNING\n metrics: 5064/tcp -> http://127.0.0.1:49896\nfed533d0e143 cl-2-teku-nethermind http: 4000/tcp -> 127.0.0.1:49899 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49897\n tcp-discovery: 9000/tcp -> 127.0.0.1:49898\n udp-discovery: 9000/udp -> 127.0.0.1:55521\n69cd832de246 cl-3-lodestar-nethermind http: 4000/tcp -> 127.0.0.1:49903 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49901\n tcp-discovery: 9000/tcp -> 127.0.0.1:49902\n udp-discovery: 9000/udp -> 127.0.0.1:50507\n75e3eec0c7d1 cl-3-lodestar-nethermind-validator metrics: 8008/tcp -> 127.0.0.1:49904 RUNNING\ne10c3f07e0e0 el-1-nethermind-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:49872 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49870\n tcp-discovery: 30303/tcp -> 127.0.0.1:49869\n udp-discovery: 30303/udp -> 127.0.0.1:64508\n ws: 8546/tcp -> 127.0.0.1:49871\nc6a28d3136fe el-2-nethermind-teku engine-rpc: 8551/tcp -> 127.0.0.1:49873 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49875\n tcp-discovery: 30303/tcp -> 127.0.0.1:49874\n udp-discovery: 30303/udp -> 127.0.0.1:52495\n ws: 8546/tcp -> 127.0.0.1:49876\n2fae3b3c41d3 el-3-nethermind-lodestar engine-rpc: 8551/tcp -> 127.0.0.1:49890 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49888\n tcp-discovery: 30303/tcp -> 127.0.0.1:49891\n udp-discovery: 30303/udp -> 127.0.0.1:62119\n ws: 8546/tcp -> 127.0.0.1:49889\n403cafe8416e prelaunch-data-generator-cl-genesis-data RUNNING\nebea71008cf4 prelaunch-data-generator-el-genesis-data RUNNING\n"})}),"\n",(0,s.jsx)(t.p,{children:"And that is it! You now have a 3-node, private Ethereum devnet with Nethermind/Lodestar, Nethermind/Teku, and Nethermind/Lighthouse execution and consensus client combinations."}),"\n",(0,s.jsxs)(t.p,{children:["Notice how, at the end, Kurtosis will print out the contents of your enclave, which includes both the various ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/files-artifacts",children:"files artifacts"})," and services that form your network. Kurtosis also maps the container ports to ephemeral local ports on your machine."]}),"\n",(0,s.jsxs)(t.p,{children:["Genesis data was generated using this ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-genesis-generator",children:"genesis-generator"})," to bootstrap the execution and consensus 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 ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"Kurtosis packages are modular, reproducible, and will work over Docker or Kubernetes. Read on to learn about additional services and configurations you may want to add to your private network."}),"\n",(0,s.jsx)(t.h2,{id:"step-4-optional-workflows",children:"Step 4: Optional workflows"}),"\n",(0,s.jsx)(t.p,{children:"This section briefly covers some optional configurations for your private devnet that are commonly used for validating and testing node-level behavior."}),"\n",(0,s.jsxs)(t.h3,{id:"simulating-mev-workflows-with-mev-boost",children:["Simulating MEV workflows with ",(0,s.jsx)(t.code,{children:"mev-boost"})]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," can simulate out-of-protocol Proposer Builder Separation (PBS) workflows using Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure. With a single flag, you can configure your network's validators to be instantiated with ",(0,s.jsx)(t.code,{children:"mev-boost"})," and be registered with a relayer to receive payloads from builders."]}),"\n",(0,s.jsxs)(t.p,{children:["To enable this in your ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, set ",(0,s.jsx)(t.code,{children:'"mev_type":'})," to ",(0,s.jsx)(t.code,{children:'"full"'})," or ",(0,s.jsx)(t.code,{children:'"mock"'}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["To learn more about how the ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure works with your private network, check out ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/how-to-full-mev-with-ethereum-package",children:"this guide"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"observability-tools",children:"Observability tools"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," comes out of the box with a few observability tools, including:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"A Grafana and Prometheus instance"}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/dapplion/beacon-metrics-gazer",children:"beacon metrics gazer service"})," to collect network-wide participation metrics"]}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/ethDreamer/json_rpc_snoop",children:"JSON-RPC Snooper"})," to log responses & requests between the execution engine API and the consensus client"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["To add your own custom Grafana dashboard template, fork the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," repository and add your configuration ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package/tree/main/static_files/grafana-config/dashboards",children:"here"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"deploying-on-kubernetes",children:"Deploying on Kubernetes"}),"\n",(0,s.jsxs)(t.p,{children:["As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," on Kubernetes, see ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/k8s",children:"Running Kurtosis in Kubernetes"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"questions-and-feedback",children:"Questions and feedback"}),"\n",(0,s.jsxs)(t.p,{children:["If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:"GitHub"})," or ",(0,s.jsx)(t.a,{href:"https://discord.gg/jJFG7XBqcY",children:"Discord"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/44d10434.d0622a3b.js b/assets/js/44d10434.92a330fc.js similarity index 99% rename from assets/js/44d10434.d0622a3b.js rename to assets/js/44d10434.92a330fc.js index 603d3f878..29912849b 100644 --- a/assets/js/44d10434.d0622a3b.js +++ b/assets/js/44d10434.92a330fc.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8751],{7830:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>a});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"eth namespace",sidebar_label:"eth",sidebar_position:3},h=void 0,x={id:"interacting/json-rpc-ns/eth",title:"eth namespace",description:"eth_blobBaseFee",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/eth.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/eth",permalink:"/interacting/json-rpc-ns/eth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/eth.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"eth namespace",sidebar_label:"eth",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"debug",permalink:"/interacting/json-rpc-ns/debug"},next:{title:"net",permalink:"/interacting/json-rpc-ns/net"}},t={},a=[{value:"eth_blobBaseFee",id:"eth_blobbasefee",level:3},{value:"eth_blockNumber",id:"eth_blocknumber",level:3},{value:"eth_call",id:"eth_call",level:3},{value:"eth_chainId",id:"eth_chainid",level:3},{value:"eth_createAccessList",id:"eth_createaccesslist",level:3},{value:"eth_estimateGas",id:"eth_estimategas",level:3},{value:"eth_feeHistory",id:"eth_feehistory",level:3},{value:"eth_gasPrice",id:"eth_gasprice",level:3},{value:"eth_getAccount",id:"eth_getaccount",level:3},{value:"eth_getBalance",id:"eth_getbalance",level:3},{value:"eth_getBlockByHash",id:"eth_getblockbyhash",level:3},{value:"eth_getBlockByNumber",id:"eth_getblockbynumber",level:3},{value:"eth_getBlockReceipts",id:"eth_getblockreceipts",level:3},{value:"eth_getBlockTransactionCountByHash",id:"eth_getblocktransactioncountbyhash",level:3},{value:"eth_getBlockTransactionCountByNumber",id:"eth_getblocktransactioncountbynumber",level:3},{value:"eth_getCode",id:"eth_getcode",level:3},{value:"eth_getFilterChanges",id:"eth_getfilterchanges",level:3},{value:"eth_getFilterLogs",id:"eth_getfilterlogs",level:3},{value:"eth_getLogs",id:"eth_getlogs",level:3},{value:"eth_getProof",id:"eth_getproof",level:3},{value:"eth_getRawTransactionByHash",id:"eth_getrawtransactionbyhash",level:3},{value:"eth_getStorageAt",id:"eth_getstorageat",level:3},{value:"eth_getTransactionByBlockHashAndIndex",id:"eth_gettransactionbyblockhashandindex",level:3},{value:"eth_getTransactionByBlockNumberAndIndex",id:"eth_gettransactionbyblocknumberandindex",level:3},{value:"eth_getTransactionByHash",id:"eth_gettransactionbyhash",level:3},{value:"eth_getTransactionCount",id:"eth_gettransactioncount",level:3},{value:"eth_getTransactionReceipt",id:"eth_gettransactionreceipt",level:3},{value:"eth_getUncleByBlockHashAndIndex",id:"eth_getunclebyblockhashandindex",level:3},{value:"eth_getUncleByBlockNumberAndIndex",id:"eth_getunclebyblocknumberandindex",level:3},{value:"eth_getUncleCountByBlockHash",id:"eth_getunclecountbyblockhash",level:3},{value:"eth_getUncleCountByBlockNumber",id:"eth_getunclecountbyblocknumber",level:3},{value:"eth_newBlockFilter",id:"eth_newblockfilter",level:3},{value:"eth_newFilter",id:"eth_newfilter",level:3},{value:"eth_newPendingTransactionFilter",id:"eth_newpendingtransactionfilter",level:3},{value:"eth_pendingTransactions",id:"eth_pendingtransactions",level:3},{value:"eth_protocolVersion",id:"eth_protocolversion",level:3},{value:"eth_sendRawTransaction",id:"eth_sendrawtransaction",level:3},{value:"eth_sendTransaction",id:"eth_sendtransaction",level:3},{value:"eth_simulateV1",id:"eth_simulatev1",level:3},{value:"eth_subscribe",id:"eth_subscribe",level:3},{value:"Subscription topics",id:"subscription-topics",level:4},{value:"newHeads",id:"newheads",level:5},{value:"logs",id:"logs",level:5},{value:"newPendingTransactions",id:"newpendingtransactions",level:5},{value:"droppedPendingTransactions",id:"droppedpendingtransactions",level:5},{value:"syncing",id:"syncing",level:5},{value:"eth_syncing",id:"eth_syncing",level:3},{value:"eth_uninstallFilter",id:"eth_uninstallfilter",level:3},{value:"eth_unsubscribe",id:"eth_unsubscribe",level:3}];function j(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h3:"h3",h4:"h4",h5:"h5",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"eth_blobbasefee",children:"eth_blobBaseFee"}),"\n",(0,r.jsx)(n.p,{children:"Returns the base fee per blob gas in wei"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blobBaseFee",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_blocknumber",children:"eth_blockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns current block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blockNumber",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_call",children:"eth_call"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_call",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_chainid",children:"eth_chainId"}),"\n",(0,r.jsx)(n.p,{children:"Returns ChainID"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_chainId",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_createaccesslist",children:"eth_createAccessList"}),"\n",(0,r.jsxs)(n.p,{children:["Creates an ",(0,r.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-2930",children:"EIP2930"})," type AccessList for the given transaction"]}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"optimize"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_createAccessList",\n "params": [transactionCall, blockParameter, optimize]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_estimategas",children:"eth_estimateGas"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call and returns gas used (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_estimateGas",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_feehistory",children:"eth_feeHistory"}),"\n",(0,r.jsx)(n.p,{children:"Returns block fee history."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockCount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"newestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"rewardPercentiles"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_feeHistory",\n "params": [blockCount, newestBlock, rewardPercentiles]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerBlobGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oldestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"reward"}),": array of array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gasprice",children:"eth_gasPrice"}),"\n",(0,r.jsx)(n.p,{children:"Returns miner's gas price"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_gasPrice",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getaccount",children:"eth_getAccount"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves Accounts via Address and Blocknumber"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getAccount",\n "params": [accountAddress, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getbalance",children:"eth_getBalance"}),"\n",(0,r.jsx)(n.p,{children:"Returns account balance"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBalance",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbyhash",children:"eth_getBlockByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByHash",\n "params": [blockHash, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbynumber",children:"eth_getBlockByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByNumber",\n "params": [blockParameter, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockreceipts",children:"eth_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbyhash",children:"eth_getBlockTransactionCountByHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbynumber",children:"eth_getBlockTransactionCountByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getcode",children:"eth_getCode"}),"\n",(0,r.jsx)(n.p,{children:"Returns account code at given address and block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getCode",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterchanges",children:"eth_getFilterChanges"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterChanges",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterlogs",children:"eth_getFilterLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterLogs",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getlogs",children:"eth_getLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads logs"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getLogs",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getproof",children:"eth_getProof"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"https://github.com/ethereum/EIPs/issues/1186",children:"https://github.com/ethereum/EIPs/issues/1186"})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"hashRate"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getProof",\n "params": [accountAddress, hashRate, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageProofs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hasValue"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"span"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getrawtransactionbyhash",children:"eth_getRawTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction RLP by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getRawTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getstorageat",children:"eth_getStorageAt"}),"\n",(0,r.jsx)(n.p,{children:"Returns storage data at address. storage_index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getStorageAt",\n "params": [address, positionIndex, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblockhashandindex",children:"eth_getTransactionByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block hash and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockHashAndIndex",\n "params": [blockHash, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblocknumberandindex",children:"eth_getTransactionByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block number and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyhash",children:"eth_getTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactioncount",children:"eth_getTransactionCount"}),"\n",(0,r.jsx)(n.p,{children:"Returns account nonce (number of trnsactions from the account since genesis) at the given block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionCount",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionreceipt",children:"eth_getTransactionReceipt"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction receipt by tx hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionReceipt",\n "params": [txHashData]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblockhashandindex",children:"eth_getUncleByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block hash and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockHashAndIndex",\n "params": [blockHashData, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblocknumberandindex",children:"eth_getUncleByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block number and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblockhash",children:"eth_getUncleCountByBlockHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblocknumber",children:"eth_getUncleCountByBlockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newblockfilter",children:"eth_newBlockFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newBlockFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newfilter",children:"eth_newFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newFilter",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newpendingtransactionfilter",children:"eth_newPendingTransactionFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newPendingTransactionFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_pendingtransactions",children:"eth_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns the pending transactions list"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_pendingTransactions",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_protocolversion",children:"eth_protocolVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns ETH protocol version"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_protocolVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendrawtransaction",children:"eth_sendRawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a raw transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transaction"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendRawTransaction",\n "params": [transaction]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendtransaction",children:"eth_sendTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rpcTx"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendTransaction",\n "params": [rpcTx]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_simulatev1",children:"eth_simulateV1"}),"\n",(0,r.jsx)(n.p,{children:"Executes a simulation across multiple blocks (does not create a transaction or block)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockStateCalls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockOverrides"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobBaseFee"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"feeRecipient"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prevRandao"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"time"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"calls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateOverrides"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"movePrecompileToAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateDiff"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceTransfers"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validation"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_simulateV1",\n "params": [payload, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"calls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"message"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"returnData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_subscribe",children:"eth_subscribe"}),"\n",(0,r.jsx)(n.p,{children:"Starts a subscription to a particular event over WebSockets. A JSON-RPC notification with event payload and subscription id is sent to a client for every event matching the subscription topic."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"subscriptionName"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_subscribe",\n "params": [subscriptionName, args]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": "0x..." // subscription id\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]}),(0,r.jsxs)(c.A,{value:"notif",label:"Notification",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "method": "eth_subscription",\n "params": {\n "subscription": "0x...", // subscription id\n "result": payload\n }\n}\n'})}),(0,r.jsxs)(n.p,{children:["See specific subcription topic below for ",(0,r.jsx)(n.code,{children:"payload"})," details."]})]})]}),"\n",(0,r.jsx)(n.h4,{id:"subscription-topics",children:"Subscription topics"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newheads",children:"newHeads"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming block headers. Fires a notification each time a new header is appended to the chain, including chain reorganizations."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"logs",children:"logs"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to incoming logs filtered by the given options. In case of a chain reorganization, previously sent logs on the old chain will be re-sent with the ",(0,r.jsx)(n.code,{children:"removed"})," field set to ",(0,r.jsx)(n.code,{children:"true"}),"."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newpendingtransactions",children:"newPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming pending transactions. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"droppedpendingtransactions",children:"droppedPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to transactions evicted from the transaction pool. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"syncing",children:"syncing"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to syncing events. Returns ",(0,r.jsx)(n.code,{children:"false"})," (once) if the node is synced or an object with statistics (once) when the node starts syncing."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),":"]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["if synced: ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:["if syncing: ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_syncing",children:"eth_syncing"}),"\n",(0,r.jsx)(n.p,{children:"Returns syncing status"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_syncing",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"syncMode"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_uninstallfilter",children:"eth_uninstallFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_uninstallFilter",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_unsubscribe",children:"eth_unsubscribe"}),"\n",(0,r.jsx)(n.p,{children:"Unsubscribes from a subscription."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subscriptionId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_unsubscribe",\n "params": [subscriptionId]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})," (",(0,r.jsx)(n.code,{children:"true"})," if unsubscribed successfully; otherwise, ",(0,r.jsx)(n.code,{children:"false"}),")"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(j,{...e})}):j(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),t=s(679);function a(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function j(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return a(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=j(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,a]=g({queryString:s,groupId:i}),[m,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,t.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??m;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),a(e),u(e)}),[a,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),t=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},a=e=>{let n=null;switch(e.key){case"Enter":t(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:a,onClick:t,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function k(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:a(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8751],{7830:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>a});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"eth namespace",sidebar_label:"eth",sidebar_position:3},h=void 0,x={id:"interacting/json-rpc-ns/eth",title:"eth namespace",description:"eth_blobBaseFee",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/eth.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/eth",permalink:"/interacting/json-rpc-ns/eth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/eth.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"eth namespace",sidebar_label:"eth",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"debug",permalink:"/interacting/json-rpc-ns/debug"},next:{title:"net",permalink:"/interacting/json-rpc-ns/net"}},t={},a=[{value:"eth_blobBaseFee",id:"eth_blobbasefee",level:3},{value:"eth_blockNumber",id:"eth_blocknumber",level:3},{value:"eth_call",id:"eth_call",level:3},{value:"eth_chainId",id:"eth_chainid",level:3},{value:"eth_createAccessList",id:"eth_createaccesslist",level:3},{value:"eth_estimateGas",id:"eth_estimategas",level:3},{value:"eth_feeHistory",id:"eth_feehistory",level:3},{value:"eth_gasPrice",id:"eth_gasprice",level:3},{value:"eth_getAccount",id:"eth_getaccount",level:3},{value:"eth_getBalance",id:"eth_getbalance",level:3},{value:"eth_getBlockByHash",id:"eth_getblockbyhash",level:3},{value:"eth_getBlockByNumber",id:"eth_getblockbynumber",level:3},{value:"eth_getBlockReceipts",id:"eth_getblockreceipts",level:3},{value:"eth_getBlockTransactionCountByHash",id:"eth_getblocktransactioncountbyhash",level:3},{value:"eth_getBlockTransactionCountByNumber",id:"eth_getblocktransactioncountbynumber",level:3},{value:"eth_getCode",id:"eth_getcode",level:3},{value:"eth_getFilterChanges",id:"eth_getfilterchanges",level:3},{value:"eth_getFilterLogs",id:"eth_getfilterlogs",level:3},{value:"eth_getLogs",id:"eth_getlogs",level:3},{value:"eth_getProof",id:"eth_getproof",level:3},{value:"eth_getRawTransactionByHash",id:"eth_getrawtransactionbyhash",level:3},{value:"eth_getStorageAt",id:"eth_getstorageat",level:3},{value:"eth_getTransactionByBlockHashAndIndex",id:"eth_gettransactionbyblockhashandindex",level:3},{value:"eth_getTransactionByBlockNumberAndIndex",id:"eth_gettransactionbyblocknumberandindex",level:3},{value:"eth_getTransactionByHash",id:"eth_gettransactionbyhash",level:3},{value:"eth_getTransactionCount",id:"eth_gettransactioncount",level:3},{value:"eth_getTransactionReceipt",id:"eth_gettransactionreceipt",level:3},{value:"eth_getUncleByBlockHashAndIndex",id:"eth_getunclebyblockhashandindex",level:3},{value:"eth_getUncleByBlockNumberAndIndex",id:"eth_getunclebyblocknumberandindex",level:3},{value:"eth_getUncleCountByBlockHash",id:"eth_getunclecountbyblockhash",level:3},{value:"eth_getUncleCountByBlockNumber",id:"eth_getunclecountbyblocknumber",level:3},{value:"eth_newBlockFilter",id:"eth_newblockfilter",level:3},{value:"eth_newFilter",id:"eth_newfilter",level:3},{value:"eth_newPendingTransactionFilter",id:"eth_newpendingtransactionfilter",level:3},{value:"eth_pendingTransactions",id:"eth_pendingtransactions",level:3},{value:"eth_protocolVersion",id:"eth_protocolversion",level:3},{value:"eth_sendRawTransaction",id:"eth_sendrawtransaction",level:3},{value:"eth_sendTransaction",id:"eth_sendtransaction",level:3},{value:"eth_simulateV1",id:"eth_simulatev1",level:3},{value:"eth_subscribe",id:"eth_subscribe",level:3},{value:"Subscription topics",id:"subscription-topics",level:4},{value:"newHeads",id:"newheads",level:5},{value:"logs",id:"logs",level:5},{value:"newPendingTransactions",id:"newpendingtransactions",level:5},{value:"droppedPendingTransactions",id:"droppedpendingtransactions",level:5},{value:"syncing",id:"syncing",level:5},{value:"eth_syncing",id:"eth_syncing",level:3},{value:"eth_uninstallFilter",id:"eth_uninstallfilter",level:3},{value:"eth_unsubscribe",id:"eth_unsubscribe",level:3}];function j(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h3:"h3",h4:"h4",h5:"h5",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"eth_blobbasefee",children:"eth_blobBaseFee"}),"\n",(0,r.jsx)(n.p,{children:"Returns the base fee per blob gas in wei"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blobBaseFee",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_blocknumber",children:"eth_blockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns current block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blockNumber",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_call",children:"eth_call"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_call",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_chainid",children:"eth_chainId"}),"\n",(0,r.jsx)(n.p,{children:"Returns ChainID"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_chainId",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_createaccesslist",children:"eth_createAccessList"}),"\n",(0,r.jsxs)(n.p,{children:["Creates an ",(0,r.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-2930",children:"EIP2930"})," type AccessList for the given transaction"]}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"optimize"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_createAccessList",\n "params": [transactionCall, blockParameter, optimize]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_estimategas",children:"eth_estimateGas"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call and returns gas used (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_estimateGas",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_feehistory",children:"eth_feeHistory"}),"\n",(0,r.jsx)(n.p,{children:"Returns block fee history."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockCount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"newestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"rewardPercentiles"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_feeHistory",\n "params": [blockCount, newestBlock, rewardPercentiles]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerBlobGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oldestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"reward"}),": array of array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gasprice",children:"eth_gasPrice"}),"\n",(0,r.jsx)(n.p,{children:"Returns miner's gas price"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_gasPrice",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getaccount",children:"eth_getAccount"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves Accounts via Address and Blocknumber"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getAccount",\n "params": [accountAddress, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getbalance",children:"eth_getBalance"}),"\n",(0,r.jsx)(n.p,{children:"Returns account balance"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBalance",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbyhash",children:"eth_getBlockByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByHash",\n "params": [blockHash, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbynumber",children:"eth_getBlockByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByNumber",\n "params": [blockParameter, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockreceipts",children:"eth_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbyhash",children:"eth_getBlockTransactionCountByHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbynumber",children:"eth_getBlockTransactionCountByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getcode",children:"eth_getCode"}),"\n",(0,r.jsx)(n.p,{children:"Returns account code at given address and block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getCode",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterchanges",children:"eth_getFilterChanges"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterChanges",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterlogs",children:"eth_getFilterLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterLogs",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getlogs",children:"eth_getLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads logs"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getLogs",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getproof",children:"eth_getProof"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"https://github.com/ethereum/EIPs/issues/1186",children:"https://github.com/ethereum/EIPs/issues/1186"})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"hashRate"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getProof",\n "params": [accountAddress, hashRate, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageProofs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hasValue"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"span"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getrawtransactionbyhash",children:"eth_getRawTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction RLP by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getRawTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getstorageat",children:"eth_getStorageAt"}),"\n",(0,r.jsx)(n.p,{children:"Returns storage data at address. storage_index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getStorageAt",\n "params": [address, positionIndex, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblockhashandindex",children:"eth_getTransactionByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block hash and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockHashAndIndex",\n "params": [blockHash, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblocknumberandindex",children:"eth_getTransactionByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block number and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyhash",children:"eth_getTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactioncount",children:"eth_getTransactionCount"}),"\n",(0,r.jsx)(n.p,{children:"Returns account nonce (number of trnsactions from the account since genesis) at the given block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionCount",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionreceipt",children:"eth_getTransactionReceipt"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction receipt by tx hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionReceipt",\n "params": [txHashData]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblockhashandindex",children:"eth_getUncleByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block hash and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockHashAndIndex",\n "params": [blockHashData, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblocknumberandindex",children:"eth_getUncleByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block number and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblockhash",children:"eth_getUncleCountByBlockHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblocknumber",children:"eth_getUncleCountByBlockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newblockfilter",children:"eth_newBlockFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newBlockFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newfilter",children:"eth_newFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newFilter",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newpendingtransactionfilter",children:"eth_newPendingTransactionFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newPendingTransactionFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_pendingtransactions",children:"eth_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns the pending transactions list"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_pendingTransactions",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_protocolversion",children:"eth_protocolVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns ETH protocol version"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_protocolVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendrawtransaction",children:"eth_sendRawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a raw transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transaction"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendRawTransaction",\n "params": [transaction]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendtransaction",children:"eth_sendTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rpcTx"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendTransaction",\n "params": [rpcTx]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_simulatev1",children:"eth_simulateV1"}),"\n",(0,r.jsx)(n.p,{children:"Executes a simulation across multiple blocks (does not create a transaction or block)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockStateCalls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockOverrides"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobBaseFee"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"feeRecipient"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prevRandao"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"time"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"calls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateOverrides"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"movePrecompileToAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateDiff"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceTransfers"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validation"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_simulateV1",\n "params": [payload, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"calls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"message"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"returnData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_subscribe",children:"eth_subscribe"}),"\n",(0,r.jsx)(n.p,{children:"Starts a subscription to a particular event over WebSockets. A JSON-RPC notification with event payload and subscription id is sent to a client for every event matching the subscription topic."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"subscriptionName"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_subscribe",\n "params": [subscriptionName, args]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": "0x..." // subscription id\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]}),(0,r.jsxs)(c.A,{value:"notif",label:"Notification",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "method": "eth_subscription",\n "params": {\n "subscription": "0x...", // subscription id\n "result": payload\n }\n}\n'})}),(0,r.jsxs)(n.p,{children:["See specific subcription topic below for ",(0,r.jsx)(n.code,{children:"payload"})," details."]})]})]}),"\n",(0,r.jsx)(n.h4,{id:"subscription-topics",children:"Subscription topics"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newheads",children:"newHeads"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming block headers. Fires a notification each time a new header is appended to the chain, including chain reorganizations."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"logs",children:"logs"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to incoming logs filtered by the given options. In case of a chain reorganization, previously sent logs on the old chain will be re-sent with the ",(0,r.jsx)(n.code,{children:"removed"})," field set to ",(0,r.jsx)(n.code,{children:"true"}),"."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newpendingtransactions",children:"newPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming pending transactions. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"droppedpendingtransactions",children:"droppedPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to transactions evicted from the transaction pool. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"syncing",children:"syncing"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to syncing events. Returns ",(0,r.jsx)(n.code,{children:"false"})," (once) if the node is synced or an object with statistics (once) when the node starts syncing."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),":"]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["if synced: ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:["if syncing: ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_syncing",children:"eth_syncing"}),"\n",(0,r.jsx)(n.p,{children:"Returns syncing status"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_syncing",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"syncMode"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_uninstallfilter",children:"eth_uninstallFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_uninstallFilter",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_unsubscribe",children:"eth_unsubscribe"}),"\n",(0,r.jsx)(n.p,{children:"Unsubscribes from a subscription."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subscriptionId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_unsubscribe",\n "params": [subscriptionId]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})," (",(0,r.jsx)(n.code,{children:"true"})," if unsubscribed successfully; otherwise, ",(0,r.jsx)(n.code,{children:"false"}),")"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(j,{...e})}):j(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),t=s(679);function a(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function j(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return a(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=j(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,a]=g({queryString:s,groupId:i}),[m,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,t.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??m;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),a(e),u(e)}),[a,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),t=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},a=e=>{let n=null;switch(e.key){case"Enter":t(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:a,onClick:t,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function k(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:a(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/45119392.8eb25709.js b/assets/js/45119392.c1f3b1a4.js similarity index 99% rename from assets/js/45119392.8eb25709.js rename to assets/js/45119392.c1f3b1a4.js index 31211560b..2363f68ef 100644 --- a/assets/js/45119392.8eb25709.js +++ b/assets/js/45119392.c1f3b1a4.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9569],{6024:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=s(4848),l=s(8453),i=s(1470),t=s(9365);const a={title:"admin namespace",sidebar_label:"admin",sidebar_position:0},d=void 0,c={id:"interacting/json-rpc-ns/admin",title:"admin namespace",description:"admin_addPeer",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/admin.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/admin",permalink:"/1.27.0/interacting/json-rpc-ns/admin",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/admin.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"admin namespace",sidebar_label:"admin",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"JSON-RPC server",permalink:"/1.27.0/interacting/json-rpc-server"},next:{title:"clique",permalink:"/1.27.0/interacting/json-rpc-ns/clique"}},o={},u=[{value:"admin_addPeer",id:"admin_addpeer",level:3},{value:"admin_nodeInfo",id:"admin_nodeinfo",level:3},{value:"admin_peers",id:"admin_peers",level:3},{value:"admin_prune",id:"admin_prune",level:3},{value:"admin_removePeer",id:"admin_removepeer",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"admin_addpeer",children:"admin_addPeer"}),"\n",(0,r.jsx)(n.p,{children:"Adds given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"addToStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_addPeer",\n "params": [enode, addToStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Added node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_nodeinfo",children:"admin_nodeInfo"}),"\n",(0,r.jsx)(n.p,{children:"Displays relevant information about this node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_nodeInfo",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Information about this node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ip"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listenAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ports"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"discovery"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listener"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"genesisHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"newtorkId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_peers",children:"admin_peers"}),"\n",(0,r.jsxs)(n.p,{children:["Displays a list of connected peers including information about them (",(0,r.jsx)(n.code,{children:"clientId"}),", ",(0,r.jsx)(n.code,{children:"host"}),", ",(0,r.jsx)(n.code,{children:"port"}),", ",(0,r.jsx)(n.code,{children:"address"}),", ",(0,r.jsx)(n.code,{children:"isBootnode"}),", ",(0,r.jsx)(n.code,{children:"isStatic"}),", ",(0,r.jsx)(n.code,{children:"enode"}),")."]}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeDetails"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_peers",\n "params": [includeDetails]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"List of connected peers including information"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ethDetails"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"host"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isBootnode"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isStatic"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isTrusted"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"lastSignal"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"port"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_prune",children:"admin_prune"}),"\n",(0,r.jsx)(n.p,{children:"Runs full pruning if enabled."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_prune",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"integer"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_removepeer",children:"admin_removePeer"}),"\n",(0,r.jsx)(n.p,{children:"Removes given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"removeFromStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_removePeer",\n "params": [enode, removeFromStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Removed node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var i=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),l=s(4164),i=s(3104),t=s(6347),a=s(205),d=s(7485),c=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function x(e){let{queryString:n=!1,groupId:s}=e;const l=(0,t.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(l.location.search);n.set(i,e),l.replace({...l.location,search:n.toString()})}),[i,l])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,i=h(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[c,u]=x({queryString:s,groupId:l}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,i]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:l}),b=(()=>{const e=c??m;return j({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{b&&d(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),p(e)}),[u,p,i]),tabValues:i}}var p=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:a}=e;const d=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),l=a[s].value;l!==r&&(c(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:a.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:u,onClick:o,...i,className:(0,l.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function _(e){const n=m(e);return(0,g.jsxs)("div",{className:(0,l.A)("tabs-container",b.tabList),children:[(0,g.jsx)(f,{...n,...e}),(0,g.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,g.jsx)(_,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const l={},i=r.createContext(l);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9569],{6024:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=s(4848),l=s(8453),i=s(1470),t=s(9365);const a={title:"admin namespace",sidebar_label:"admin",sidebar_position:0},d=void 0,c={id:"interacting/json-rpc-ns/admin",title:"admin namespace",description:"admin_addPeer",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/admin.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/admin",permalink:"/1.27.0/interacting/json-rpc-ns/admin",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/admin.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"admin namespace",sidebar_label:"admin",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"JSON-RPC server",permalink:"/1.27.0/interacting/json-rpc-server"},next:{title:"clique",permalink:"/1.27.0/interacting/json-rpc-ns/clique"}},o={},u=[{value:"admin_addPeer",id:"admin_addpeer",level:3},{value:"admin_nodeInfo",id:"admin_nodeinfo",level:3},{value:"admin_peers",id:"admin_peers",level:3},{value:"admin_prune",id:"admin_prune",level:3},{value:"admin_removePeer",id:"admin_removepeer",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"admin_addpeer",children:"admin_addPeer"}),"\n",(0,r.jsx)(n.p,{children:"Adds given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"addToStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_addPeer",\n "params": [enode, addToStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Added node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_nodeinfo",children:"admin_nodeInfo"}),"\n",(0,r.jsx)(n.p,{children:"Displays relevant information about this node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_nodeInfo",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Information about this node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ip"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listenAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ports"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"discovery"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listener"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"genesisHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"newtorkId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_peers",children:"admin_peers"}),"\n",(0,r.jsxs)(n.p,{children:["Displays a list of connected peers including information about them (",(0,r.jsx)(n.code,{children:"clientId"}),", ",(0,r.jsx)(n.code,{children:"host"}),", ",(0,r.jsx)(n.code,{children:"port"}),", ",(0,r.jsx)(n.code,{children:"address"}),", ",(0,r.jsx)(n.code,{children:"isBootnode"}),", ",(0,r.jsx)(n.code,{children:"isStatic"}),", ",(0,r.jsx)(n.code,{children:"enode"}),")."]}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeDetails"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_peers",\n "params": [includeDetails]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"List of connected peers including information"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ethDetails"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"host"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isBootnode"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isStatic"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isTrusted"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"lastSignal"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"port"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_prune",children:"admin_prune"}),"\n",(0,r.jsx)(n.p,{children:"Runs full pruning if enabled."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_prune",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"integer"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_removepeer",children:"admin_removePeer"}),"\n",(0,r.jsx)(n.p,{children:"Removes given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"removeFromStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_removePeer",\n "params": [enode, removeFromStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Removed node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var i=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),l=s(4164),i=s(3104),t=s(6347),a=s(205),d=s(7485),c=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function x(e){let{queryString:n=!1,groupId:s}=e;const l=(0,t.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(l.location.search);n.set(i,e),l.replace({...l.location,search:n.toString()})}),[i,l])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,i=h(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[c,u]=x({queryString:s,groupId:l}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,i]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:l}),b=(()=>{const e=c??m;return j({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{b&&d(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),p(e)}),[u,p,i]),tabValues:i}}var p=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:a}=e;const d=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),l=a[s].value;l!==r&&(c(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:a.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:u,onClick:o,...i,className:(0,l.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function _(e){const n=m(e);return(0,g.jsxs)("div",{className:(0,l.A)("tabs-container",b.tabList),children:[(0,g.jsx)(f,{...n,...e}),(0,g.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,g.jsx)(_,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const l={},i=r.createContext(l);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/451a5ee5.b7361821.js b/assets/js/451a5ee5.19ef0627.js similarity index 99% rename from assets/js/451a5ee5.b7361821.js rename to assets/js/451a5ee5.19ef0627.js index 64609f239..de9f02951 100644 --- a/assets/js/451a5ee5.b7361821.js +++ b/assets/js/451a5ee5.19ef0627.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5676],{158:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>c,toc:()=>d});var r=t(4848),s=t(8453),i=t(1470),o=t(9365);const a={title:"Troubleshooting",sidebar_position:8},l=void 0,c={id:"troubleshooting",title:"Troubleshooting",description:"File descriptor limits",source:"@site/versioned_docs/version-1.28.0/troubleshooting.md",sourceDirName:".",slug:"/troubleshooting",permalink:"/1.28.0/troubleshooting",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/troubleshooting.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"Troubleshooting",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Custom analytic tools",permalink:"/1.28.0/developers/custom-analytic-tools"}},u={},d=[{value:"File descriptor limits",id:"file-descriptor-limits",level:2},{value:"Database corruption issues",id:"database-corruption-issues",level:2},{value:"TrieNodeException errors",id:"trienodeexception-errors",level:2},{value:"Issues with lock files",id:"issues-with-lock-files",level:2},{value:"Block checksum mismatch",id:"block-checksum-mismatch",level:2},{value:"Plugin loading failure",id:"plugin-loading-failure",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"file-descriptor-limits",children:"File descriptor limits"}),"\n",(0,r.jsx)(n.p,{children:'In some cases, file descriptor limits may cause errors like "Too many open files". To solve that, see the instructions for your platform below.'}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsxs)(o.A,{value:"linux",label:"Linux",children:[(0,r.jsxs)(n.p,{children:["To increase the limits for the user running Nethermind (given the process name of ",(0,r.jsx)(n.code,{children:"nethermind"}),"), run:"]}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'sudo echo "nethermind soft nofile 100000" > /etc/security/limits.d/nethermind.conf\nsudo echo "nethermind hard nofile 100000" >> /etc/security/limits.d/nethermind.conf\n'})})]}),(0,r.jsxs)(o.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(n.p,{children:"To increase the limits, run:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"ulimit -n 10000\n"})}),(0,r.jsxs)(n.p,{children:["If you run into issues with the above command, see the ",(0,r.jsx)(n.a,{href:"https://developer.apple.com/forums/thread/735798?answerId=762679022#762679022",children:"workaround"}),"."]}),(0,r.jsxs)(n.p,{children:["Note that the changes above are temporary and will be reset after the system reboot. To make them permanent, you can add them to your ",(0,r.jsx)(n.code,{children:"~/.bashrc"})," or ",(0,r.jsx)(n.code,{children:"~/.bash_profile"})," shell configuration file."]})]})]}),"\n",(0,r.jsx)(n.h2,{id:"database-corruption-issues",children:"Database corruption issues"}),"\n",(0,r.jsx)(n.p,{children:"Database corruption is one of the issues that happen now and then; it has many possible causes among them:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Hardware failures: disk failures, memory errors, hardware overheating, etc."}),"\n",(0,r.jsx)(n.li,{children:"Power cuts and abrupt shutdowns"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["There's no shortcut in such situations, and ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/sync#resync-a-node-from-scratch",children:"resyncing Nethermind from scratch"})," is the recommended remedy."]}),"\n",(0,r.jsx)(n.h2,{id:"trienodeexception-errors",children:"TrieNodeException errors"}),"\n",(0,r.jsxs)(n.p,{children:["If Nethermind reports ",(0,r.jsx)(n.code,{children:"Nethermind.Trie.TrieNodeException"})," or ",(0,r.jsx)(n.code,{children:"Nethermind.Trie.MissingTrieNodeException"})," errors, that usually indicates database corruption or missing data. The following steps may help:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"If the node is still syncing, wait until it has been fully synced and observe for errors"}),"\n",(0,r.jsx)(n.li,{children:"Restart the node and observe for errors"}),"\n",(0,r.jsx)(n.li,{children:"Update to the latest version of Nethermind"}),"\n",(0,r.jsxs)(n.li,{children:["If the above steps fail, a ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/sync#resync-a-node-from-scratch",children:"resync"})," may be required"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"issues-with-lock-files",children:"Issues with lock files"}),"\n",(0,r.jsx)(n.p,{children:"If Nethermind complains about the lock files, it perhaps because of one of the following:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Another Nethermind process is running using the same database"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["The database has not been appropriately closed on the last run.",(0,r.jsx)(n.br,{}),"\n","In this case, run the following command from the Nethermind database directory:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"find . -type f -name 'LOCK' -delete\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"block-checksum-mismatch",children:"Block checksum mismatch"}),"\n",(0,r.jsx)(n.p,{children:"Sometimes Nethermind may fail with an error similar the following:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Corruption: block checksum mismatch: expected 2087346143, got 2983326672 in... \n"})}),"\n",(0,r.jsxs)(n.p,{children:["This tends to happen on XFS file systems under very high memory pressure. The issue can be mitigated by using the ",(0,r.jsx)(n.code,{children:"--Db.UseDirectIoForFlushAndCompactions true"})," option although at the cost of performance."]}),"\n",(0,r.jsx)(n.p,{children:"However, quite often, this is because of memory module issues."}),"\n",(0,r.jsx)(n.h2,{id:"plugin-loading-failure",children:"Plugin loading failure"}),"\n",(0,r.jsxs)(n.p,{children:["If Nethermind fails to start with a message like ",(0,r.jsx)(n.code,{children:"Failed to load plugin..."}),", this is most likely due to a missing or incompatible plugin. Reinstalling Nethermind usually fixes the issue."]}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsxs)(n.p,{children:["If you install Nethermind over an existing installation, remove the old installation first, particularly the ",(0,r.jsx)(n.code,{children:"plugins"})," directory. Package managers do this automatically."]})})]})}function m(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>o});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var i=t(4848);function o(e){let{children:n,hidden:t,className:o}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,o),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var r=t(6540),s=t(4164),i=t(3104),o=t(6347),a=t(205),l=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const s=(0,o.W6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(s.location.search);n.set(i,e),s.replace({...s.location,search:n.toString()})}),[i,s])]}function f(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,i=h(e),[o,l]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[c,d]=p({queryString:t,groupId:s}),[f,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,i]=(0,u.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:s}),x=(()=>{const e=c??f;return m({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{x&&l(x)}),[x]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,i]),tabValues:i}}var b=t(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=t(4848);function v(e){let{className:n,block:t,selectedValue:r,selectValue:o,tabValues:a}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),u=e=>{const n=e.currentTarget,t=l.indexOf(n),s=a[t].value;s!==r&&(c(n),o(s))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:a.map((e=>{let{value:n,label:t,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>l.push(e),onKeyDown:d,onClick:u,...i,className:(0,s.A)("tabs__item",x.tabItem,i?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:i}=e;const o=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=f(e);return(0,g.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,g.jsx)(v,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function w(e){const n=(0,b.A)();return(0,g.jsx)(y,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(6540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5676],{158:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>c,toc:()=>d});var r=t(4848),s=t(8453),i=t(1470),o=t(9365);const a={title:"Troubleshooting",sidebar_position:8},l=void 0,c={id:"troubleshooting",title:"Troubleshooting",description:"File descriptor limits",source:"@site/versioned_docs/version-1.28.0/troubleshooting.md",sourceDirName:".",slug:"/troubleshooting",permalink:"/1.28.0/troubleshooting",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/troubleshooting.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"Troubleshooting",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Custom analytic tools",permalink:"/1.28.0/developers/custom-analytic-tools"}},u={},d=[{value:"File descriptor limits",id:"file-descriptor-limits",level:2},{value:"Database corruption issues",id:"database-corruption-issues",level:2},{value:"TrieNodeException errors",id:"trienodeexception-errors",level:2},{value:"Issues with lock files",id:"issues-with-lock-files",level:2},{value:"Block checksum mismatch",id:"block-checksum-mismatch",level:2},{value:"Plugin loading failure",id:"plugin-loading-failure",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"file-descriptor-limits",children:"File descriptor limits"}),"\n",(0,r.jsx)(n.p,{children:'In some cases, file descriptor limits may cause errors like "Too many open files". To solve that, see the instructions for your platform below.'}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsxs)(o.A,{value:"linux",label:"Linux",children:[(0,r.jsxs)(n.p,{children:["To increase the limits for the user running Nethermind (given the process name of ",(0,r.jsx)(n.code,{children:"nethermind"}),"), run:"]}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'sudo echo "nethermind soft nofile 100000" > /etc/security/limits.d/nethermind.conf\nsudo echo "nethermind hard nofile 100000" >> /etc/security/limits.d/nethermind.conf\n'})})]}),(0,r.jsxs)(o.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(n.p,{children:"To increase the limits, run:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"ulimit -n 10000\n"})}),(0,r.jsxs)(n.p,{children:["If you run into issues with the above command, see the ",(0,r.jsx)(n.a,{href:"https://developer.apple.com/forums/thread/735798?answerId=762679022#762679022",children:"workaround"}),"."]}),(0,r.jsxs)(n.p,{children:["Note that the changes above are temporary and will be reset after the system reboot. To make them permanent, you can add them to your ",(0,r.jsx)(n.code,{children:"~/.bashrc"})," or ",(0,r.jsx)(n.code,{children:"~/.bash_profile"})," shell configuration file."]})]})]}),"\n",(0,r.jsx)(n.h2,{id:"database-corruption-issues",children:"Database corruption issues"}),"\n",(0,r.jsx)(n.p,{children:"Database corruption is one of the issues that happen now and then; it has many possible causes among them:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Hardware failures: disk failures, memory errors, hardware overheating, etc."}),"\n",(0,r.jsx)(n.li,{children:"Power cuts and abrupt shutdowns"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["There's no shortcut in such situations, and ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/sync#resync-a-node-from-scratch",children:"resyncing Nethermind from scratch"})," is the recommended remedy."]}),"\n",(0,r.jsx)(n.h2,{id:"trienodeexception-errors",children:"TrieNodeException errors"}),"\n",(0,r.jsxs)(n.p,{children:["If Nethermind reports ",(0,r.jsx)(n.code,{children:"Nethermind.Trie.TrieNodeException"})," or ",(0,r.jsx)(n.code,{children:"Nethermind.Trie.MissingTrieNodeException"})," errors, that usually indicates database corruption or missing data. The following steps may help:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"If the node is still syncing, wait until it has been fully synced and observe for errors"}),"\n",(0,r.jsx)(n.li,{children:"Restart the node and observe for errors"}),"\n",(0,r.jsx)(n.li,{children:"Update to the latest version of Nethermind"}),"\n",(0,r.jsxs)(n.li,{children:["If the above steps fail, a ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/sync#resync-a-node-from-scratch",children:"resync"})," may be required"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"issues-with-lock-files",children:"Issues with lock files"}),"\n",(0,r.jsx)(n.p,{children:"If Nethermind complains about the lock files, it perhaps because of one of the following:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Another Nethermind process is running using the same database"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["The database has not been appropriately closed on the last run.",(0,r.jsx)(n.br,{}),"\n","In this case, run the following command from the Nethermind database directory:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"find . -type f -name 'LOCK' -delete\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"block-checksum-mismatch",children:"Block checksum mismatch"}),"\n",(0,r.jsx)(n.p,{children:"Sometimes Nethermind may fail with an error similar the following:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Corruption: block checksum mismatch: expected 2087346143, got 2983326672 in... \n"})}),"\n",(0,r.jsxs)(n.p,{children:["This tends to happen on XFS file systems under very high memory pressure. The issue can be mitigated by using the ",(0,r.jsx)(n.code,{children:"--Db.UseDirectIoForFlushAndCompactions true"})," option although at the cost of performance."]}),"\n",(0,r.jsx)(n.p,{children:"However, quite often, this is because of memory module issues."}),"\n",(0,r.jsx)(n.h2,{id:"plugin-loading-failure",children:"Plugin loading failure"}),"\n",(0,r.jsxs)(n.p,{children:["If Nethermind fails to start with a message like ",(0,r.jsx)(n.code,{children:"Failed to load plugin..."}),", this is most likely due to a missing or incompatible plugin. Reinstalling Nethermind usually fixes the issue."]}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsxs)(n.p,{children:["If you install Nethermind over an existing installation, remove the old installation first, particularly the ",(0,r.jsx)(n.code,{children:"plugins"})," directory. Package managers do this automatically."]})})]})}function m(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>o});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var i=t(4848);function o(e){let{children:n,hidden:t,className:o}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,o),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var r=t(6540),s=t(4164),i=t(3104),o=t(6347),a=t(205),l=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const s=(0,o.W6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(s.location.search);n.set(i,e),s.replace({...s.location,search:n.toString()})}),[i,s])]}function f(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,i=h(e),[o,l]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[c,d]=p({queryString:t,groupId:s}),[f,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,i]=(0,u.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:s}),x=(()=>{const e=c??f;return m({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{x&&l(x)}),[x]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,i]),tabValues:i}}var b=t(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=t(4848);function v(e){let{className:n,block:t,selectedValue:r,selectValue:o,tabValues:a}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),u=e=>{const n=e.currentTarget,t=l.indexOf(n),s=a[t].value;s!==r&&(c(n),o(s))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:a.map((e=>{let{value:n,label:t,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>l.push(e),onKeyDown:d,onClick:u,...i,className:(0,s.A)("tabs__item",x.tabItem,i?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:i}=e;const o=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=f(e);return(0,g.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,g.jsx)(v,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function w(e){const n=(0,b.A)();return(0,g.jsx)(y,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(6540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/451c0fba.fa6fec39.js b/assets/js/451c0fba.d61d3b22.js similarity index 99% rename from assets/js/451c0fba.fa6fec39.js rename to assets/js/451c0fba.d61d3b22.js index 375d46eeb..1d9928b5b 100644 --- a/assets/js/451c0fba.fa6fec39.js +++ b/assets/js/451c0fba.d61d3b22.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3915],{2864:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=s(4848),a=s(8453),l=s(1470),t=s(9365);const o={title:"personal namespace",sidebar_label:"personal",sidebar_position:6},c=void 0,i={id:"interacting/json-rpc-ns/personal",title:"personal namespace",description:"personal_importRawKey",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/personal.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/personal",permalink:"/1.28.0/interacting/json-rpc-ns/personal",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/personal.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:6,frontMatter:{title:"personal namespace",sidebar_label:"personal",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"parity",permalink:"/1.28.0/interacting/json-rpc-ns/parity"},next:{title:"proof",permalink:"/1.28.0/interacting/json-rpc-ns/proof"}},u={},d=[{value:"personal_importRawKey",id:"personal_importrawkey",level:3},{value:"personal_listAccounts",id:"personal_listaccounts",level:3},{value:"personal_lockAccount",id:"personal_lockaccount",level:3},{value:"personal_newAccount",id:"personal_newaccount",level:3},{value:"personal_unlockAccount",id:"personal_unlockaccount",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"personal_importrawkey",children:"personal_importRawKey"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"keyData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_importRawKey",\n "params": [keyData, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_listaccounts",children:"personal_listAccounts"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_listAccounts",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_lockaccount",children:"personal_lockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_lockAccount",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_newaccount",children:"personal_newAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_newAccount",\n "params": [passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_unlockaccount",children:"personal_unlockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_unlockAccount",\n "params": [address, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const a={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),a=s(4164),l=s(3104),t=s(6347),o=s(205),c=s(7485),i=s(1682),u=s(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:a}}=e;return{value:n,label:s,attributes:r,default:a}}))}(s);return function(e){const n=(0,i.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const a=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(a.location.search);n.set(l,e),a.replace({...a.location,search:n.toString()})}),[l,a])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:a}=e,l=p(e),[t,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[i,d]=j({queryString:s,groupId:a}),[m,x]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,l]=(0,u.Dv)(s);return[a,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:a}),b=(()=>{const e=i??m;return h({value:e,tabValues:l})?e:null})();(0,o.A)((()=>{b&&c(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),x(e)}),[d,x,l]),tabValues:l}}var x=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:o}=e;const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),u=e=>{const n=e.currentTarget,s=c.indexOf(n),a=o[s].value;a!==r&&(i(n),t(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":s},n),children:o.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:d,onClick:u,...l,className:(0,a.A)("tabs__item",b.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function g(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function A(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(g,{...n,...e})]})}function _(e){const n=(0,x.A)();return(0,f.jsx)(A,{...e,children:d(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>o});var r=s(6540);const a={},l=r.createContext(a);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3915],{2864:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=s(4848),a=s(8453),l=s(1470),t=s(9365);const o={title:"personal namespace",sidebar_label:"personal",sidebar_position:6},c=void 0,i={id:"interacting/json-rpc-ns/personal",title:"personal namespace",description:"personal_importRawKey",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/personal.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/personal",permalink:"/1.28.0/interacting/json-rpc-ns/personal",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/personal.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:6,frontMatter:{title:"personal namespace",sidebar_label:"personal",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"parity",permalink:"/1.28.0/interacting/json-rpc-ns/parity"},next:{title:"proof",permalink:"/1.28.0/interacting/json-rpc-ns/proof"}},u={},d=[{value:"personal_importRawKey",id:"personal_importrawkey",level:3},{value:"personal_listAccounts",id:"personal_listaccounts",level:3},{value:"personal_lockAccount",id:"personal_lockaccount",level:3},{value:"personal_newAccount",id:"personal_newaccount",level:3},{value:"personal_unlockAccount",id:"personal_unlockaccount",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"personal_importrawkey",children:"personal_importRawKey"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"keyData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_importRawKey",\n "params": [keyData, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_listaccounts",children:"personal_listAccounts"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_listAccounts",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_lockaccount",children:"personal_lockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_lockAccount",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_newaccount",children:"personal_newAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_newAccount",\n "params": [passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_unlockaccount",children:"personal_unlockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_unlockAccount",\n "params": [address, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const a={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),a=s(4164),l=s(3104),t=s(6347),o=s(205),c=s(7485),i=s(1682),u=s(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:a}}=e;return{value:n,label:s,attributes:r,default:a}}))}(s);return function(e){const n=(0,i.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const a=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(a.location.search);n.set(l,e),a.replace({...a.location,search:n.toString()})}),[l,a])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:a}=e,l=p(e),[t,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[i,d]=j({queryString:s,groupId:a}),[m,x]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,l]=(0,u.Dv)(s);return[a,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:a}),b=(()=>{const e=i??m;return h({value:e,tabValues:l})?e:null})();(0,o.A)((()=>{b&&c(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),x(e)}),[d,x,l]),tabValues:l}}var x=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:o}=e;const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),u=e=>{const n=e.currentTarget,s=c.indexOf(n),a=o[s].value;a!==r&&(i(n),t(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":s},n),children:o.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:d,onClick:u,...l,className:(0,a.A)("tabs__item",b.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function g(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function A(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(g,{...n,...e})]})}function _(e){const n=(0,x.A)();return(0,f.jsx)(A,{...e,children:d(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>o});var r=s(6540);const a={},l=r.createContext(a);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/46c83eb5.92797417.js b/assets/js/46c83eb5.22f200b5.js similarity index 99% rename from assets/js/46c83eb5.92797417.js rename to assets/js/46c83eb5.22f200b5.js index fdbddd982..42b62152e 100644 --- a/assets/js/46c83eb5.92797417.js +++ b/assets/js/46c83eb5.22f200b5.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[987],{2923:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const o={title:"Aura-based validators",sidebar_position:0},s=void 0,a={id:"validators/aura",title:"Aura-based validators",description:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.",source:"@site/versioned_docs/version-1.28.0/validators/aura.md",sourceDirName:"validators",slug:"/validators/aura",permalink:"/1.28.0/validators/aura",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/validators/aura.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Aura-based validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Validators",permalink:"/1.28.0/validators/"},next:{title:"Building from source",permalink:"/1.28.0/developers/building-from-source"}},c={},d=[{value:"Configuring a Docker container",id:"configuring-a-docker-container",level:2},{value:"Configuring keyfile",id:"configuring-keyfile",level:2},{value:"Configuration settings",id:"configuration-settings",level:2},{value:"Running the validator",id:"running-the-validator",level:2}];function l(e){const n={admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Your machine's clock has to be synchronized. Otherwise, you might miss block sealing. By default, the block time is set to 5 seconds."})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-a-docker-container",children:"Configuring a Docker container"}),"\n",(0,r.jsx)(n.p,{children:"The example below shows how to configure a Docker container for an Aura-based validator on the Energy Web chain:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n nethermind-validator:\n image: nethermind/nethermind:latest\n container_name: nethermind-validator\n restart: unless-stopped\n ports:\n - 8545:8545\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n environment:\n - NETHERMIND_CONFIG=energyweb\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-keyfile",children:"Configuring keyfile"}),"\n",(0,r.jsxs)(n.p,{children:["Make sure that the keyfile name contains the public key (address). Otherwise, Nethermind doesn't recognize it as such.\nFor instance, a keyfile can be named ",(0,r.jsx)(n.code,{children:"key-0x1234567890123456789012345678901234567890"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The keyfile must be stored in the ",(0,r.jsx)(n.code,{children:"keystore"})," directory located in the Nethermind base data directory."]}),"\n",(0,r.jsx)(n.h2,{id:"configuration-settings",children:"Configuration settings"}),"\n",(0,r.jsx)(n.p,{children:"Here is an example of recommended settings for a validator. The most convenient way to configure these settings is either defining them in the configuration file or passing them as environment variables."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.IsMining"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.MemoryHint"}),": Can be left unspecified. It's recommended to configure it accordingly to the machine specification(for Eneergy Web, 768000000 is enough)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"EthStats"})," namespace parameters if you want to report node status to Ethstats for your network."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Metrics"})," namespace parameters to enable node monitoring."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.PasswordFiles"}),": The path to the file containing the password for the mining private key."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.UnlockAccounts"}),": An array of accounts. Provide the miner public address here."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"}),": The miner public address should be provided here as well."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Aura.ForceSealing"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Merge.Enabled"}),": ",(0,r.jsx)(n.code,{children:"false"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Here's an example of above settings in the Energy Web configuration file:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",metastring:'title="energyweb.cfg"',children:'{\n "Init": {\n "ChainSpecPath": "chainspec/energyweb.json",\n "GenesisHash": "0x0b6d3e680af2fc525392c720666cce58e3d8e6fe75ba4b48cb36bcc69039229b",\n "BaseDbPath": "nethermind_db/energyweb",\n "LogFileName": "energyweb.log",\n "MemoryHint": 768000000\n },\n "Sync": {\n "FastSync": true,\n "PivotNumber": 26940000,\n "PivotHash": "0x8835983de9578a4355313afd2a43d8eada6f2a4ddbd9c51da103e0d5f53c4d8b",\n "PivotTotalDifficulty": "9167206964850082205703311924211835616257898274",\n "FastBlocks": true,\n "UseGethLimitsInFastBlocks": false,\n "FastSyncCatchUpHeightDelta": 10000000000\n },\n "EthStats": {\n "Enabled": true,\n "Name": "Nethermind Energy Web",\n "Secret": "secret...",\n "Url": "ws://localhost:3000/api"\n },\n "Metrics": {\n "Enabled": true,\n "NodeName": "Energy Web",\n "PushGatewayUrl": "http://localhost:9091/metrics"\n },\n "Mining": {\n "MinGasPrice": 1\n },\n "Merge": {\n "Enabled": false\n },\n "Aura": {\n "ForceSealing": true\n },\n "KeyStore": {\n "PasswordFiles": ["keystore/password"],\n "UnlockAccounts": ["0x..."],\n "BlockAuthorAccount": "0x..." \n },\n}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"running-the-validator",children:"Running the validator"}),"\n",(0,r.jsxs)(n.p,{children:["The above Docker Compose file can be run from the directory the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," is located in as follows:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose up -d\n"})}),"\n",(0,r.jsx)(n.p,{children:"To check the logs and verify the sealing of blocks, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose logs -f nethermind-validator\n"})})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>a});var r=i(6540);const t={},o=r.createContext(t);function s(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[987],{2923:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const o={title:"Aura-based validators",sidebar_position:0},s=void 0,a={id:"validators/aura",title:"Aura-based validators",description:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.",source:"@site/versioned_docs/version-1.28.0/validators/aura.md",sourceDirName:"validators",slug:"/validators/aura",permalink:"/1.28.0/validators/aura",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/validators/aura.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Aura-based validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Validators",permalink:"/1.28.0/validators/"},next:{title:"Building from source",permalink:"/1.28.0/developers/building-from-source"}},c={},d=[{value:"Configuring a Docker container",id:"configuring-a-docker-container",level:2},{value:"Configuring keyfile",id:"configuring-keyfile",level:2},{value:"Configuration settings",id:"configuration-settings",level:2},{value:"Running the validator",id:"running-the-validator",level:2}];function l(e){const n={admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Your machine's clock has to be synchronized. Otherwise, you might miss block sealing. By default, the block time is set to 5 seconds."})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-a-docker-container",children:"Configuring a Docker container"}),"\n",(0,r.jsx)(n.p,{children:"The example below shows how to configure a Docker container for an Aura-based validator on the Energy Web chain:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n nethermind-validator:\n image: nethermind/nethermind:latest\n container_name: nethermind-validator\n restart: unless-stopped\n ports:\n - 8545:8545\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n environment:\n - NETHERMIND_CONFIG=energyweb\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-keyfile",children:"Configuring keyfile"}),"\n",(0,r.jsxs)(n.p,{children:["Make sure that the keyfile name contains the public key (address). Otherwise, Nethermind doesn't recognize it as such.\nFor instance, a keyfile can be named ",(0,r.jsx)(n.code,{children:"key-0x1234567890123456789012345678901234567890"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The keyfile must be stored in the ",(0,r.jsx)(n.code,{children:"keystore"})," directory located in the Nethermind base data directory."]}),"\n",(0,r.jsx)(n.h2,{id:"configuration-settings",children:"Configuration settings"}),"\n",(0,r.jsx)(n.p,{children:"Here is an example of recommended settings for a validator. The most convenient way to configure these settings is either defining them in the configuration file or passing them as environment variables."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.IsMining"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.MemoryHint"}),": Can be left unspecified. It's recommended to configure it accordingly to the machine specification(for Eneergy Web, 768000000 is enough)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"EthStats"})," namespace parameters if you want to report node status to Ethstats for your network."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Metrics"})," namespace parameters to enable node monitoring."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.PasswordFiles"}),": The path to the file containing the password for the mining private key."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.UnlockAccounts"}),": An array of accounts. Provide the miner public address here."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"}),": The miner public address should be provided here as well."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Aura.ForceSealing"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Merge.Enabled"}),": ",(0,r.jsx)(n.code,{children:"false"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Here's an example of above settings in the Energy Web configuration file:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",metastring:'title="energyweb.cfg"',children:'{\n "Init": {\n "ChainSpecPath": "chainspec/energyweb.json",\n "GenesisHash": "0x0b6d3e680af2fc525392c720666cce58e3d8e6fe75ba4b48cb36bcc69039229b",\n "BaseDbPath": "nethermind_db/energyweb",\n "LogFileName": "energyweb.log",\n "MemoryHint": 768000000\n },\n "Sync": {\n "FastSync": true,\n "PivotNumber": 26940000,\n "PivotHash": "0x8835983de9578a4355313afd2a43d8eada6f2a4ddbd9c51da103e0d5f53c4d8b",\n "PivotTotalDifficulty": "9167206964850082205703311924211835616257898274",\n "FastBlocks": true,\n "UseGethLimitsInFastBlocks": false,\n "FastSyncCatchUpHeightDelta": 10000000000\n },\n "EthStats": {\n "Enabled": true,\n "Name": "Nethermind Energy Web",\n "Secret": "secret...",\n "Url": "ws://localhost:3000/api"\n },\n "Metrics": {\n "Enabled": true,\n "NodeName": "Energy Web",\n "PushGatewayUrl": "http://localhost:9091/metrics"\n },\n "Mining": {\n "MinGasPrice": 1\n },\n "Merge": {\n "Enabled": false\n },\n "Aura": {\n "ForceSealing": true\n },\n "KeyStore": {\n "PasswordFiles": ["keystore/password"],\n "UnlockAccounts": ["0x..."],\n "BlockAuthorAccount": "0x..." \n },\n}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"running-the-validator",children:"Running the validator"}),"\n",(0,r.jsxs)(n.p,{children:["The above Docker Compose file can be run from the directory the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," is located in as follows:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose up -d\n"})}),"\n",(0,r.jsx)(n.p,{children:"To check the logs and verify the sealing of blocks, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose logs -f nethermind-validator\n"})})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>a});var r=i(6540);const t={},o=r.createContext(t);function s(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4860735d.9ce4d410.js b/assets/js/4860735d.8cf6344a.js similarity index 99% rename from assets/js/4860735d.9ce4d410.js rename to assets/js/4860735d.8cf6344a.js index 93bb0782e..6599643b2 100644 --- a/assets/js/4860735d.9ce4d410.js +++ b/assets/js/4860735d.8cf6344a.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[424],{8160:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>t});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"trace namespace",sidebar_label:"trace",sidebar_position:8},h=void 0,x={id:"interacting/json-rpc-ns/trace",title:"trace namespace",description:"trace_block",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/trace.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/trace",permalink:"/interacting/json-rpc-ns/trace",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/trace.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"trace namespace",sidebar_label:"trace",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"proof",permalink:"/interacting/json-rpc-ns/proof"},next:{title:"txpool",permalink:"/interacting/json-rpc-ns/txpool"}},j={},t=[{value:"trace_block",id:"trace_block",level:3},{value:"trace_call",id:"trace_call",level:3},{value:"trace_filter",id:"trace_filter",level:3},{value:"trace_rawTransaction",id:"trace_rawtransaction",level:3},{value:"trace_replayBlockTransactions",id:"trace_replayblocktransactions",level:3},{value:"trace_replayTransaction",id:"trace_replaytransaction",level:3},{value:"trace_transaction",id:"trace_transaction",level:3}];function a(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"trace_block",children:"trace_block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"numberOrTag"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_block",\n "params": [numberOrTag]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_call",children:"trace_call"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"call"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_call",\n "params": [call, traceTypes, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_filter",children:"trace_filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceFilterForRpc"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"count"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_filter",\n "params": [traceFilterForRpc]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_rawtransaction",children:"trace_rawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Traces a call to eth_sendRawTransaction without making the call, returning the traces"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_rawTransaction",\n "params": [data, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replayblocktransactions",children:"trace_replayBlockTransactions"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayBlockTransactions",\n "params": [blockParameter, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replaytransaction",children:"trace_replayTransaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayTransaction",\n "params": [txHash, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_transaction",children:"trace_transaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_transaction",\n "params": [txHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>T});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),j=s(679);function t(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function a(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function g(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=a(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,t]=m({queryString:s,groupId:i}),[g,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,j.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??g;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),t(e),u(e)}),[t,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},t=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:t,onClick:j,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=g(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function T(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:t(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[424],{8160:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>t});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"trace namespace",sidebar_label:"trace",sidebar_position:8},h=void 0,x={id:"interacting/json-rpc-ns/trace",title:"trace namespace",description:"trace_block",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/trace.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/trace",permalink:"/interacting/json-rpc-ns/trace",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/trace.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"trace namespace",sidebar_label:"trace",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"proof",permalink:"/interacting/json-rpc-ns/proof"},next:{title:"txpool",permalink:"/interacting/json-rpc-ns/txpool"}},j={},t=[{value:"trace_block",id:"trace_block",level:3},{value:"trace_call",id:"trace_call",level:3},{value:"trace_filter",id:"trace_filter",level:3},{value:"trace_rawTransaction",id:"trace_rawtransaction",level:3},{value:"trace_replayBlockTransactions",id:"trace_replayblocktransactions",level:3},{value:"trace_replayTransaction",id:"trace_replaytransaction",level:3},{value:"trace_transaction",id:"trace_transaction",level:3}];function a(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"trace_block",children:"trace_block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"numberOrTag"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_block",\n "params": [numberOrTag]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_call",children:"trace_call"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"call"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_call",\n "params": [call, traceTypes, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_filter",children:"trace_filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceFilterForRpc"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"count"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_filter",\n "params": [traceFilterForRpc]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_rawtransaction",children:"trace_rawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Traces a call to eth_sendRawTransaction without making the call, returning the traces"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_rawTransaction",\n "params": [data, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replayblocktransactions",children:"trace_replayBlockTransactions"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayBlockTransactions",\n "params": [blockParameter, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replaytransaction",children:"trace_replayTransaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayTransaction",\n "params": [txHash, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_transaction",children:"trace_transaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_transaction",\n "params": [txHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>T});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),j=s(679);function t(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function a(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function g(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=a(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,t]=m({queryString:s,groupId:i}),[g,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,j.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??g;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),t(e),u(e)}),[t,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},t=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:t,onClick:j,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=g(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function T(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:t(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4d3811ec.83c04b29.js b/assets/js/4d3811ec.a2530a3c.js similarity index 99% rename from assets/js/4d3811ec.83c04b29.js rename to assets/js/4d3811ec.a2530a3c.js index 04779d939..87596b209 100644 --- a/assets/js/4d3811ec.83c04b29.js +++ b/assets/js/4d3811ec.a2530a3c.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2272],{9914:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>t});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"trace namespace",sidebar_label:"trace",sidebar_position:8},h=void 0,x={id:"interacting/json-rpc-ns/trace",title:"trace namespace",description:"trace_block",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/trace.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/trace",permalink:"/1.27.0/interacting/json-rpc-ns/trace",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/trace.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"trace namespace",sidebar_label:"trace",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"proof",permalink:"/1.27.0/interacting/json-rpc-ns/proof"},next:{title:"txpool",permalink:"/1.27.0/interacting/json-rpc-ns/txpool"}},j={},t=[{value:"trace_block",id:"trace_block",level:3},{value:"trace_call",id:"trace_call",level:3},{value:"trace_filter",id:"trace_filter",level:3},{value:"trace_rawTransaction",id:"trace_rawtransaction",level:3},{value:"trace_replayBlockTransactions",id:"trace_replayblocktransactions",level:3},{value:"trace_replayTransaction",id:"trace_replaytransaction",level:3},{value:"trace_transaction",id:"trace_transaction",level:3}];function a(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"trace_block",children:"trace_block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"numberOrTag"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_block",\n "params": [numberOrTag]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_call",children:"trace_call"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"call"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_call",\n "params": [call, traceTypes, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_filter",children:"trace_filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceFilterForRpc"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"count"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_filter",\n "params": [traceFilterForRpc]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_rawtransaction",children:"trace_rawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Traces a call to eth_sendRawTransaction without making the call, returning the traces"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_rawTransaction",\n "params": [data, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replayblocktransactions",children:"trace_replayBlockTransactions"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayBlockTransactions",\n "params": [blockParameter, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replaytransaction",children:"trace_replayTransaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayTransaction",\n "params": [txHash, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_transaction",children:"trace_transaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_transaction",\n "params": [txHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>T});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),j=s(679);function t(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function a(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function g(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=a(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,t]=m({queryString:s,groupId:i}),[g,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,j.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??g;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),t(e),u(e)}),[t,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},t=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:t,onClick:j,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=g(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function T(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:t(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2272],{9914:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>t});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"trace namespace",sidebar_label:"trace",sidebar_position:8},h=void 0,x={id:"interacting/json-rpc-ns/trace",title:"trace namespace",description:"trace_block",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/trace.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/trace",permalink:"/1.27.0/interacting/json-rpc-ns/trace",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/trace.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"trace namespace",sidebar_label:"trace",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"proof",permalink:"/1.27.0/interacting/json-rpc-ns/proof"},next:{title:"txpool",permalink:"/1.27.0/interacting/json-rpc-ns/txpool"}},j={},t=[{value:"trace_block",id:"trace_block",level:3},{value:"trace_call",id:"trace_call",level:3},{value:"trace_filter",id:"trace_filter",level:3},{value:"trace_rawTransaction",id:"trace_rawtransaction",level:3},{value:"trace_replayBlockTransactions",id:"trace_replayblocktransactions",level:3},{value:"trace_replayTransaction",id:"trace_replaytransaction",level:3},{value:"trace_transaction",id:"trace_transaction",level:3}];function a(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"trace_block",children:"trace_block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"numberOrTag"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_block",\n "params": [numberOrTag]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_call",children:"trace_call"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"call"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_call",\n "params": [call, traceTypes, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_filter",children:"trace_filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceFilterForRpc"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"count"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_filter",\n "params": [traceFilterForRpc]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_rawtransaction",children:"trace_rawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Traces a call to eth_sendRawTransaction without making the call, returning the traces"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_rawTransaction",\n "params": [data, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replayblocktransactions",children:"trace_replayBlockTransactions"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayBlockTransactions",\n "params": [blockParameter, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replaytransaction",children:"trace_replayTransaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayTransaction",\n "params": [txHash, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_transaction",children:"trace_transaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_transaction",\n "params": [txHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>T});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),j=s(679);function t(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function a(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function g(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=a(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,t]=m({queryString:s,groupId:i}),[g,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,j.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??g;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),t(e),u(e)}),[t,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},t=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:t,onClick:j,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=g(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function T(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:t(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4db6a847.977b10ae.js b/assets/js/4db6a847.bf76f7a6.js similarity index 98% rename from assets/js/4db6a847.977b10ae.js rename to assets/js/4db6a847.bf76f7a6.js index fe4bb7276..4fce82c4d 100644 --- a/assets/js/4db6a847.977b10ae.js +++ b/assets/js/4db6a847.bf76f7a6.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7955],{5753:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>h});var r=t(4848),s=t(8453);const i={title:"Grafana and Prometheus",sidebar_position:0},o=void 0,a={id:"monitoring/metrics/grafana-and-prometheus",title:"Grafana and Prometheus",description:"This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.",source:"@site/versioned_docs/version-1.25.4/monitoring/metrics/grafana-and-prometheus.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/grafana-and-prometheus",permalink:"/1.25.4/monitoring/metrics/grafana-and-prometheus",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/monitoring/metrics/grafana-and-prometheus.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Grafana and Prometheus",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Metrics",permalink:"/1.25.4/monitoring/metrics/"},next:{title:"dotnet-counters",permalink:"/1.25.4/monitoring/metrics/dotnet-counters"}},c={},h=[{value:"Step 1: Set up Grafana and Prometheus",id:"step-1-set-up-grafana-and-prometheus",level:2},{value:"Step 2: Run the stack",id:"step-2-run-the-stack",level:2},{value:"Step 3: Run Nethermind",id:"step-3-run-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["This guide will walk you through setting up a local metrics infrastructure using ",(0,r.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,r.jsx)(n.a,{href:"https://prometheus.io",children:"Prometheus"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"step-1-set-up-grafana-and-prometheus",children:"Step 1: Set up Grafana and Prometheus"}),"\n",(0,r.jsxs)(n.p,{children:["To simplify the process, we will use the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/metrics-infrastructure",children:"metrics-infrastructure"})," repository, which contains the necessary configuration files to run Grafana and Prometheus in a Docker container. However, you can also set up Grafana and Prometheus manually the way it fits your specific needs."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/NethermindEth/metrics-infrastructure.git\n"})}),"\n",(0,r.jsx)(n.h2,{id:"step-2-run-the-stack",children:"Step 2: Run the stack"}),"\n",(0,r.jsx)(n.p,{children:"After cloning the repository, navigate to its root directory and run the containers using Docker Compose as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker-compose up\n"})}),"\n",(0,r.jsx)(n.p,{children:"Once the stack is running, you can access the following services:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Grafana"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:3000",children:"localhost:3000"}),(0,r.jsx)(n.br,{}),"\n","Use ",(0,r.jsx)(n.code,{children:"admin"})," for both the username and password. When asked for a password change, you may skip it. Then, navigate to Dashboards > Nethermind Dashboard."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Prometheus"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9090",children:"localhost:9090"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Pushgateway"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9091",children:"localhost:9091"}),(0,r.jsx)(n.br,{}),"\n","To specify another endpoint for the Pushgateway, use the ",(0,r.jsx)(n.code,{children:"--Metrics.PushGatewayUrl"})," command line option."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"step-3-run-nethermind",children:"Step 3: Run Nethermind"}),"\n",(0,r.jsxs)(n.p,{children:["To enable metrics in Nethermind, use the ",(0,r.jsx)(n.code,{children:"--Metrics.Enabled true"})," command line option. For more options, see the ",(0,r.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["A ",(0,r.jsx)(n.a,{href:"/1.25.4/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,r.jsx)(n.p,{children:"Run Nethermind as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.Enabled true\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Alternatively, you may add the ",(0,r.jsx)(n.code,{children:"nethermind"})," service to the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," file in the repository root to run everything altogether:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n command: -c mainnet --Metrics.Enabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.p,{children:"In this case, you may want to configure your consensus client similarly."})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(6540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7955],{5753:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>h});var r=t(4848),s=t(8453);const i={title:"Grafana and Prometheus",sidebar_position:0},o=void 0,a={id:"monitoring/metrics/grafana-and-prometheus",title:"Grafana and Prometheus",description:"This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.",source:"@site/versioned_docs/version-1.25.4/monitoring/metrics/grafana-and-prometheus.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/grafana-and-prometheus",permalink:"/1.25.4/monitoring/metrics/grafana-and-prometheus",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/monitoring/metrics/grafana-and-prometheus.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Grafana and Prometheus",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Metrics",permalink:"/1.25.4/monitoring/metrics/"},next:{title:"dotnet-counters",permalink:"/1.25.4/monitoring/metrics/dotnet-counters"}},c={},h=[{value:"Step 1: Set up Grafana and Prometheus",id:"step-1-set-up-grafana-and-prometheus",level:2},{value:"Step 2: Run the stack",id:"step-2-run-the-stack",level:2},{value:"Step 3: Run Nethermind",id:"step-3-run-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["This guide will walk you through setting up a local metrics infrastructure using ",(0,r.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,r.jsx)(n.a,{href:"https://prometheus.io",children:"Prometheus"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"step-1-set-up-grafana-and-prometheus",children:"Step 1: Set up Grafana and Prometheus"}),"\n",(0,r.jsxs)(n.p,{children:["To simplify the process, we will use the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/metrics-infrastructure",children:"metrics-infrastructure"})," repository, which contains the necessary configuration files to run Grafana and Prometheus in a Docker container. However, you can also set up Grafana and Prometheus manually the way it fits your specific needs."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/NethermindEth/metrics-infrastructure.git\n"})}),"\n",(0,r.jsx)(n.h2,{id:"step-2-run-the-stack",children:"Step 2: Run the stack"}),"\n",(0,r.jsx)(n.p,{children:"After cloning the repository, navigate to its root directory and run the containers using Docker Compose as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker-compose up\n"})}),"\n",(0,r.jsx)(n.p,{children:"Once the stack is running, you can access the following services:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Grafana"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:3000",children:"localhost:3000"}),(0,r.jsx)(n.br,{}),"\n","Use ",(0,r.jsx)(n.code,{children:"admin"})," for both the username and password. When asked for a password change, you may skip it. Then, navigate to Dashboards > Nethermind Dashboard."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Prometheus"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9090",children:"localhost:9090"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Pushgateway"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9091",children:"localhost:9091"}),(0,r.jsx)(n.br,{}),"\n","To specify another endpoint for the Pushgateway, use the ",(0,r.jsx)(n.code,{children:"--Metrics.PushGatewayUrl"})," command line option."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"step-3-run-nethermind",children:"Step 3: Run Nethermind"}),"\n",(0,r.jsxs)(n.p,{children:["To enable metrics in Nethermind, use the ",(0,r.jsx)(n.code,{children:"--Metrics.Enabled true"})," command line option. For more options, see the ",(0,r.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["A ",(0,r.jsx)(n.a,{href:"/1.25.4/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,r.jsx)(n.p,{children:"Run Nethermind as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.Enabled true\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Alternatively, you may add the ",(0,r.jsx)(n.code,{children:"nethermind"})," service to the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," file in the repository root to run everything altogether:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n command: -c mainnet --Metrics.Enabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.p,{children:"In this case, you may want to configure your consensus client similarly."})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(6540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4eaf64ae.83a97063.js b/assets/js/4eaf64ae.af642949.js similarity index 99% rename from assets/js/4eaf64ae.83a97063.js rename to assets/js/4eaf64ae.af642949.js index 123ce2fbc..ce43d63f4 100644 --- a/assets/js/4eaf64ae.83a97063.js +++ b/assets/js/4eaf64ae.af642949.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[279],{984:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>a,frontMatter:()=>i,metadata:()=>r,toc:()=>h});var l=s(4848),c=s(8453);const i={title:"Configuration",sidebar_position:1,toc_max_heading_level:4},d=void 0,r={id:"fundamentals/configuration",title:"Configuration",description:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:",source:"@site/versioned_docs/version-1.27.0/fundamentals/configuration.md",sourceDirName:"fundamentals",slug:"/fundamentals/configuration",permalink:"/1.27.0/fundamentals/configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/configuration.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Configuration",sidebar_position:1,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"Migrating from Geth",permalink:"/1.27.0/get-started/migrating-from-geth"},next:{title:"Sync",permalink:"/1.27.0/fundamentals/sync"}},o={},h=[{value:"Command line options",id:"command-line-options",level:2},{value:"Basic options",id:"basic-options",level:3},{value:"Options by namespaces",id:"options-by-namespaces",level:3},{value:"Aura",id:"aura",level:4},{value:"Blocks",id:"blocks",level:4},{value:"Bloom",id:"bloom",level:4},{value:"EthStats",id:"ethstats",level:4},{value:"HealthChecks",id:"healthchecks",level:4},{value:"Hive",id:"hive",level:4},{value:"Init",id:"init",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"KeyStore",id:"keystore",level:4},{value:"Merge",id:"merge",level:4},{value:"Metrics",id:"metrics",level:4},{value:"Mining",id:"mining",level:4},{value:"Network",id:"network",level:4},{value:"Optimism",id:"optimism",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Receipt",id:"receipt",level:4},{value:"Seq",id:"seq",level:4},{value:"Snapshot",id:"snapshot",level:4},{value:"Sync",id:"sync",level:4},{value:"TraceStore",id:"tracestore",level:4},{value:"TxPool",id:"txpool",level:4},{value:"Wallet",id:"wallet",level:4},{value:"Environment variables",id:"environment-variables",level:2},{value:"Configuration file",id:"configuration-file",level:2}];function t(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,c.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.p,{children:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"#command-line-options",children:"Command line options"})," (aka arguments or flags)"]}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#environment-variables",children:"Environment variables"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#configuration-file",children:"Configuration file"})}),"\n"]}),"\n",(0,l.jsx)(n.admonition,{type:"note",children:(0,l.jsx)(n.p,{children:"Given the above priority list, an option defined in a more priority way overrides the same option defined elsewhere if any."})}),"\n",(0,l.jsx)(n.h2,{id:"command-line-options",children:"Command line options"}),"\n",(0,l.jsx)(n.p,{children:"The full list of command line options can be displayed by running:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,l.jsx)(n.p,{children:"Below is the list of the basic options followed by an exhaustive list of options by namespace."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsx)(n.p,{children:"The command line options are case-sensitive and can be defined only once unless stated otherwise."})}),"\n",(0,l.jsx)(n.h3,{id:"basic-options",children:"Basic options"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-d, --baseDbPath "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind database directory. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-c, --config "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the ",(0,l.jsx)(n.a,{href:"#configuration-file",children:"configuration file"})," or the name (without extension) of any of the configuration files in the configuration directory. Defaults to ",(0,l.jsx)(n.code,{children:"mainnet"}),"."]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{children:"Available configurations"}),(0,l.jsxs)("p",{children:[(0,l.jsxs)(n.p,{children:["Nethermind provides the following pre-built configurations named as the networks they are for. Their respective versions for archive nodes are suffixed ",(0,l.jsx)(n.code,{children:"_archive"}),"."]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-mainnet"})," ",(0,l.jsx)(n.code,{children:"base-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-sepolia"})," ",(0,l.jsx)(n.code,{children:"base-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chiado"})," ",(0,l.jsx)(n.code,{children:"chiado_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"energyweb"})," ",(0,l.jsx)(n.code,{children:"energyweb_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gnosis"})," ",(0,l.jsx)(n.code,{children:"gnosis_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"holesky"})," ",(0,l.jsx)(n.code,{children:"holesky_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mainnet"})," ",(0,l.jsx)(n.code,{children:"mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-mainnet"})," ",(0,l.jsx)(n.code,{children:"op-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-sepolia"})," ",(0,l.jsx)(n.code,{children:"op-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sepolia"})," ",(0,l.jsx)(n.code,{children:"sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"volta"})," ",(0,l.jsx)(n.code,{children:"volta_archive"})]}),"\n"]})]})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-cd, --configsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the configuration files directory. Defaults to ",(0,l.jsx)(n.code,{children:"configs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-dd, --datadir "})})}),"\n",(0,l.jsx)(n.p,{children:"The path to the Nethermind data directory. Defaults to Nethermind's current directory."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsxs)(n.p,{children:["The absolute paths set by ",(0,l.jsx)(n.code,{children:"Init.BaseDbPath"}),", ",(0,l.jsx)(n.code,{children:"Init.LogDirectory"}),", or ",(0,l.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})," options in a configuration file are not overridden by ",(0,l.jsx)(n.code,{children:"--datadir"}),"."]})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-?, -h, --help"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the full list of available command line options."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-l, --log "})})}),"\n",(0,l.jsxs)(n.p,{children:["Log level (severity). Allowed values: ",(0,l.jsx)(n.code,{children:"TRACE"})," ",(0,l.jsx)(n.code,{children:"DEBUG"})," ",(0,l.jsx)(n.code,{children:"INFO"})," ",(0,l.jsx)(n.code,{children:"WARN"})," ",(0,l.jsx)(n.code,{children:"ERROR"})," ",(0,l.jsx)(n.code,{children:"OFF"}),". Defaults to ",(0,l.jsx)(n.code,{children:"INFO"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-lcs, --loggerConfigSource "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the NLog configuration file. Defaults to ",(0,l.jsx)(n.code,{children:"NLog.config"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-pd, --pluginsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind plugins directory. Defaults to ",(0,l.jsx)(n.code,{children:"plugins"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-v, --version"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the Nethermind version info."}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"options-by-namespaces",children:"Options by namespaces"}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"aura",children:"Aura"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.AllowAuRaPrivateChains "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_ALLOWAURAPRIVATECHAINS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to allow private Aura-based chains only. Do not use with existing Aura-based chains. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.ForceSealing "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_FORCESEALING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal empty blocks if mining. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_MINIMUM2MLNGASPERBLOCKWHENUSINGBLOCKGASLIMITCONTRACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use 2M gas if the contract returns less than that when using ",(0,l.jsx)(n.code,{children:"BlockGasLimitContractTransitions"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityConfigFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONFIGFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the transaction priority rules file to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityContractAddress "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONTRACTADDRESS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The address of the transaction priority contract to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"blocks",children:"Blocks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.ExtraData "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_EXTRADATA"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block header extra data up to 32 bytes in length. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.MinGasPrice "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_MINGASPRICE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum gas premium (or the gas price before the London hard fork) for transactions accepted by the block producer. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.PreWarmStateOnBlockProcessing "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_PREWARMSTATEONBLOCKPROCESSING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Try to pre-warm the state when processing blocks. Can lead to 2x speedup in main loop block processing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"True"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.RandomizedBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_RANDOMIZEDBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to change the difficulty of the block randomly within the constraints. Used in NethDev only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.SecondsPerSlot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_SECONDSPERSLOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block time slot, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"12"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.TargetBlockGasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_TARGETBLOCKGASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block gas limit that the block producer should try to reach in the fastest possible way based on the protocol rules. If not specified, then the block producer should follow others. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"bloom",children:"Bloom"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Index "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Bloom index. The Bloom index speeds up the RPC log searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.IndexLevelBucketSizes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEXLEVELBUCKETSIZES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of multipliers for index levels. Can be tweaked per chain to boost performance. Defaults to ",(0,l.jsx)(n.code,{children:"[4, 8, 8]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Migration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the previously downloaded blocks to the Bloom index. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.MigrationStatistics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATIONSTATISTICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether the migration statistics should be calculated and output. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"ethstats",children:"EthStats"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Contact "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_CONTACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node owner contact details displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"hello@nethermind.io"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use Ethstats publishing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Name "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_NAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node name displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Secret "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SECRET"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats secret. Defaults to ",(0,l.jsx)(n.code,{children:"secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.SendInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SENDINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The stats update interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"15"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Server "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SERVER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats server URL. Defaults to ",(0,l.jsx)(n.code,{children:"ws://localhost:3000/api"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"healthchecks",children:"HealthChecks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageCheckAwaitOnStartup "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGECHECKAWAITONSTARTUP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to check for low disk space on startup and suspend until enough space is available. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACESHUTDOWNTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which Nethermind shuts down. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACEWARNINGTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which a warning is displayed. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalClRequestTime "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALCLREQUESTTIME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max request interval, in seconds, in which the consensus client is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProcessedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPROCESSEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block processing is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProducedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPRODUCEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block production is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.PollingInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_POLLINGINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The health check updates polling interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Slug "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_SLUG"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL slug the health checks service is exposed at. Defaults to ",(0,l.jsx)(n.code,{children:"/health"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.UIEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_UIENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health checks UI. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable web hooks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksPayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on failure.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#FFCC00",\n "pretext": "Health Check Status :warning:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "Description",\n "value": "[[DESCRIPTIONS]]",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksRestorePayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSRESTOREPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on recovery.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#36a64f",\n "pretext": "Health Check Status :+1:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "description",\n "value": "The HealthCheck `[[LIVENESS]]` is recovered. Everything is up and running.",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksUri "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSURI"})]}),"\n",(0,l.jsxs)(n.p,{children:["The web hook URL. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"hive",children:"Hive"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.BlocksDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_BLOCKSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory with additional blocks. Defaults to ",(0,l.jsx)(n.code,{children:"/blocks"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.ChainFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_CHAINFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the test chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"/chain.rlp"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable Hive for debugging. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.GenesisFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_GENESISFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the genesis block file. Defaults to ",(0,l.jsx)(n.code,{children:"/genesis.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.KeysDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_KEYSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"/keys"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"init",children:"Init"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.AutoDump "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_AUTODUMP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Auto-dump on bad blocks for diagnostics. ",(0,l.jsx)(n.code,{children:"Default"})," combines ",(0,l.jsx)(n.code,{children:"Receipts"})," and ",(0,l.jsx)(n.code,{children:"Rlp"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Receipts"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Geth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rlp"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RlpLog"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Default"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BadBlocksStored "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BADBLOCKSSTORED"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum number of bad blocks observed on the network that will be stored on disk. Defaults to ",(0,l.jsx)(n.code,{children:"100"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BaseDbPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BASEDBPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The base path for all Nethermind databases. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_CHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/foundation.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiagnosticMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DIAGNOSTICMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"MemDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RpcDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ReadOnlyDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyRewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifySupply"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyTrie"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiscoveryEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DISCOVERYENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the node discovery. If disabled, Nethermind doesn't look for other nodes beyond the bootnodes specified. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.EnableUnsecuredDevWallet "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ENABLEUNSECUREDDEVWALLET"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the in-app wallet/keystore. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.GenesisHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_GENESISHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the genesis block. If not specified, the genesis block validity is not checked which is useful in the case of ad hoc test/private networks. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.HiveChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_HIVECHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file for Hive tests. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/test.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.IsMining "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ISMINING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal/mine new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KeepDevWalletInMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KEEPDEVWALLETINMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to create session-only accounts and delete them on shutdown. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KzgSetupPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KZGSETUPPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to KZG trusted setup file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind logs directory. Defaults to ",(0,l.jsx)(n.code,{children:"logs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the log file. Defaults to ",(0,l.jsx)(n.code,{children:"log.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogRules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGRULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The logs format as ",(0,l.jsx)(n.code,{children:"LogPath:LogLevel;*"})," Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.MemoryHint "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_MEMORYHINT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hint on the max memory limit, in bytes, to configure the database and networking memory allocations. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.PeerManagerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PEERMANAGERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to newly discovered peers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ProcessingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PROCESSINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download/process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.RpcDbUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_RPCDBURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the remote node used as a database source when ",(0,l.jsx)(n.code,{children:"DiagnosticMode"})," is set to ",(0,l.jsx)(n.code,{children:"RpcDb"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.StaticNodesPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_STATICNODESPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the static nodes file. Defaults to ",(0,l.jsx)(n.code,{children:"Data/static-nodes.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.WebSocketsEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_WEBSOCKETSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable WebSocket service for the default JSON-RPC port on startup. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ADDITIONALRPCURLS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list. For instance, ",(0,l.jsx)(n.code,{children:"[http://localhost:8546|http;ws|eth;web3]"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.BufferResponses "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_BUFFERRESPONSES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to buffer responses before sending them. This allows using of ",(0,l.jsx)(n.code,{children:"Content-Length"})," instead of ",(0,l.jsx)(n.code,{children:"Transfer-Encoding: chunked"}),". Note that it may degrade performance on large responses. The max buffered response length is 2GB. Chunked responses can be larger. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.CallsFilterFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_CALLSFILTERFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to a file with the list of new-line-separated JSON-RPC calls. If specified, only the calls from that file are allowed. Defaults to ",(0,l.jsx)(n.code,{children:"Data/jsonrpc.filter"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the JSON-RPC service. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of JSON-RPC namespaces to enable. For instance, ",(0,l.jsx)(n.code,{children:"[debug,eth]"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Built-in namespaces:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"admin"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"client"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"debug"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"engine"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"evm"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"health"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"net"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"personal"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"proof"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"rpc"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"subscribe"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"txpool"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"web3"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"[Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health,Rpc]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineEnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list for Engine API. Defaults to ",(0,l.jsx)(n.code,{children:"[Net,Eth,Subscribe,Web3]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnginePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API port. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EstimateErrorMargin "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ESTIMATEERRORMARGIN"})]}),"\n",(0,l.jsxs)(n.p,{children:["The error margin used in eth_estimateGas expressed in basis points. Defaults to ",(0,l.jsx)(n.code,{children:"150"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EthModuleConcurrentInstances "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ETHMODULECONCURRENTINSTANCES"})]}),"\n",(0,l.jsx)(n.p,{children:"The number of concurrent instances for non-sharable calls:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"This limits the load on the CPU and I/O to reasonable levels. If the limit is exceeded, HTTP 503 is returned along with the JSON-RPC error. Defaults to the number of logical processors."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.GasCap "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_GASCAP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The gas limit for ",(0,l.jsx)(n.code,{children:"eth_call"})," and ",(0,l.jsx)(n.code,{children:"eth_estimateGas"}),". Defaults to ",(0,l.jsx)(n.code,{children:"100000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Host "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_HOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_IPCUNIXDOMAINSOCKETPATH"})]}),"\n",(0,l.jsx)(n.p,{children:"The path to connect a UNIX domain socket over."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the JWT secret file required for the Engine API authentication. Defaults to ",(0,l.jsx)(n.code,{children:"keystore/jwt-secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchResponseBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHRESPONSEBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max batch size limit for batched JSON-RPC calls. Defaults to ",(0,l.jsx)(n.code,{children:"33554432"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of JSON-RPC requests in a batch. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxLoggedRequestParametersCharacters "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGGEDREQUESTPARAMETERSCHARACTERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of characters of a JSON-RPC request parameter printing to the log. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxLogsPerResponse "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGSPERRESPONSE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of logs per response. For method ",(0,l.jsx)(n.code,{children:"eth_getLogs"}),". If 0 then no limit. Defaults to ",(0,l.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxRequestBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXREQUESTBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max length of HTTP request body, in bytes. Defaults to ",(0,l.jsx)(n.code,{children:"30000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MethodsLoggingFiltering "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_METHODSLOGGINGFILTERING"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of the method names not to log. Defaults to ",(0,l.jsx)(n.code,{children:"[engine_newPayloadV1,engine_newPayloadV2,engine_newPayloadV3,engine_forkchoiceUpdatedV1,engine_forkchoiceUpdatedV2]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Port "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_PORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service HTTP port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.ReportIntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REPORTINTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The interval, in seconds, between the JSON-RPC stats report log. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RequestQueueLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REQUESTQUEUELIMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of concurrent requests in the queue for:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"500"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderBaseFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERBASEFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the base file for diagnostic recording. Defaults to ",(0,l.jsx)(n.code,{children:"logs/rpc.{counter}.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderState "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERSTATE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic recording mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Request"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Response"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Timeout "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_TIMEOUT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The request timeout, in milliseconds. Defaults to ",(0,l.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_WEBSOCKETSPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service WebSockets port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"keystore",children:"KeyStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.BlockAuthorAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_BLOCKAUTHORACCOUNT"})]}),"\n",(0,l.jsx)(n.p,{children:"An account to use as the block author (coinbase)."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Cipher "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_CIPHER"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"aes-128-ctr"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEACCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["An account to use for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeKeyFile"})," option is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeKeyFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEKEYFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the key file to use by for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeAccount"})," is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.IVSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_IVSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Kdf "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDF"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"scrypt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsDklen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSDKLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsN "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"262144"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSP"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsR "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSR"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsSaltLen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSSALTLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"keystore"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreEncoding "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREENCODING"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"UTF-8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.PasswordFiles "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDFILES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of password files paths used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Passwords "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of passwords used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterBlockSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERBLOCKSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterKeySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERKEYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.TestNodeKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_TESTNODEKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"A plaintext private key to use for testing purposes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.UnlockAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_UNLOCKACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of accounts to unlock on startup using passwords either in ",(0,l.jsx)(n.code,{children:"PasswordFiles"})," and ",(0,l.jsx)(n.code,{children:"Passwords"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"merge",children:"Merge"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.BuilderRelayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_BUILDERRELAYURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of a builder relay. If specified, blocks are sent to the relay. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CollectionsPerDecommit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COLLECTIONSPERDECOMMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"Request the garbage collector (GC) to release the process memory."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to disable"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to release every time"]}),"\n",(0,l.jsx)(n.li,{children:"A positive number to release memory after that many Engine API calls"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"25"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CompactMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COMPACTMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory compaction mode. When set to ",(0,l.jsx)(n.code,{children:"Full"}),", compacts the large object heap (LOH) if ",(0,l.jsx)(n.code,{children:"SweepMemory"})," is set to ",(0,l.jsx)(n.code,{children:"Gen2"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"No"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Yes"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Yes"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Merge hard fork. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.FinalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_FINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the last PoW block. Must be greater than or equal to the terminal total difficulty (TTD). Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.PrioritizeBlockLatency "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_PRIORITIZEBLOCKLATENCY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to reduce block latency by disabling garbage collection during Engine API calls. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.SweepMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_SWEEPMEMORY"})]}),"\n",(0,l.jsx)(n.p,{children:"The garbage collection (GC) mode between Engine API calls."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"NoGC"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen0"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen1"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen2"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Gen1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal PoW block hash used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKNUMBER"})]}),"\n",(0,l.jsx)(n.p,{children:"The terminal PoW block number used for the transition."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal total difficulty (TTD) used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"metrics",children:"Metrics"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.CountersEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_COUNTERSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish metrics using .NET diagnostics that can be collected with dotnet-counters. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish various metrics to Prometheus Pushgateway at a given interval. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.EnableDbSizeMetrics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLEDBSIZEMETRICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish database size metrics. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposeHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The IP address to expose Prometheus metrics at. The value of ",(0,l.jsx)(n.code,{children:"+"})," means listening on all available hostnames. Setting this to ",(0,l.jsx)(n.code,{children:"localhost"})," prevents remote access. Defaults to ",(0,l.jsx)(n.code,{children:"+"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The port to expose Prometheus metrics at. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.IntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_INTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The frequency of pushing metrics to Prometheus, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.NodeName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_NODENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name to display on the Grafana dashboard. Defaults to ",(0,l.jsx)(n.code,{children:'"Nethermind"'}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.PushGatewayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_PUSHGATEWAYURL"})]}),"\n",(0,l.jsx)(n.p,{children:"The Prometheus Pushgateway instance URL."}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"mining",children:"Mining"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Mining.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to produce blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Mining.Signer "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_SIGNER"})]}),"\n",(0,l.jsxs)(n.p,{children:["Url for an external signer like clef: ",(0,l.jsx)(n.a,{href:"https://github.com/ethereum/go-ethereum/blob/master/cmd/clef/tutorial.md",children:"https://github.com/ethereum/go-ethereum/blob/master/cmd/clef/tutorial.md"})," Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"network",children:"Network"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.Bootnodes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_BOOTNODES"})]}),"\n",(0,l.jsx)(n.p,{children:"A comma-separated enode list to be used as boot nodes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiagTracerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DIAGTRACERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable a verbose diagnostic tracing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryDns "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYDNS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Use tree is available through a DNS name. For the default of ",(0,l.jsx)(n.code,{children:".ethdisco.net"}),", leave unspecified. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The UDP port number for incoming discovery connections. It's recommended to keep it the same as the TCP port (",(0,l.jsx)(n.code,{children:"P2PPort"}),") because other values have not been tested yet. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.EnableUPnP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ENABLEUPNP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable automatic port forwarding via UPnP. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.ExternalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_EXTERNALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The external IP. Use only when the external IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.LocalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_LOCALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The local IP. Use only when the local IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxActivePeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max allowed number of connected peers. Defaults to ",(0,l.jsx)(n.code,{children:"50"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxNettyArenaCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXNETTYARENACOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum DotNetty arena count. Increasing this on a high-core CPU without increasing the memory budget may reduce chunk size so much that it causes a huge memory allocation. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.NettyArenaOrder "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_NETTYARENAORDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The size of the DotNetty arena order. ",(0,l.jsx)(n.code,{children:"-1"})," to depend on the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.OnlyStaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ONLYSTATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use static peers only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.P2PPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_P2PPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The TCP port for incoming P2P connections. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.PriorityPeersMaxCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_PRIORITYPEERSMAXCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of priority peers. Can be overridden by a plugin. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.StaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_STATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["A list of peers to keep connection for. Static peers are affected by ",(0,l.jsx)(n.code,{children:"MaxActivePeers"}),". Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"optimism",children:"Optimism"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Optimism.SequencerUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_OPTIMISMCONFIG_SEQUENCERURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["Sequencer address Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"pruning",children:"Pruning"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.AvailableSpaceCheckEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_AVAILABLESPACECHECKENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enables available disk space check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.CacheMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_CACHEMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The in-memory cache size, in MB. The bigger the cache size, the bigger the disk space savings. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningCompletionBehavior "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGCOMPLETIONBEHAVIOR"})]}),"\n",(0,l.jsx)(n.p,{children:"The behavior after pruning completion:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": Do nothing."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Shut Nethermind down if pruning has succeeded but leave it running if failed."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"AlwaysShutdown"}),": Shut Nethermind down when pruning completes, regardless of its status."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AlwaysShutdown"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningDisableLowPriorityWrites "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGDISABLELOWPRIORITYWRITES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable low-priority for pruning writes. Full pruning uses low-priority write operations to prevent blocking block processing. If block processing is not high-priority, set this option to ",(0,l.jsx)(n.code,{children:"true"})," for faster pruning. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMaxDegreeOfParallelism "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMAXDEGREEOFPARALLELISM"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of parallel tasks that can be used by full pruning:"}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to use the number of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to use 25% of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"1"})," to run on single thread"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"The recommended value depends on the type of the node:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["If the node needs to be responsive (serves for RPC or validator), then the recommended value is ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have many other responsibilities but needs to be able to follow the chain reliably without any delays and produce live logs, the ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"1"})," is recommended."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have to be responsive, has very fast I/O (like NVMe) and the shortest pruning time is to be achieved, then ",(0,l.jsx)(n.code,{children:"-1"})," is recommended. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMemoryBudgetMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMEMORYBUDGETMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory budget, in MB, used for the trie visit. Increasing this value significantly reduces the IOPS requirement at the expense of memory usage. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMinimumDelayHours "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMINIMUMDELAYHOURS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum delay, in hours, between full pruning operations not to exhaust disk writes. Defaults to ",(0,l.jsx)(n.code,{children:"240"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningThresholdMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTHRESHOLDMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The threshold, in MB, to trigger full pruning. Depends on ",(0,l.jsx)(n.code,{children:"Mode"})," and ",(0,l.jsx)(n.code,{children:"FullPruningTrigger"}),". Defaults to ",(0,l.jsx)(n.code,{children:"256000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningTrigger "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTRIGGER"})]}),"\n",(0,l.jsx)(n.p,{children:"The full pruning trigger:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Manual"}),": Triggered manually."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StateDbSize"}),": Trigger when the state DB size is above the threshold."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"VolumeFreeSpace"}),": Trigger when the free disk space where the state DB is stored is below the threshold."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Manual"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDbSize"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VolumeFreeSpace"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Manual"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.Mode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_MODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The pruning mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": No pruning (full archive)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Memory"}),": In-memory pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Full"}),": Full pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Hybrid"}),": Combined in-memory and full pruning"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Memory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Hybrid"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Hybrid"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.PersistenceInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PERSISTENCEINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block persistence frequency. If set to ",(0,l.jsx)(n.code,{children:"N"}),", it caches after each ",(0,l.jsx)(n.code,{children:"Nth"})," block even if not required by cache memory usage. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.PruningBoundary "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PRUNINGBOUNDARY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Past N state before state gets pruned Used to determine how old of a state to keep from the head. Defaults to ",(0,l.jsx)(n.code,{children:"64"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.TrackedPastKeyCountMemoryRatio "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_TRACKEDPASTKEYCOUNTMEMORYRATIO"})]}),"\n",(0,l.jsxs)(n.p,{children:["[TECHNICAL] Ratio of memory out of CacheMb to allocate for LRU used to track past keys for live pruning. Defaults to ",(0,l.jsx)(n.code,{children:"0.1"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"receipt",children:"Receipt"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactReceiptStore "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTRECEIPTSTORE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactTxIndex "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTTXINDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts transaction index database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.ReceiptsMigration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_RECEIPTSMIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the receipts database to the new schema. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.StoreReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_STORERECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to store receipts after a new block is processed. This setting is independent from downloading receipts in fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.TxLookupLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_TXLOOKUPLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of recent blocks to maintain transaction index for. ",(0,l.jsx)(n.code,{children:"0"})," to never remove indices, ",(0,l.jsx)(n.code,{children:"-1"})," to never index. Defaults to ",(0,l.jsx)(n.code,{children:"2350000"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"seq",children:"Seq"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ApiKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_APIKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"The Seq API key."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.MinLevel "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_MINLEVEL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The min log level to sent to Seq. Defaults to ",(0,l.jsx)(n.code,{children:"Off"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ServerUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_SERVERURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Seq instance URL. Defaults to ",(0,l.jsx)(n.code,{children:"http://localhost:5341"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"snapshot",children:"Snapshot"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Checksum "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_CHECKSUM"})]}),"\n",(0,l.jsxs)(n.p,{children:["The SHA-256 checksum of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.DownloadUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_DOWNLOADURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Snapshot plugin. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory to store the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot.zip"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"sync",children:"Sync"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientBodiesBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The earliest body downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, AncientBodiesBarrier } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientReceiptsBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The earliest receipt downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as folows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, max{ AncientBodiesBarrier, AncientReceiptsBarrier } } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.BlocksDbTuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_BLOCKSDBTUNEDBMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"Configure the blocks database for write optimizations during sync."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"EnableBlobFiles"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the block bodies in the Fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadHeadersInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADHEADERSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the old block headers in the Fast sync mode. If ",(0,l.jsx)(n.code,{children:"false"}),", Nethermind downloads only recent blocks headers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadReceiptsInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download receipts in the Fast sync mode. This slows down the process by a few hours but allows to interact with dApps that perform extensive historical logs searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSynced "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to shut down Nethermind once sync is finished. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSyncedWaitTimeSec "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCEDWAITTIMESEC"})]}),"\n",(0,l.jsxs)(n.p,{children:["The time, in seconds, to wait before shutting down Nethermind once sync is finished. Defaults to ",(0,l.jsx)(n.code,{children:"60"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Fast sync mode (the eth/63 synchronization algorithm). Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSyncCatchUpHeightDelta "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNCCATCHUPHEIGHTDELTA"})]}),"\n",(0,l.jsxs)(n.p,{children:["In Fast sync mode, the min height threshold limit up to which the Full sync, if already on, stays on when the chain is behind the network head. If the limit is exceeded, it switches back to Fast sync. For regular usage scenarios, setting this value lower than 32 is not recommended as this can cause issues with chain reorgs. Note that the last 2 blocks are always processed in Full sync, so setting it lower than 2 has no effect. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXRECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable receipts validation that checks for receipts that might be missing because of a bug. If needed, receipts are downloaded from the network. If ",(0,l.jsx)(n.code,{children:"true"}),", the pivot number must be same one used originally as it's used as a cut-off point. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to recalculate the total difficulty from ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyStartingBlock"})," to ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyLastBlock"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyLastBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYLASTBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The last block to recalculate the total difficulty for. If not specified, the best known block is used.\nDefaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyStartingBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYSTARTINGBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The first block to recalculate the total difficulty for. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxAttemptsToUpdatePivot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXATTEMPTSTOUPDATEPIVOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of attempts to update the pivot block based on the FCU message from the consensus client. Defaults to ",(0,l.jsx)(n.code,{children:"2147483647"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxProcessingThreads "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXPROCESSINGTHREADS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of threads used for syncing. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NetworkingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NETWORKINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to peers and sync. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NonValidatorNode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NONVALIDATORNODE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to operate as a non-validator. If ",(0,l.jsx)(n.code,{children:"true"}),", the ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," and ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," can be set to ",(0,l.jsx)(n.code,{children:"false"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTNUMBER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Snap sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSyncAccountRangePartitionCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNCACCOUNTRANGEPARTITIONCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of account range partitions to create. Increases the Snap sync request concurrency. Allowed values are between between 1 and 256. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.StrictMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_STRICTMODE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable some optimizations and do a more extensive sync. Useful when sync state is corrupted. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SynchronizationEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SYNCHRONIZATIONENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download and process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.TuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_TUNEDBMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"Configure the database for write optimizations during sync. Significantly reduces the total number of writes and sync time if you are not network limited."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"HeavyWrite"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.UseGethLimitsInFastBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to make smaller requests, in Fast Blocks mode, to avoid Geth from disconnecting. On the Geth-heavy networks (e.g., Mainnet), it's a desired behavior while on Nethermind- or OpenEthereum-heavy networks (Aura), it slows down the sync by a factor of ~4. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"tracestore",children:"TraceStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.BlocksToKeep "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_BLOCKSTOKEEP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of blocks to store, counting from the head. If ",(0,l.jsx)(n.code,{children:"0"}),", all traces of the processed blocks are stored. Defaults to ",(0,l.jsx)(n.code,{children:"10000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.DeserializationParallelization "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_DESERIALIZATIONPARALLELIZATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max parallelization when deserialization requests the ",(0,l.jsx)(n.code,{children:"trace_filter"})," method. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. If you experience a resource shortage, set to a low number. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the TraceStore plugin. If enabled, traces come from the database whenever possible. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.TraceTypes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_TRACETYPES"})]}),"\n",(0,l.jsx)(n.p,{children:"The type of traces to store."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VmTrace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDiff"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Trace, Rewards"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"txpool",children:"TxPool"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions cached in memory. The default value uses max 200MB for 6 blobs where one blob is 33MB (256 * 128KB) Defaults to ",(0,l.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobsSupport "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBSSUPPORT"})]}),"\n",(0,l.jsx)(n.p,{children:"Blobs support mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Disabled"}),": No support for blob transactions"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"InMemory"}),": Blob transactions stored only in memory"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Storage"}),": Blob transactions stored in db"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),": Blob transactions stored in db with support for restoring reorganized blob transactions to blob pool"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Disabled"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"InMemory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Storage"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StorageWithReorgs"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.GasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_GASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max transaction gas allowed. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.HashCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_HASHCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of cached hashes of already known transactions. Set automatically by the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"524288"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.InMemoryBlobPoolSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_INMEMORYBLOBPOOLSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in memory. Used only if persistent storage is disabled. Defaults to ",(0,l.jsx)(n.code,{children:"512"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingBlobTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGBLOBTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending blob transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MinBaseFeeThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MINBASEFEETHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimal percentage of the current base fee that must be surpassed by the max fee (",(0,l.jsx)(n.code,{children:"max_fee_per_gas"}),") for the transaction to be broadcasted. Defaults to ",(0,l.jsx)(n.code,{children:"70"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PeerNotificationThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PEERNOTIFICATIONTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The average percentage of transaction hashes from persistent broadcast sent to a peer together with hashes of the last added transactions. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PersistentBlobStorageSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PERSISTENTBLOBSTORAGESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in the database (increasing the number of transactions in the blob pool also results in higher memory usage). The default value uses max 13GB for 6 blobs where one blob is 2GB (16386 * 128KB). Defaults to ",(0,l.jsx)(n.code,{children:"16384"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.ReportMinutes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_REPORTMINUTES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The current transaction pool state reporting interval, in minutes. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.Size "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_SIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of transactions held in the mempool (the more transactions in the mempool, the more memory used). Defaults to ",(0,l.jsx)(n.code,{children:"2048"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"wallet",children:"Wallet"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Wallet.DevAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_WALLETCONFIG_DEVACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of autogenerated developer accounts to work with. Developer accounts have private keys from ",(0,l.jsx)(n.code,{children:"00...01"})," to ",(0,l.jsx)(n.code,{children:"00...n"}),". Defaults to ",(0,l.jsx)(n.code,{children:"10"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsx)(n.h2,{id:"environment-variables",children:"Environment variables"}),"\n",(0,l.jsx)(n.p,{children:"To configure Nethermind using environment variables, the following naming convention is used in all uppercase:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-text",children:"NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}\n"})}),"\n",(0,l.jsxs)(n.p,{children:["For instance, the environment variable equivalent of the command line ",(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile"})," option is ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"}),". For the list of configuration namespaces and their options, see ",(0,l.jsx)(n.a,{href:"#options-by-namespaces",children:"Options by namespaces"}),"."]}),"\n",(0,l.jsx)(n.h2,{id:"configuration-file",children:"Configuration file"}),"\n",(0,l.jsxs)(n.p,{children:["The configuration file is a JSON file with ",(0,l.jsx)(n.code,{children:".cfg"})," extension. The bundled configuration files are located in the ",(0,l.jsx)(n.code,{children:"configs"})," directory and named after the network they are used for. For instance, see the Mainnet configuration file ",(0,l.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:(0,l.jsx)(n.code,{children:"mainnet.cfg"})}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(t,{...e})}):t(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>r});var l=s(6540);const c={},i=l.createContext(c);function d(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:d(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[279],{984:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>a,frontMatter:()=>i,metadata:()=>r,toc:()=>h});var l=s(4848),c=s(8453);const i={title:"Configuration",sidebar_position:1,toc_max_heading_level:4},d=void 0,r={id:"fundamentals/configuration",title:"Configuration",description:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:",source:"@site/versioned_docs/version-1.27.0/fundamentals/configuration.md",sourceDirName:"fundamentals",slug:"/fundamentals/configuration",permalink:"/1.27.0/fundamentals/configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/configuration.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Configuration",sidebar_position:1,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"Migrating from Geth",permalink:"/1.27.0/get-started/migrating-from-geth"},next:{title:"Sync",permalink:"/1.27.0/fundamentals/sync"}},o={},h=[{value:"Command line options",id:"command-line-options",level:2},{value:"Basic options",id:"basic-options",level:3},{value:"Options by namespaces",id:"options-by-namespaces",level:3},{value:"Aura",id:"aura",level:4},{value:"Blocks",id:"blocks",level:4},{value:"Bloom",id:"bloom",level:4},{value:"EthStats",id:"ethstats",level:4},{value:"HealthChecks",id:"healthchecks",level:4},{value:"Hive",id:"hive",level:4},{value:"Init",id:"init",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"KeyStore",id:"keystore",level:4},{value:"Merge",id:"merge",level:4},{value:"Metrics",id:"metrics",level:4},{value:"Mining",id:"mining",level:4},{value:"Network",id:"network",level:4},{value:"Optimism",id:"optimism",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Receipt",id:"receipt",level:4},{value:"Seq",id:"seq",level:4},{value:"Snapshot",id:"snapshot",level:4},{value:"Sync",id:"sync",level:4},{value:"TraceStore",id:"tracestore",level:4},{value:"TxPool",id:"txpool",level:4},{value:"Wallet",id:"wallet",level:4},{value:"Environment variables",id:"environment-variables",level:2},{value:"Configuration file",id:"configuration-file",level:2}];function t(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,c.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.p,{children:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"#command-line-options",children:"Command line options"})," (aka arguments or flags)"]}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#environment-variables",children:"Environment variables"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#configuration-file",children:"Configuration file"})}),"\n"]}),"\n",(0,l.jsx)(n.admonition,{type:"note",children:(0,l.jsx)(n.p,{children:"Given the above priority list, an option defined in a more priority way overrides the same option defined elsewhere if any."})}),"\n",(0,l.jsx)(n.h2,{id:"command-line-options",children:"Command line options"}),"\n",(0,l.jsx)(n.p,{children:"The full list of command line options can be displayed by running:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,l.jsx)(n.p,{children:"Below is the list of the basic options followed by an exhaustive list of options by namespace."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsx)(n.p,{children:"The command line options are case-sensitive and can be defined only once unless stated otherwise."})}),"\n",(0,l.jsx)(n.h3,{id:"basic-options",children:"Basic options"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-d, --baseDbPath "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind database directory. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-c, --config "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the ",(0,l.jsx)(n.a,{href:"#configuration-file",children:"configuration file"})," or the name (without extension) of any of the configuration files in the configuration directory. Defaults to ",(0,l.jsx)(n.code,{children:"mainnet"}),"."]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{children:"Available configurations"}),(0,l.jsxs)("p",{children:[(0,l.jsxs)(n.p,{children:["Nethermind provides the following pre-built configurations named as the networks they are for. Their respective versions for archive nodes are suffixed ",(0,l.jsx)(n.code,{children:"_archive"}),"."]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-mainnet"})," ",(0,l.jsx)(n.code,{children:"base-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-sepolia"})," ",(0,l.jsx)(n.code,{children:"base-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chiado"})," ",(0,l.jsx)(n.code,{children:"chiado_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"energyweb"})," ",(0,l.jsx)(n.code,{children:"energyweb_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gnosis"})," ",(0,l.jsx)(n.code,{children:"gnosis_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"holesky"})," ",(0,l.jsx)(n.code,{children:"holesky_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mainnet"})," ",(0,l.jsx)(n.code,{children:"mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-mainnet"})," ",(0,l.jsx)(n.code,{children:"op-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-sepolia"})," ",(0,l.jsx)(n.code,{children:"op-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sepolia"})," ",(0,l.jsx)(n.code,{children:"sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"volta"})," ",(0,l.jsx)(n.code,{children:"volta_archive"})]}),"\n"]})]})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-cd, --configsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the configuration files directory. Defaults to ",(0,l.jsx)(n.code,{children:"configs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-dd, --datadir "})})}),"\n",(0,l.jsx)(n.p,{children:"The path to the Nethermind data directory. Defaults to Nethermind's current directory."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsxs)(n.p,{children:["The absolute paths set by ",(0,l.jsx)(n.code,{children:"Init.BaseDbPath"}),", ",(0,l.jsx)(n.code,{children:"Init.LogDirectory"}),", or ",(0,l.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})," options in a configuration file are not overridden by ",(0,l.jsx)(n.code,{children:"--datadir"}),"."]})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-?, -h, --help"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the full list of available command line options."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-l, --log "})})}),"\n",(0,l.jsxs)(n.p,{children:["Log level (severity). Allowed values: ",(0,l.jsx)(n.code,{children:"TRACE"})," ",(0,l.jsx)(n.code,{children:"DEBUG"})," ",(0,l.jsx)(n.code,{children:"INFO"})," ",(0,l.jsx)(n.code,{children:"WARN"})," ",(0,l.jsx)(n.code,{children:"ERROR"})," ",(0,l.jsx)(n.code,{children:"OFF"}),". Defaults to ",(0,l.jsx)(n.code,{children:"INFO"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-lcs, --loggerConfigSource "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the NLog configuration file. Defaults to ",(0,l.jsx)(n.code,{children:"NLog.config"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-pd, --pluginsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind plugins directory. Defaults to ",(0,l.jsx)(n.code,{children:"plugins"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-v, --version"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the Nethermind version info."}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"options-by-namespaces",children:"Options by namespaces"}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"aura",children:"Aura"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.AllowAuRaPrivateChains "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_ALLOWAURAPRIVATECHAINS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to allow private Aura-based chains only. Do not use with existing Aura-based chains. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.ForceSealing "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_FORCESEALING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal empty blocks if mining. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_MINIMUM2MLNGASPERBLOCKWHENUSINGBLOCKGASLIMITCONTRACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use 2M gas if the contract returns less than that when using ",(0,l.jsx)(n.code,{children:"BlockGasLimitContractTransitions"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityConfigFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONFIGFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the transaction priority rules file to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityContractAddress "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONTRACTADDRESS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The address of the transaction priority contract to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"blocks",children:"Blocks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.ExtraData "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_EXTRADATA"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block header extra data up to 32 bytes in length. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.MinGasPrice "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_MINGASPRICE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum gas premium (or the gas price before the London hard fork) for transactions accepted by the block producer. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.PreWarmStateOnBlockProcessing "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_PREWARMSTATEONBLOCKPROCESSING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Try to pre-warm the state when processing blocks. Can lead to 2x speedup in main loop block processing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"True"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.RandomizedBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_RANDOMIZEDBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to change the difficulty of the block randomly within the constraints. Used in NethDev only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.SecondsPerSlot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_SECONDSPERSLOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block time slot, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"12"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.TargetBlockGasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_TARGETBLOCKGASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block gas limit that the block producer should try to reach in the fastest possible way based on the protocol rules. If not specified, then the block producer should follow others. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"bloom",children:"Bloom"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Index "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Bloom index. The Bloom index speeds up the RPC log searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.IndexLevelBucketSizes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEXLEVELBUCKETSIZES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of multipliers for index levels. Can be tweaked per chain to boost performance. Defaults to ",(0,l.jsx)(n.code,{children:"[4, 8, 8]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Migration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the previously downloaded blocks to the Bloom index. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.MigrationStatistics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATIONSTATISTICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether the migration statistics should be calculated and output. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"ethstats",children:"EthStats"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Contact "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_CONTACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node owner contact details displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"hello@nethermind.io"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use Ethstats publishing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Name "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_NAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node name displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Secret "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SECRET"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats secret. Defaults to ",(0,l.jsx)(n.code,{children:"secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.SendInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SENDINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The stats update interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"15"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Server "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SERVER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats server URL. Defaults to ",(0,l.jsx)(n.code,{children:"ws://localhost:3000/api"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"healthchecks",children:"HealthChecks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageCheckAwaitOnStartup "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGECHECKAWAITONSTARTUP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to check for low disk space on startup and suspend until enough space is available. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACESHUTDOWNTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which Nethermind shuts down. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACEWARNINGTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which a warning is displayed. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalClRequestTime "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALCLREQUESTTIME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max request interval, in seconds, in which the consensus client is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProcessedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPROCESSEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block processing is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProducedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPRODUCEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block production is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.PollingInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_POLLINGINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The health check updates polling interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Slug "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_SLUG"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL slug the health checks service is exposed at. Defaults to ",(0,l.jsx)(n.code,{children:"/health"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.UIEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_UIENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health checks UI. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable web hooks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksPayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on failure.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#FFCC00",\n "pretext": "Health Check Status :warning:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "Description",\n "value": "[[DESCRIPTIONS]]",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksRestorePayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSRESTOREPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on recovery.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#36a64f",\n "pretext": "Health Check Status :+1:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "description",\n "value": "The HealthCheck `[[LIVENESS]]` is recovered. Everything is up and running.",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksUri "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSURI"})]}),"\n",(0,l.jsxs)(n.p,{children:["The web hook URL. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"hive",children:"Hive"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.BlocksDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_BLOCKSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory with additional blocks. Defaults to ",(0,l.jsx)(n.code,{children:"/blocks"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.ChainFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_CHAINFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the test chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"/chain.rlp"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable Hive for debugging. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.GenesisFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_GENESISFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the genesis block file. Defaults to ",(0,l.jsx)(n.code,{children:"/genesis.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.KeysDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_KEYSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"/keys"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"init",children:"Init"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.AutoDump "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_AUTODUMP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Auto-dump on bad blocks for diagnostics. ",(0,l.jsx)(n.code,{children:"Default"})," combines ",(0,l.jsx)(n.code,{children:"Receipts"})," and ",(0,l.jsx)(n.code,{children:"Rlp"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Receipts"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Geth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rlp"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RlpLog"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Default"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BadBlocksStored "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BADBLOCKSSTORED"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum number of bad blocks observed on the network that will be stored on disk. Defaults to ",(0,l.jsx)(n.code,{children:"100"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BaseDbPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BASEDBPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The base path for all Nethermind databases. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_CHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/foundation.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiagnosticMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DIAGNOSTICMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"MemDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RpcDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ReadOnlyDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyRewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifySupply"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyTrie"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiscoveryEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DISCOVERYENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the node discovery. If disabled, Nethermind doesn't look for other nodes beyond the bootnodes specified. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.EnableUnsecuredDevWallet "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ENABLEUNSECUREDDEVWALLET"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the in-app wallet/keystore. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.GenesisHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_GENESISHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the genesis block. If not specified, the genesis block validity is not checked which is useful in the case of ad hoc test/private networks. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.HiveChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_HIVECHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file for Hive tests. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/test.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.IsMining "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ISMINING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal/mine new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KeepDevWalletInMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KEEPDEVWALLETINMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to create session-only accounts and delete them on shutdown. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KzgSetupPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KZGSETUPPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to KZG trusted setup file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind logs directory. Defaults to ",(0,l.jsx)(n.code,{children:"logs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the log file. Defaults to ",(0,l.jsx)(n.code,{children:"log.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogRules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGRULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The logs format as ",(0,l.jsx)(n.code,{children:"LogPath:LogLevel;*"})," Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.MemoryHint "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_MEMORYHINT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hint on the max memory limit, in bytes, to configure the database and networking memory allocations. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.PeerManagerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PEERMANAGERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to newly discovered peers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ProcessingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PROCESSINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download/process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.RpcDbUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_RPCDBURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the remote node used as a database source when ",(0,l.jsx)(n.code,{children:"DiagnosticMode"})," is set to ",(0,l.jsx)(n.code,{children:"RpcDb"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.StaticNodesPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_STATICNODESPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the static nodes file. Defaults to ",(0,l.jsx)(n.code,{children:"Data/static-nodes.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.WebSocketsEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_WEBSOCKETSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable WebSocket service for the default JSON-RPC port on startup. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ADDITIONALRPCURLS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list. For instance, ",(0,l.jsx)(n.code,{children:"[http://localhost:8546|http;ws|eth;web3]"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.BufferResponses "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_BUFFERRESPONSES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to buffer responses before sending them. This allows using of ",(0,l.jsx)(n.code,{children:"Content-Length"})," instead of ",(0,l.jsx)(n.code,{children:"Transfer-Encoding: chunked"}),". Note that it may degrade performance on large responses. The max buffered response length is 2GB. Chunked responses can be larger. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.CallsFilterFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_CALLSFILTERFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to a file with the list of new-line-separated JSON-RPC calls. If specified, only the calls from that file are allowed. Defaults to ",(0,l.jsx)(n.code,{children:"Data/jsonrpc.filter"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the JSON-RPC service. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of JSON-RPC namespaces to enable. For instance, ",(0,l.jsx)(n.code,{children:"[debug,eth]"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Built-in namespaces:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"admin"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"client"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"debug"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"engine"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"evm"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"health"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"net"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"personal"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"proof"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"rpc"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"subscribe"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"txpool"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"web3"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"[Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health,Rpc]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineEnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list for Engine API. Defaults to ",(0,l.jsx)(n.code,{children:"[Net,Eth,Subscribe,Web3]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnginePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API port. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EstimateErrorMargin "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ESTIMATEERRORMARGIN"})]}),"\n",(0,l.jsxs)(n.p,{children:["The error margin used in eth_estimateGas expressed in basis points. Defaults to ",(0,l.jsx)(n.code,{children:"150"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EthModuleConcurrentInstances "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ETHMODULECONCURRENTINSTANCES"})]}),"\n",(0,l.jsx)(n.p,{children:"The number of concurrent instances for non-sharable calls:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"This limits the load on the CPU and I/O to reasonable levels. If the limit is exceeded, HTTP 503 is returned along with the JSON-RPC error. Defaults to the number of logical processors."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.GasCap "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_GASCAP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The gas limit for ",(0,l.jsx)(n.code,{children:"eth_call"})," and ",(0,l.jsx)(n.code,{children:"eth_estimateGas"}),". Defaults to ",(0,l.jsx)(n.code,{children:"100000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Host "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_HOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_IPCUNIXDOMAINSOCKETPATH"})]}),"\n",(0,l.jsx)(n.p,{children:"The path to connect a UNIX domain socket over."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the JWT secret file required for the Engine API authentication. Defaults to ",(0,l.jsx)(n.code,{children:"keystore/jwt-secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchResponseBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHRESPONSEBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max batch size limit for batched JSON-RPC calls. Defaults to ",(0,l.jsx)(n.code,{children:"33554432"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of JSON-RPC requests in a batch. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxLoggedRequestParametersCharacters "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGGEDREQUESTPARAMETERSCHARACTERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of characters of a JSON-RPC request parameter printing to the log. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxLogsPerResponse "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGSPERRESPONSE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of logs per response. For method ",(0,l.jsx)(n.code,{children:"eth_getLogs"}),". If 0 then no limit. Defaults to ",(0,l.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxRequestBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXREQUESTBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max length of HTTP request body, in bytes. Defaults to ",(0,l.jsx)(n.code,{children:"30000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MethodsLoggingFiltering "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_METHODSLOGGINGFILTERING"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of the method names not to log. Defaults to ",(0,l.jsx)(n.code,{children:"[engine_newPayloadV1,engine_newPayloadV2,engine_newPayloadV3,engine_forkchoiceUpdatedV1,engine_forkchoiceUpdatedV2]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Port "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_PORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service HTTP port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.ReportIntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REPORTINTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The interval, in seconds, between the JSON-RPC stats report log. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RequestQueueLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REQUESTQUEUELIMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of concurrent requests in the queue for:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"500"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderBaseFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERBASEFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the base file for diagnostic recording. Defaults to ",(0,l.jsx)(n.code,{children:"logs/rpc.{counter}.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderState "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERSTATE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic recording mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Request"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Response"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Timeout "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_TIMEOUT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The request timeout, in milliseconds. Defaults to ",(0,l.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_WEBSOCKETSPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service WebSockets port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"keystore",children:"KeyStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.BlockAuthorAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_BLOCKAUTHORACCOUNT"})]}),"\n",(0,l.jsx)(n.p,{children:"An account to use as the block author (coinbase)."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Cipher "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_CIPHER"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"aes-128-ctr"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEACCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["An account to use for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeKeyFile"})," option is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeKeyFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEKEYFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the key file to use by for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeAccount"})," is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.IVSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_IVSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Kdf "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDF"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"scrypt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsDklen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSDKLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsN "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"262144"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSP"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsR "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSR"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsSaltLen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSSALTLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"keystore"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreEncoding "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREENCODING"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"UTF-8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.PasswordFiles "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDFILES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of password files paths used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Passwords "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of passwords used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterBlockSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERBLOCKSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterKeySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERKEYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.TestNodeKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_TESTNODEKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"A plaintext private key to use for testing purposes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.UnlockAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_UNLOCKACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of accounts to unlock on startup using passwords either in ",(0,l.jsx)(n.code,{children:"PasswordFiles"})," and ",(0,l.jsx)(n.code,{children:"Passwords"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"merge",children:"Merge"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.BuilderRelayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_BUILDERRELAYURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of a builder relay. If specified, blocks are sent to the relay. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CollectionsPerDecommit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COLLECTIONSPERDECOMMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"Request the garbage collector (GC) to release the process memory."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to disable"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to release every time"]}),"\n",(0,l.jsx)(n.li,{children:"A positive number to release memory after that many Engine API calls"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"25"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CompactMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COMPACTMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory compaction mode. When set to ",(0,l.jsx)(n.code,{children:"Full"}),", compacts the large object heap (LOH) if ",(0,l.jsx)(n.code,{children:"SweepMemory"})," is set to ",(0,l.jsx)(n.code,{children:"Gen2"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"No"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Yes"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Yes"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Merge hard fork. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.FinalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_FINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the last PoW block. Must be greater than or equal to the terminal total difficulty (TTD). Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.PrioritizeBlockLatency "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_PRIORITIZEBLOCKLATENCY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to reduce block latency by disabling garbage collection during Engine API calls. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.SweepMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_SWEEPMEMORY"})]}),"\n",(0,l.jsx)(n.p,{children:"The garbage collection (GC) mode between Engine API calls."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"NoGC"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen0"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen1"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen2"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Gen1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal PoW block hash used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKNUMBER"})]}),"\n",(0,l.jsx)(n.p,{children:"The terminal PoW block number used for the transition."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal total difficulty (TTD) used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"metrics",children:"Metrics"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.CountersEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_COUNTERSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish metrics using .NET diagnostics that can be collected with dotnet-counters. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish various metrics to Prometheus Pushgateway at a given interval. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.EnableDbSizeMetrics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLEDBSIZEMETRICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish database size metrics. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposeHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The IP address to expose Prometheus metrics at. The value of ",(0,l.jsx)(n.code,{children:"+"})," means listening on all available hostnames. Setting this to ",(0,l.jsx)(n.code,{children:"localhost"})," prevents remote access. Defaults to ",(0,l.jsx)(n.code,{children:"+"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The port to expose Prometheus metrics at. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.IntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_INTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The frequency of pushing metrics to Prometheus, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.NodeName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_NODENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name to display on the Grafana dashboard. Defaults to ",(0,l.jsx)(n.code,{children:'"Nethermind"'}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.PushGatewayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_PUSHGATEWAYURL"})]}),"\n",(0,l.jsx)(n.p,{children:"The Prometheus Pushgateway instance URL."}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"mining",children:"Mining"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Mining.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to produce blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Mining.Signer "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_SIGNER"})]}),"\n",(0,l.jsxs)(n.p,{children:["Url for an external signer like clef: ",(0,l.jsx)(n.a,{href:"https://github.com/ethereum/go-ethereum/blob/master/cmd/clef/tutorial.md",children:"https://github.com/ethereum/go-ethereum/blob/master/cmd/clef/tutorial.md"})," Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"network",children:"Network"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.Bootnodes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_BOOTNODES"})]}),"\n",(0,l.jsx)(n.p,{children:"A comma-separated enode list to be used as boot nodes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiagTracerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DIAGTRACERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable a verbose diagnostic tracing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryDns "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYDNS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Use tree is available through a DNS name. For the default of ",(0,l.jsx)(n.code,{children:".ethdisco.net"}),", leave unspecified. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The UDP port number for incoming discovery connections. It's recommended to keep it the same as the TCP port (",(0,l.jsx)(n.code,{children:"P2PPort"}),") because other values have not been tested yet. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.EnableUPnP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ENABLEUPNP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable automatic port forwarding via UPnP. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.ExternalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_EXTERNALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The external IP. Use only when the external IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.LocalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_LOCALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The local IP. Use only when the local IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxActivePeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max allowed number of connected peers. Defaults to ",(0,l.jsx)(n.code,{children:"50"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxNettyArenaCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXNETTYARENACOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum DotNetty arena count. Increasing this on a high-core CPU without increasing the memory budget may reduce chunk size so much that it causes a huge memory allocation. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.NettyArenaOrder "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_NETTYARENAORDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The size of the DotNetty arena order. ",(0,l.jsx)(n.code,{children:"-1"})," to depend on the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.OnlyStaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ONLYSTATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use static peers only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.P2PPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_P2PPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The TCP port for incoming P2P connections. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.PriorityPeersMaxCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_PRIORITYPEERSMAXCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of priority peers. Can be overridden by a plugin. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.StaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_STATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["A list of peers to keep connection for. Static peers are affected by ",(0,l.jsx)(n.code,{children:"MaxActivePeers"}),". Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"optimism",children:"Optimism"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Optimism.SequencerUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_OPTIMISMCONFIG_SEQUENCERURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["Sequencer address Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"pruning",children:"Pruning"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.AvailableSpaceCheckEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_AVAILABLESPACECHECKENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enables available disk space check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.CacheMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_CACHEMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The in-memory cache size, in MB. The bigger the cache size, the bigger the disk space savings. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningCompletionBehavior "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGCOMPLETIONBEHAVIOR"})]}),"\n",(0,l.jsx)(n.p,{children:"The behavior after pruning completion:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": Do nothing."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Shut Nethermind down if pruning has succeeded but leave it running if failed."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"AlwaysShutdown"}),": Shut Nethermind down when pruning completes, regardless of its status."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AlwaysShutdown"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningDisableLowPriorityWrites "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGDISABLELOWPRIORITYWRITES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable low-priority for pruning writes. Full pruning uses low-priority write operations to prevent blocking block processing. If block processing is not high-priority, set this option to ",(0,l.jsx)(n.code,{children:"true"})," for faster pruning. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMaxDegreeOfParallelism "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMAXDEGREEOFPARALLELISM"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of parallel tasks that can be used by full pruning:"}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to use the number of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to use 25% of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"1"})," to run on single thread"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"The recommended value depends on the type of the node:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["If the node needs to be responsive (serves for RPC or validator), then the recommended value is ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have many other responsibilities but needs to be able to follow the chain reliably without any delays and produce live logs, the ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"1"})," is recommended."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have to be responsive, has very fast I/O (like NVMe) and the shortest pruning time is to be achieved, then ",(0,l.jsx)(n.code,{children:"-1"})," is recommended. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMemoryBudgetMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMEMORYBUDGETMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory budget, in MB, used for the trie visit. Increasing this value significantly reduces the IOPS requirement at the expense of memory usage. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMinimumDelayHours "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMINIMUMDELAYHOURS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum delay, in hours, between full pruning operations not to exhaust disk writes. Defaults to ",(0,l.jsx)(n.code,{children:"240"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningThresholdMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTHRESHOLDMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The threshold, in MB, to trigger full pruning. Depends on ",(0,l.jsx)(n.code,{children:"Mode"})," and ",(0,l.jsx)(n.code,{children:"FullPruningTrigger"}),". Defaults to ",(0,l.jsx)(n.code,{children:"256000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningTrigger "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTRIGGER"})]}),"\n",(0,l.jsx)(n.p,{children:"The full pruning trigger:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Manual"}),": Triggered manually."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StateDbSize"}),": Trigger when the state DB size is above the threshold."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"VolumeFreeSpace"}),": Trigger when the free disk space where the state DB is stored is below the threshold."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Manual"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDbSize"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VolumeFreeSpace"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Manual"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.Mode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_MODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The pruning mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": No pruning (full archive)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Memory"}),": In-memory pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Full"}),": Full pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Hybrid"}),": Combined in-memory and full pruning"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Memory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Hybrid"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Hybrid"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.PersistenceInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PERSISTENCEINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block persistence frequency. If set to ",(0,l.jsx)(n.code,{children:"N"}),", it caches after each ",(0,l.jsx)(n.code,{children:"Nth"})," block even if not required by cache memory usage. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.PruningBoundary "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PRUNINGBOUNDARY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Past N state before state gets pruned Used to determine how old of a state to keep from the head. Defaults to ",(0,l.jsx)(n.code,{children:"64"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.TrackedPastKeyCountMemoryRatio "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_TRACKEDPASTKEYCOUNTMEMORYRATIO"})]}),"\n",(0,l.jsxs)(n.p,{children:["[TECHNICAL] Ratio of memory out of CacheMb to allocate for LRU used to track past keys for live pruning. Defaults to ",(0,l.jsx)(n.code,{children:"0.1"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"receipt",children:"Receipt"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactReceiptStore "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTRECEIPTSTORE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactTxIndex "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTTXINDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts transaction index database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.ReceiptsMigration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_RECEIPTSMIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the receipts database to the new schema. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.StoreReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_STORERECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to store receipts after a new block is processed. This setting is independent from downloading receipts in fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.TxLookupLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_TXLOOKUPLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of recent blocks to maintain transaction index for. ",(0,l.jsx)(n.code,{children:"0"})," to never remove indices, ",(0,l.jsx)(n.code,{children:"-1"})," to never index. Defaults to ",(0,l.jsx)(n.code,{children:"2350000"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"seq",children:"Seq"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ApiKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_APIKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"The Seq API key."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.MinLevel "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_MINLEVEL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The min log level to sent to Seq. Defaults to ",(0,l.jsx)(n.code,{children:"Off"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ServerUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_SERVERURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Seq instance URL. Defaults to ",(0,l.jsx)(n.code,{children:"http://localhost:5341"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"snapshot",children:"Snapshot"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Checksum "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_CHECKSUM"})]}),"\n",(0,l.jsxs)(n.p,{children:["The SHA-256 checksum of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.DownloadUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_DOWNLOADURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Snapshot plugin. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory to store the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot.zip"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"sync",children:"Sync"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientBodiesBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The earliest body downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, AncientBodiesBarrier } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientReceiptsBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The earliest receipt downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as folows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, max{ AncientBodiesBarrier, AncientReceiptsBarrier } } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.BlocksDbTuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_BLOCKSDBTUNEDBMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"Configure the blocks database for write optimizations during sync."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"EnableBlobFiles"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the block bodies in the Fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadHeadersInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADHEADERSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the old block headers in the Fast sync mode. If ",(0,l.jsx)(n.code,{children:"false"}),", Nethermind downloads only recent blocks headers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadReceiptsInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download receipts in the Fast sync mode. This slows down the process by a few hours but allows to interact with dApps that perform extensive historical logs searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSynced "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to shut down Nethermind once sync is finished. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSyncedWaitTimeSec "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCEDWAITTIMESEC"})]}),"\n",(0,l.jsxs)(n.p,{children:["The time, in seconds, to wait before shutting down Nethermind once sync is finished. Defaults to ",(0,l.jsx)(n.code,{children:"60"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Fast sync mode (the eth/63 synchronization algorithm). Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSyncCatchUpHeightDelta "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNCCATCHUPHEIGHTDELTA"})]}),"\n",(0,l.jsxs)(n.p,{children:["In Fast sync mode, the min height threshold limit up to which the Full sync, if already on, stays on when the chain is behind the network head. If the limit is exceeded, it switches back to Fast sync. For regular usage scenarios, setting this value lower than 32 is not recommended as this can cause issues with chain reorgs. Note that the last 2 blocks are always processed in Full sync, so setting it lower than 2 has no effect. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXRECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable receipts validation that checks for receipts that might be missing because of a bug. If needed, receipts are downloaded from the network. If ",(0,l.jsx)(n.code,{children:"true"}),", the pivot number must be same one used originally as it's used as a cut-off point. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to recalculate the total difficulty from ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyStartingBlock"})," to ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyLastBlock"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyLastBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYLASTBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The last block to recalculate the total difficulty for. If not specified, the best known block is used.\nDefaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyStartingBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYSTARTINGBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The first block to recalculate the total difficulty for. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxAttemptsToUpdatePivot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXATTEMPTSTOUPDATEPIVOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of attempts to update the pivot block based on the FCU message from the consensus client. Defaults to ",(0,l.jsx)(n.code,{children:"2147483647"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxProcessingThreads "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXPROCESSINGTHREADS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of threads used for syncing. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NetworkingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NETWORKINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to peers and sync. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NonValidatorNode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NONVALIDATORNODE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to operate as a non-validator. If ",(0,l.jsx)(n.code,{children:"true"}),", the ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," and ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," can be set to ",(0,l.jsx)(n.code,{children:"false"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTNUMBER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Snap sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSyncAccountRangePartitionCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNCACCOUNTRANGEPARTITIONCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of account range partitions to create. Increases the Snap sync request concurrency. Allowed values are between between 1 and 256. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.StrictMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_STRICTMODE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable some optimizations and do a more extensive sync. Useful when sync state is corrupted. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SynchronizationEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SYNCHRONIZATIONENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download and process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.TuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_TUNEDBMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"Configure the database for write optimizations during sync. Significantly reduces the total number of writes and sync time if you are not network limited."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"HeavyWrite"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.UseGethLimitsInFastBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to make smaller requests, in Fast Blocks mode, to avoid Geth from disconnecting. On the Geth-heavy networks (e.g., Mainnet), it's a desired behavior while on Nethermind- or OpenEthereum-heavy networks (Aura), it slows down the sync by a factor of ~4. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"tracestore",children:"TraceStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.BlocksToKeep "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_BLOCKSTOKEEP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of blocks to store, counting from the head. If ",(0,l.jsx)(n.code,{children:"0"}),", all traces of the processed blocks are stored. Defaults to ",(0,l.jsx)(n.code,{children:"10000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.DeserializationParallelization "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_DESERIALIZATIONPARALLELIZATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max parallelization when deserialization requests the ",(0,l.jsx)(n.code,{children:"trace_filter"})," method. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. If you experience a resource shortage, set to a low number. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the TraceStore plugin. If enabled, traces come from the database whenever possible. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.TraceTypes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_TRACETYPES"})]}),"\n",(0,l.jsx)(n.p,{children:"The type of traces to store."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VmTrace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDiff"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Trace, Rewards"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"txpool",children:"TxPool"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions cached in memory. The default value uses max 200MB for 6 blobs where one blob is 33MB (256 * 128KB) Defaults to ",(0,l.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobsSupport "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBSSUPPORT"})]}),"\n",(0,l.jsx)(n.p,{children:"Blobs support mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Disabled"}),": No support for blob transactions"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"InMemory"}),": Blob transactions stored only in memory"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Storage"}),": Blob transactions stored in db"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),": Blob transactions stored in db with support for restoring reorganized blob transactions to blob pool"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Disabled"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"InMemory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Storage"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StorageWithReorgs"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.GasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_GASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max transaction gas allowed. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.HashCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_HASHCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of cached hashes of already known transactions. Set automatically by the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"524288"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.InMemoryBlobPoolSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_INMEMORYBLOBPOOLSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in memory. Used only if persistent storage is disabled. Defaults to ",(0,l.jsx)(n.code,{children:"512"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingBlobTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGBLOBTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending blob transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MinBaseFeeThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MINBASEFEETHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimal percentage of the current base fee that must be surpassed by the max fee (",(0,l.jsx)(n.code,{children:"max_fee_per_gas"}),") for the transaction to be broadcasted. Defaults to ",(0,l.jsx)(n.code,{children:"70"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PeerNotificationThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PEERNOTIFICATIONTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The average percentage of transaction hashes from persistent broadcast sent to a peer together with hashes of the last added transactions. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PersistentBlobStorageSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PERSISTENTBLOBSTORAGESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in the database (increasing the number of transactions in the blob pool also results in higher memory usage). The default value uses max 13GB for 6 blobs where one blob is 2GB (16386 * 128KB). Defaults to ",(0,l.jsx)(n.code,{children:"16384"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.ReportMinutes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_REPORTMINUTES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The current transaction pool state reporting interval, in minutes. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.Size "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_SIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of transactions held in the mempool (the more transactions in the mempool, the more memory used). Defaults to ",(0,l.jsx)(n.code,{children:"2048"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"wallet",children:"Wallet"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Wallet.DevAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_WALLETCONFIG_DEVACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of autogenerated developer accounts to work with. Developer accounts have private keys from ",(0,l.jsx)(n.code,{children:"00...01"})," to ",(0,l.jsx)(n.code,{children:"00...n"}),". Defaults to ",(0,l.jsx)(n.code,{children:"10"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsx)(n.h2,{id:"environment-variables",children:"Environment variables"}),"\n",(0,l.jsx)(n.p,{children:"To configure Nethermind using environment variables, the following naming convention is used in all uppercase:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-text",children:"NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}\n"})}),"\n",(0,l.jsxs)(n.p,{children:["For instance, the environment variable equivalent of the command line ",(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile"})," option is ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"}),". For the list of configuration namespaces and their options, see ",(0,l.jsx)(n.a,{href:"#options-by-namespaces",children:"Options by namespaces"}),"."]}),"\n",(0,l.jsx)(n.h2,{id:"configuration-file",children:"Configuration file"}),"\n",(0,l.jsxs)(n.p,{children:["The configuration file is a JSON file with ",(0,l.jsx)(n.code,{children:".cfg"})," extension. The bundled configuration files are located in the ",(0,l.jsx)(n.code,{children:"configs"})," directory and named after the network they are used for. For instance, see the Mainnet configuration file ",(0,l.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:(0,l.jsx)(n.code,{children:"mainnet.cfg"})}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(t,{...e})}):t(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>r});var l=s(6540);const c={},i=l.createContext(c);function d(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:d(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4ed04c2d.9add8a9a.js b/assets/js/4ed04c2d.3aa92b26.js similarity index 99% rename from assets/js/4ed04c2d.9add8a9a.js rename to assets/js/4ed04c2d.3aa92b26.js index 5ff04313c..254168f3b 100644 --- a/assets/js/4ed04c2d.9add8a9a.js +++ b/assets/js/4ed04c2d.3aa92b26.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1355],{1069:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var r=s(4848),t=s(8453),i=s(1470),l=s(9365);const d={title:"Database",sidebar_position:5},c=void 0,a={id:"fundamentals/database",title:"Database",description:"Nethermind uses the RocksDB database to store the state. By default, the database is located in the",source:"@site/versioned_docs/version-1.27.0/fundamentals/database.md",sourceDirName:"fundamentals",slug:"/fundamentals/database",permalink:"/1.27.0/fundamentals/database",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/database.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:5,frontMatter:{title:"Database",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Logs",permalink:"/1.27.0/fundamentals/logs"},next:{title:"Pruning",permalink:"/1.27.0/fundamentals/pruning"}},o={},h=[{value:"Database directory structure",id:"database-directory-structure",level:2},{value:"Database size",id:"database-size",level:2},{value:"Reducing database size",id:"reducing-database-size",level:2}];function u(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Nethermind uses the ",(0,r.jsx)(n.a,{href:"https://rocksdb.org",children:"RocksDB"})," database to store the state. By default, the database is located in the\nsame directory where the Nethermind executable is. You can change the database location using the ",(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#basic-options",children:(0,r.jsx)(n.code,{children:"-d, --baseDbPath"})})," command line option."]}),"\n",(0,r.jsx)(n.h2,{id:"database-directory-structure",children:"Database directory structure"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Directory"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blockInfos"}),(0,r.jsx)(n.td,{children:"Information about blocks at each level of the block tree (canonical chain and branches)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blocks"}),(0,r.jsx)(n.td,{children:"Block bodies (block transactions and uncles)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"bloom"}),(0,r.jsx)(n.td,{children:"Bloom indices for fast log searches"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"canonicalHashTrie"}),(0,r.jsx)(n.td,{children:"LES protocol related data"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"code"}),(0,r.jsx)(n.td,{children:"Contract bytecodes"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"discoveryNodes"}),(0,r.jsx)(n.td,{children:"Peers discovered via discovery protocol - used for quick peering after restarts (you can copy this DB between nodes to speed up peering)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"headers"}),(0,r.jsx)(n.td,{children:"Block headers only"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"pendingTx"}),(0,r.jsx)(n.td,{children:"The second level cache of pending transactions/mempool (the first level is in memory). Wiped out on each restart."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"peers"}),(0,r.jsx)(n.td,{children:"Additional sync peers information (like peer reputation) - you can copy this DB between nodes to speed up peering on fresh sync"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"receipts"}),(0,r.jsx)(n.td,{children:"Transaction receipts"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"state"}),(0,r.jsx)(n.td,{children:"Blockchain state including accounts and contract storage (Patricia trie nodes)"})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:["You can use ",(0,r.jsx)(n.code,{children:"rsync"})," between your nodes to clone the database (One of our users copied the entire 4.5TB archive state this\nway while the node was running and only stopped the node for the very last stage of ",(0,r.jsx)(n.code,{children:"rsync"})," ). You can also copy\nthe database between Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h2,{id:"database-size",children:"Database size"}),"\n",(0,r.jsx)(n.p,{children:"Below is a comprehensive list of the supported chains, along with a detailed breakdown of their respective database directories. For reference, the database sizes listed have been determined using the standard configurations provided."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(l.A,{value:"mainnet",label:"Mainnet",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 156 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 204 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 584 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 6.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 8.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 4.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.4 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 965 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"sepolia",label:"Sepolia",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 39 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 37 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 251 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 2.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.2 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 6.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 496 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 337 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"holesky",label:"Holesky",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 17 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 12 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 50 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 648 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 828 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 434 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 760 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 81 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"gnosis",label:"Gnosis",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 64 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 215 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 196 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 10 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 658 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 75 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 497 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"chiado",label:"Chiado",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 2.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 1.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 8.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 2.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.2 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 60 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 825 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 20 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"energyweb",label:"Energyweb",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 27 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 4.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 24 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 6.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 14 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 74 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"volta",label:"Volta",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 34 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 8.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 32 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 8.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 6.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 94 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 92 GB"})}),"\n"]})})]}),"\n",(0,r.jsx)(n.h2,{id:"reducing-database-size",children:"Reducing database size"}),"\n",(0,r.jsx)(n.p,{children:"The Nethermind database can experience substantial growth over time, starting from an initial size of approximately 650\nGB. As a result, many node setups are configured to run on 1 TB disks. However, even with settings\ndesigned to slow the growth rate, these disks may eventually run out of free space."}),"\n",(0,r.jsx)(n.p,{children:"The current options to reduce the database size are as follows:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/sync#resync-a-node-from-scratch",children:"Resyncing database from scratch"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/pruning",children:"Pruning"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The table below presents a short comparison of these methods including possible fine-tuning of each method. Data was\nfetched from a node running on a machine with the below specifications:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Node.js"}),": v1.18.0"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Consensus client"}),": Lighthouse"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"CPU"}),": AMD EPYC 7713 (16 cores allocated for the VM)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"RAM"}),": 64 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk size"}),": 1.2 TB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk IOPS"}),": 70,000 to 80,000"]}),"\n"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Metric"}),(0,r.jsx)(n.th,{children:"Resync"}),(0,r.jsx)(n.th,{children:"Pruning"}),(0,r.jsx)(n.th,{children:"Pruning and memory budget (4 GB)"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Execution time"})}),(0,r.jsx)(n.td,{children:"~4h"}),(0,r.jsx)(n.td,{children:"~24h"}),(0,r.jsx)(n.td,{children:"~12h"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Minimum free disk space"})}),(0,r.jsx)(n.td,{children:"N/A. You can execute resync even if there is 0 free space (avoid such a case)."}),(0,r.jsx)(n.td,{children:"250 GB"}),(0,r.jsx)(n.td,{children:"250 GB"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Attestation rate drop"})}),(0,r.jsx)(n.td,{children:"100%. No attestation rewards during that time or highly reduced."}),(0,r.jsx)(n.td,{children:"5\u201310% during that time"}),(0,r.jsx)(n.td,{children:"N/A"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Average block processing time of new blocks during the process"})}),(0,r.jsx)(n.td,{children:"N/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s."}),(0,r.jsx)(n.td,{children:"0.7s"}),(0,r.jsx)(n.td,{children:"1.0s"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Is the node online during the process?"})}),(0,r.jsx)(n.td,{children:"No, unless the state is synced."}),(0,r.jsx)(n.td,{children:"Yes. The node follows the chain, and all modules are still enabled."}),(0,r.jsx)(n.td,{children:"Yes. The node follows chain and all modules are still enabled."})]})]})]}),"\n",(0,r.jsx)(n.p,{children:"The command used for testing disk IOPS was as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw\n"})})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(4164);const t={tabItem:"tabItem_Ymn6"};var i=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),t=s(4164),i=s(3104),l=s(6347),d=s(205),c=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:t}}=e;return{value:n,label:s,attributes:r,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(t.location.search);n.set(i,e),t.replace({...t.location,search:n.toString()})}),[i,t])]}function b(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,i=u(e),[l,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[a,h]=j({queryString:s,groupId:t}),[b,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,i]=(0,o.Dv)(s);return[t,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:t}),f=(()=>{const e=a??b;return x({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{f&&c(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!x({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),p(e)}),[h,p,i]),tabValues:i}}var p=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=s(4848);function g(e){let{className:n,block:s,selectedValue:r,selectValue:l,tabValues:d}=e;const c=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),t=d[s].value;t!==r&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,m.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:h,onClick:o,...i,className:(0,t.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function B(e){const n=b(e);return(0,m.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,m.jsx)(g,{...n,...e}),(0,m.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,m.jsx)(B,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var r=s(6540);const t={},i=r.createContext(t);function l(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1355],{1069:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var r=s(4848),t=s(8453),i=s(1470),l=s(9365);const d={title:"Database",sidebar_position:5},c=void 0,a={id:"fundamentals/database",title:"Database",description:"Nethermind uses the RocksDB database to store the state. By default, the database is located in the",source:"@site/versioned_docs/version-1.27.0/fundamentals/database.md",sourceDirName:"fundamentals",slug:"/fundamentals/database",permalink:"/1.27.0/fundamentals/database",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/database.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:5,frontMatter:{title:"Database",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Logs",permalink:"/1.27.0/fundamentals/logs"},next:{title:"Pruning",permalink:"/1.27.0/fundamentals/pruning"}},o={},h=[{value:"Database directory structure",id:"database-directory-structure",level:2},{value:"Database size",id:"database-size",level:2},{value:"Reducing database size",id:"reducing-database-size",level:2}];function u(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Nethermind uses the ",(0,r.jsx)(n.a,{href:"https://rocksdb.org",children:"RocksDB"})," database to store the state. By default, the database is located in the\nsame directory where the Nethermind executable is. You can change the database location using the ",(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#basic-options",children:(0,r.jsx)(n.code,{children:"-d, --baseDbPath"})})," command line option."]}),"\n",(0,r.jsx)(n.h2,{id:"database-directory-structure",children:"Database directory structure"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Directory"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blockInfos"}),(0,r.jsx)(n.td,{children:"Information about blocks at each level of the block tree (canonical chain and branches)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blocks"}),(0,r.jsx)(n.td,{children:"Block bodies (block transactions and uncles)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"bloom"}),(0,r.jsx)(n.td,{children:"Bloom indices for fast log searches"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"canonicalHashTrie"}),(0,r.jsx)(n.td,{children:"LES protocol related data"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"code"}),(0,r.jsx)(n.td,{children:"Contract bytecodes"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"discoveryNodes"}),(0,r.jsx)(n.td,{children:"Peers discovered via discovery protocol - used for quick peering after restarts (you can copy this DB between nodes to speed up peering)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"headers"}),(0,r.jsx)(n.td,{children:"Block headers only"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"pendingTx"}),(0,r.jsx)(n.td,{children:"The second level cache of pending transactions/mempool (the first level is in memory). Wiped out on each restart."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"peers"}),(0,r.jsx)(n.td,{children:"Additional sync peers information (like peer reputation) - you can copy this DB between nodes to speed up peering on fresh sync"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"receipts"}),(0,r.jsx)(n.td,{children:"Transaction receipts"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"state"}),(0,r.jsx)(n.td,{children:"Blockchain state including accounts and contract storage (Patricia trie nodes)"})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:["You can use ",(0,r.jsx)(n.code,{children:"rsync"})," between your nodes to clone the database (One of our users copied the entire 4.5TB archive state this\nway while the node was running and only stopped the node for the very last stage of ",(0,r.jsx)(n.code,{children:"rsync"})," ). You can also copy\nthe database between Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h2,{id:"database-size",children:"Database size"}),"\n",(0,r.jsx)(n.p,{children:"Below is a comprehensive list of the supported chains, along with a detailed breakdown of their respective database directories. For reference, the database sizes listed have been determined using the standard configurations provided."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(l.A,{value:"mainnet",label:"Mainnet",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 156 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 204 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 584 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 6.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 8.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 4.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.4 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 965 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"sepolia",label:"Sepolia",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 39 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 37 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 251 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 2.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.2 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 6.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 496 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 337 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"holesky",label:"Holesky",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 17 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 12 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 50 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 648 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 828 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 434 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 760 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 81 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"gnosis",label:"Gnosis",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 64 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 215 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 196 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 10 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 658 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 75 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 497 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"chiado",label:"Chiado",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 2.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 1.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 8.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 2.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.2 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 60 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 825 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 20 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"energyweb",label:"Energyweb",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 27 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 4.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 24 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 6.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 14 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 74 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"volta",label:"Volta",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 34 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 8.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 32 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 8.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 6.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 94 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 92 GB"})}),"\n"]})})]}),"\n",(0,r.jsx)(n.h2,{id:"reducing-database-size",children:"Reducing database size"}),"\n",(0,r.jsx)(n.p,{children:"The Nethermind database can experience substantial growth over time, starting from an initial size of approximately 650\nGB. As a result, many node setups are configured to run on 1 TB disks. However, even with settings\ndesigned to slow the growth rate, these disks may eventually run out of free space."}),"\n",(0,r.jsx)(n.p,{children:"The current options to reduce the database size are as follows:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/sync#resync-a-node-from-scratch",children:"Resyncing database from scratch"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/pruning",children:"Pruning"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The table below presents a short comparison of these methods including possible fine-tuning of each method. Data was\nfetched from a node running on a machine with the below specifications:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Node.js"}),": v1.18.0"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Consensus client"}),": Lighthouse"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"CPU"}),": AMD EPYC 7713 (16 cores allocated for the VM)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"RAM"}),": 64 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk size"}),": 1.2 TB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk IOPS"}),": 70,000 to 80,000"]}),"\n"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Metric"}),(0,r.jsx)(n.th,{children:"Resync"}),(0,r.jsx)(n.th,{children:"Pruning"}),(0,r.jsx)(n.th,{children:"Pruning and memory budget (4 GB)"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Execution time"})}),(0,r.jsx)(n.td,{children:"~4h"}),(0,r.jsx)(n.td,{children:"~24h"}),(0,r.jsx)(n.td,{children:"~12h"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Minimum free disk space"})}),(0,r.jsx)(n.td,{children:"N/A. You can execute resync even if there is 0 free space (avoid such a case)."}),(0,r.jsx)(n.td,{children:"250 GB"}),(0,r.jsx)(n.td,{children:"250 GB"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Attestation rate drop"})}),(0,r.jsx)(n.td,{children:"100%. No attestation rewards during that time or highly reduced."}),(0,r.jsx)(n.td,{children:"5\u201310% during that time"}),(0,r.jsx)(n.td,{children:"N/A"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Average block processing time of new blocks during the process"})}),(0,r.jsx)(n.td,{children:"N/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s."}),(0,r.jsx)(n.td,{children:"0.7s"}),(0,r.jsx)(n.td,{children:"1.0s"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Is the node online during the process?"})}),(0,r.jsx)(n.td,{children:"No, unless the state is synced."}),(0,r.jsx)(n.td,{children:"Yes. The node follows the chain, and all modules are still enabled."}),(0,r.jsx)(n.td,{children:"Yes. The node follows chain and all modules are still enabled."})]})]})]}),"\n",(0,r.jsx)(n.p,{children:"The command used for testing disk IOPS was as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw\n"})})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(4164);const t={tabItem:"tabItem_Ymn6"};var i=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),t=s(4164),i=s(3104),l=s(6347),d=s(205),c=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:t}}=e;return{value:n,label:s,attributes:r,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(t.location.search);n.set(i,e),t.replace({...t.location,search:n.toString()})}),[i,t])]}function b(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,i=u(e),[l,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[a,h]=j({queryString:s,groupId:t}),[b,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,i]=(0,o.Dv)(s);return[t,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:t}),f=(()=>{const e=a??b;return x({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{f&&c(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!x({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),p(e)}),[h,p,i]),tabValues:i}}var p=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=s(4848);function g(e){let{className:n,block:s,selectedValue:r,selectValue:l,tabValues:d}=e;const c=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),t=d[s].value;t!==r&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,m.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:h,onClick:o,...i,className:(0,t.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function B(e){const n=b(e);return(0,m.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,m.jsx)(g,{...n,...e}),(0,m.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,m.jsx)(B,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var r=s(6540);const t={},i=r.createContext(t);function l(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5110f0ca.fda6439f.js b/assets/js/5110f0ca.42428cc2.js similarity index 97% rename from assets/js/5110f0ca.fda6439f.js rename to assets/js/5110f0ca.42428cc2.js index 99375d811..5362339e6 100644 --- a/assets/js/5110f0ca.fda6439f.js +++ b/assets/js/5110f0ca.42428cc2.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[372],{7277:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=t(4848),r=t(8453);const o={title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},a=void 0,s={id:"get-started/intro",title:"Introduction and overview",description:"Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.",source:"@site/versioned_docs/version-1.28.0/get-started/intro.md",sourceDirName:"get-started",slug:"/",permalink:"/1.28.0/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/get-started/intro.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},sidebar:"tutorialSidebar",next:{title:"System requirements",permalink:"/1.28.0/get-started/system-requirements"}},d={},c=[];function u(e){const n={a:"a",p:"p",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Nethermind is a high-performance, highly configurable Ethereum execution client built on ",(0,i.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/",children:".NET"})," that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with ",(0,i.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,i.jsx)(n.a,{href:"https://datalust.co/seq",children:"Seq"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators."}),"\n",(0,i.jsx)(n.p,{children:"Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding."}),"\n",(0,i.jsx)(n.p,{children:"We hope you find this documentation helpful and welcome your feedback and suggestions!"})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var i=t(6540);const r={},o=i.createContext(r);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[372],{7277:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=t(4848),r=t(8453);const o={title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},a=void 0,s={id:"get-started/intro",title:"Introduction and overview",description:"Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.",source:"@site/versioned_docs/version-1.28.0/get-started/intro.md",sourceDirName:"get-started",slug:"/",permalink:"/1.28.0/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/get-started/intro.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},sidebar:"tutorialSidebar",next:{title:"System requirements",permalink:"/1.28.0/get-started/system-requirements"}},d={},c=[];function u(e){const n={a:"a",p:"p",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Nethermind is a high-performance, highly configurable Ethereum execution client built on ",(0,i.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/",children:".NET"})," that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with ",(0,i.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,i.jsx)(n.a,{href:"https://datalust.co/seq",children:"Seq"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators."}),"\n",(0,i.jsx)(n.p,{children:"Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding."}),"\n",(0,i.jsx)(n.p,{children:"We hope you find this documentation helpful and welcome your feedback and suggestions!"})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var i=t(6540);const r={},o=i.createContext(r);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/531c2938.330ae8e8.js b/assets/js/531c2938.c5221a1d.js similarity index 99% rename from assets/js/531c2938.330ae8e8.js rename to assets/js/531c2938.c5221a1d.js index 83d3700b8..d1f4c1615 100644 --- a/assets/js/531c2938.330ae8e8.js +++ b/assets/js/531c2938.c5221a1d.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7529],{8154:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=s(4848),l=s(8453),i=s(1470),t=s(9365);const a={title:"admin namespace",sidebar_label:"admin",sidebar_position:0},d=void 0,c={id:"interacting/json-rpc-ns/admin",title:"admin namespace",description:"admin_addPeer",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/admin.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/admin",permalink:"/1.25.4/interacting/json-rpc-ns/admin",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/admin.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"admin namespace",sidebar_label:"admin",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"JSON-RPC server",permalink:"/1.25.4/interacting/json-rpc-server"},next:{title:"clique",permalink:"/1.25.4/interacting/json-rpc-ns/clique"}},o={},u=[{value:"admin_addPeer",id:"admin_addpeer",level:3},{value:"admin_nodeInfo",id:"admin_nodeinfo",level:3},{value:"admin_peers",id:"admin_peers",level:3},{value:"admin_prune",id:"admin_prune",level:3},{value:"admin_removePeer",id:"admin_removepeer",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"admin_addpeer",children:"admin_addPeer"}),"\n",(0,r.jsx)(n.p,{children:"Adds given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"addToStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_addPeer",\n "params": [enode, addToStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Added node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_nodeinfo",children:"admin_nodeInfo"}),"\n",(0,r.jsx)(n.p,{children:"Displays relevant information about this node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_nodeInfo",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Information about this node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ip"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listenAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ports"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"discovery"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listener"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"genesisHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"newtorkId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_peers",children:"admin_peers"}),"\n",(0,r.jsxs)(n.p,{children:["Displays a list of connected peers including information about them (",(0,r.jsx)(n.code,{children:"clientId"}),", ",(0,r.jsx)(n.code,{children:"host"}),", ",(0,r.jsx)(n.code,{children:"port"}),", ",(0,r.jsx)(n.code,{children:"address"}),", ",(0,r.jsx)(n.code,{children:"isBootnode"}),", ",(0,r.jsx)(n.code,{children:"isStatic"}),", ",(0,r.jsx)(n.code,{children:"enode"}),")."]}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeDetails"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_peers",\n "params": [includeDetails]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"List of connected peers including information"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ethDetails"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"host"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isBootnode"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isStatic"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isTrusted"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"lastSignal"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"port"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_prune",children:"admin_prune"}),"\n",(0,r.jsx)(n.p,{children:"Runs full pruning if enabled."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_prune",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"integer"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_removepeer",children:"admin_removePeer"}),"\n",(0,r.jsx)(n.p,{children:"Removes given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"removeFromStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_removePeer",\n "params": [enode, removeFromStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Removed node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var i=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),l=s(4164),i=s(3104),t=s(6347),a=s(205),d=s(7485),c=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function x(e){let{queryString:n=!1,groupId:s}=e;const l=(0,t.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(l.location.search);n.set(i,e),l.replace({...l.location,search:n.toString()})}),[i,l])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,i=h(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[c,u]=x({queryString:s,groupId:l}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,i]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:l}),b=(()=>{const e=c??m;return j({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{b&&d(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),p(e)}),[u,p,i]),tabValues:i}}var p=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:a}=e;const d=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),l=a[s].value;l!==r&&(c(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:a.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:u,onClick:o,...i,className:(0,l.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function _(e){const n=m(e);return(0,g.jsxs)("div",{className:(0,l.A)("tabs-container",b.tabList),children:[(0,g.jsx)(f,{...n,...e}),(0,g.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,g.jsx)(_,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const l={},i=r.createContext(l);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7529],{8154:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=s(4848),l=s(8453),i=s(1470),t=s(9365);const a={title:"admin namespace",sidebar_label:"admin",sidebar_position:0},d=void 0,c={id:"interacting/json-rpc-ns/admin",title:"admin namespace",description:"admin_addPeer",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/admin.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/admin",permalink:"/1.25.4/interacting/json-rpc-ns/admin",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/admin.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"admin namespace",sidebar_label:"admin",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"JSON-RPC server",permalink:"/1.25.4/interacting/json-rpc-server"},next:{title:"clique",permalink:"/1.25.4/interacting/json-rpc-ns/clique"}},o={},u=[{value:"admin_addPeer",id:"admin_addpeer",level:3},{value:"admin_nodeInfo",id:"admin_nodeinfo",level:3},{value:"admin_peers",id:"admin_peers",level:3},{value:"admin_prune",id:"admin_prune",level:3},{value:"admin_removePeer",id:"admin_removepeer",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"admin_addpeer",children:"admin_addPeer"}),"\n",(0,r.jsx)(n.p,{children:"Adds given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"addToStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_addPeer",\n "params": [enode, addToStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Added node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_nodeinfo",children:"admin_nodeInfo"}),"\n",(0,r.jsx)(n.p,{children:"Displays relevant information about this node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_nodeInfo",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Information about this node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ip"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listenAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ports"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"discovery"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listener"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"genesisHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"newtorkId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_peers",children:"admin_peers"}),"\n",(0,r.jsxs)(n.p,{children:["Displays a list of connected peers including information about them (",(0,r.jsx)(n.code,{children:"clientId"}),", ",(0,r.jsx)(n.code,{children:"host"}),", ",(0,r.jsx)(n.code,{children:"port"}),", ",(0,r.jsx)(n.code,{children:"address"}),", ",(0,r.jsx)(n.code,{children:"isBootnode"}),", ",(0,r.jsx)(n.code,{children:"isStatic"}),", ",(0,r.jsx)(n.code,{children:"enode"}),")."]}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeDetails"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_peers",\n "params": [includeDetails]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"List of connected peers including information"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ethDetails"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"host"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isBootnode"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isStatic"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isTrusted"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"lastSignal"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"port"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_prune",children:"admin_prune"}),"\n",(0,r.jsx)(n.p,{children:"Runs full pruning if enabled."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_prune",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"integer"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_removepeer",children:"admin_removePeer"}),"\n",(0,r.jsx)(n.p,{children:"Removes given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"removeFromStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_removePeer",\n "params": [enode, removeFromStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Removed node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var i=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),l=s(4164),i=s(3104),t=s(6347),a=s(205),d=s(7485),c=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function x(e){let{queryString:n=!1,groupId:s}=e;const l=(0,t.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(l.location.search);n.set(i,e),l.replace({...l.location,search:n.toString()})}),[i,l])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,i=h(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[c,u]=x({queryString:s,groupId:l}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,i]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:l}),b=(()=>{const e=c??m;return j({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{b&&d(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),p(e)}),[u,p,i]),tabValues:i}}var p=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:a}=e;const d=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),l=a[s].value;l!==r&&(c(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:a.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:u,onClick:o,...i,className:(0,l.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function _(e){const n=m(e);return(0,g.jsxs)("div",{className:(0,l.A)("tabs-container",b.tabList),children:[(0,g.jsx)(f,{...n,...e}),(0,g.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,g.jsx)(_,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const l={},i=r.createContext(l);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/55bf82fd.fa795399.js b/assets/js/55bf82fd.25a44fd2.js similarity index 99% rename from assets/js/55bf82fd.fa795399.js rename to assets/js/55bf82fd.25a44fd2.js index 550b6bc3c..067398106 100644 --- a/assets/js/55bf82fd.fa795399.js +++ b/assets/js/55bf82fd.25a44fd2.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1105],{58:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var o=t(4848),i=t(8453);const r={title:"Custom analytic tools",sidebar_position:2},a=void 0,s={id:"developers/custom-analytic-tools",title:"Custom analytic tools",description:"This article is outdated and requires a revision.",source:"@site/docs/developers/custom-analytic-tools.md",sourceDirName:"developers",slug:"/developers/custom-analytic-tools",permalink:"/next/developers/custom-analytic-tools",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/developers/custom-analytic-tools.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Custom analytic tools",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Plugins",permalink:"/next/developers/plugins"},next:{title:"Troubleshooting",permalink:"/next/troubleshooting"}},l={},c=[];function d(e){const n={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,o.jsx)(n.p,{children:"Check plugins for some easy addition of analytical tools"}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/next/developers/plugins",children:"Learn more about Plugins"})})}),"\n",(0,o.jsx)(n.p,{children:"You can also read more about some useful interfaces below:"}),"\n",(0,o.jsxs)(n.p,{children:["There are multiple extension points where you can add custom analytics to your Nethermind node if you know some C#.\nBelow you will find an example of using two very useful interfaces - ",(0,o.jsx)(n.code,{children:"IBlockVisitor"})," and ",(0,o.jsx)(n.code,{children:"ITreeVisitor"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Just to execute the code I have added one new initialization step that invokes two custom verifiers that I have used for\ncalculating total supply in two different ways - by calculating mining rewards and by summing up all account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' [RunnerStepDependencies(typeof(ReviewBlockTree))]\n public class RunCustomTools : IStep\n {\n private readonly EthereumRunnerContext _context;\n\n public RunCustomTools(EthereumRunnerContext context)\n {\n _context = context;\n }\n\n public Task Execute(CancellationToken cancellationToken)\n {\n ILogger logger = _context.LogManager.GetClassLogger();\n IInitConfig initConfig = _context.Config();\n\n switch (initConfig.DiagnosticMode)\n {\n case DiagnosticMode.VerifySupply:\n {\n logger.Info("Genesis supply:");\n SupplyVerifier supplyVerifier = new SupplyVerifier(logger);\n StateDb stateDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateDb codeDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateReader stateReader = new StateReader(stateDb, codeDb, _context.LogManager);\n stateReader.RunTreeVisitor(supplyVerifier, _context.BlockTree!.Genesis.StateRoot);\n\n Block head = _context.BlockTree!.Head;\n logger.Info($"Head ({head.Number}) block supply:");\n supplyVerifier = new SupplyVerifier(logger);\n stateReader.RunTreeVisitor(supplyVerifier, head.StateRoot);\n break;\n }\n case DiagnosticMode.VerifyRewards:\n _context.BlockTree!.Accept(new RewardsVerifier(_context.LogManager), cancellationToken);\n break;\n }\n\n return Task.CompletedTask;\n }\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"Below you will see an example of using ITreeVisitor that allows to check all the blocks, including some of the discarded\nbranches if you wish so:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive => 10618000;\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n private UInt256 _blockRewards;\n\n public RewardsVerifier(ILogManager logManager)\n {\n _logger = logManager.GetClassLogger();\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n _blockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"And here you will find an example of a tree visitor that sums up all the account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class SupplyVerifier : ITreeVisitor\n {\n private readonly ILogger _logger;\n private UInt256 _balance = UInt256.Zero;\n private int _accountsVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public bool ShouldVisit(Keccak nextNode) { return true; }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n _balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }\n }\n'})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var o=t(6540);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1105],{58:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var o=t(4848),i=t(8453);const r={title:"Custom analytic tools",sidebar_position:2},a=void 0,s={id:"developers/custom-analytic-tools",title:"Custom analytic tools",description:"This article is outdated and requires a revision.",source:"@site/docs/developers/custom-analytic-tools.md",sourceDirName:"developers",slug:"/developers/custom-analytic-tools",permalink:"/next/developers/custom-analytic-tools",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/developers/custom-analytic-tools.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Custom analytic tools",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Plugins",permalink:"/next/developers/plugins"},next:{title:"Troubleshooting",permalink:"/next/troubleshooting"}},l={},c=[];function d(e){const n={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,o.jsx)(n.p,{children:"Check plugins for some easy addition of analytical tools"}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/next/developers/plugins",children:"Learn more about Plugins"})})}),"\n",(0,o.jsx)(n.p,{children:"You can also read more about some useful interfaces below:"}),"\n",(0,o.jsxs)(n.p,{children:["There are multiple extension points where you can add custom analytics to your Nethermind node if you know some C#.\nBelow you will find an example of using two very useful interfaces - ",(0,o.jsx)(n.code,{children:"IBlockVisitor"})," and ",(0,o.jsx)(n.code,{children:"ITreeVisitor"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Just to execute the code I have added one new initialization step that invokes two custom verifiers that I have used for\ncalculating total supply in two different ways - by calculating mining rewards and by summing up all account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' [RunnerStepDependencies(typeof(ReviewBlockTree))]\n public class RunCustomTools : IStep\n {\n private readonly EthereumRunnerContext _context;\n\n public RunCustomTools(EthereumRunnerContext context)\n {\n _context = context;\n }\n\n public Task Execute(CancellationToken cancellationToken)\n {\n ILogger logger = _context.LogManager.GetClassLogger();\n IInitConfig initConfig = _context.Config();\n\n switch (initConfig.DiagnosticMode)\n {\n case DiagnosticMode.VerifySupply:\n {\n logger.Info("Genesis supply:");\n SupplyVerifier supplyVerifier = new SupplyVerifier(logger);\n StateDb stateDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateDb codeDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateReader stateReader = new StateReader(stateDb, codeDb, _context.LogManager);\n stateReader.RunTreeVisitor(supplyVerifier, _context.BlockTree!.Genesis.StateRoot);\n\n Block head = _context.BlockTree!.Head;\n logger.Info($"Head ({head.Number}) block supply:");\n supplyVerifier = new SupplyVerifier(logger);\n stateReader.RunTreeVisitor(supplyVerifier, head.StateRoot);\n break;\n }\n case DiagnosticMode.VerifyRewards:\n _context.BlockTree!.Accept(new RewardsVerifier(_context.LogManager), cancellationToken);\n break;\n }\n\n return Task.CompletedTask;\n }\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"Below you will see an example of using ITreeVisitor that allows to check all the blocks, including some of the discarded\nbranches if you wish so:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive => 10618000;\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n private UInt256 _blockRewards;\n\n public RewardsVerifier(ILogManager logManager)\n {\n _logger = logManager.GetClassLogger();\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n _blockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"And here you will find an example of a tree visitor that sums up all the account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class SupplyVerifier : ITreeVisitor\n {\n private readonly ILogger _logger;\n private UInt256 _balance = UInt256.Zero;\n private int _accountsVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public bool ShouldVisit(Keccak nextNode) { return true; }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n _balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }\n }\n'})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var o=t(6540);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/56cfc4bc.4caf810b.js b/assets/js/56cfc4bc.8d2243ed.js similarity index 99% rename from assets/js/56cfc4bc.4caf810b.js rename to assets/js/56cfc4bc.8d2243ed.js index 5254be0ff..f085de8f3 100644 --- a/assets/js/56cfc4bc.4caf810b.js +++ b/assets/js/56cfc4bc.8d2243ed.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3693],{95:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=s(4848),a=s(8453),l=s(1470),t=s(9365);const o={title:"personal namespace",sidebar_label:"personal",sidebar_position:6},c=void 0,i={id:"interacting/json-rpc-ns/personal",title:"personal namespace",description:"personal_importRawKey",source:"@site/docs/interacting/json-rpc-ns/personal.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/personal",permalink:"/next/interacting/json-rpc-ns/personal",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/personal.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:6,frontMatter:{title:"personal namespace",sidebar_label:"personal",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"parity",permalink:"/next/interacting/json-rpc-ns/parity"},next:{title:"proof",permalink:"/next/interacting/json-rpc-ns/proof"}},u={},d=[{value:"personal_importRawKey",id:"personal_importrawkey",level:3},{value:"personal_listAccounts",id:"personal_listaccounts",level:3},{value:"personal_lockAccount",id:"personal_lockaccount",level:3},{value:"personal_newAccount",id:"personal_newaccount",level:3},{value:"personal_unlockAccount",id:"personal_unlockaccount",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"personal_importrawkey",children:"personal_importRawKey"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"keyData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_importRawKey",\n "params": [keyData, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_listaccounts",children:"personal_listAccounts"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_listAccounts",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_lockaccount",children:"personal_lockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_lockAccount",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_newaccount",children:"personal_newAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_newAccount",\n "params": [passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_unlockaccount",children:"personal_unlockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_unlockAccount",\n "params": [address, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const a={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),a=s(4164),l=s(3104),t=s(6347),o=s(205),c=s(7485),i=s(1682),u=s(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:a}}=e;return{value:n,label:s,attributes:r,default:a}}))}(s);return function(e){const n=(0,i.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const a=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(a.location.search);n.set(l,e),a.replace({...a.location,search:n.toString()})}),[l,a])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:a}=e,l=p(e),[t,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[i,d]=j({queryString:s,groupId:a}),[m,x]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,l]=(0,u.Dv)(s);return[a,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:a}),b=(()=>{const e=i??m;return h({value:e,tabValues:l})?e:null})();(0,o.A)((()=>{b&&c(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),x(e)}),[d,x,l]),tabValues:l}}var x=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:o}=e;const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),u=e=>{const n=e.currentTarget,s=c.indexOf(n),a=o[s].value;a!==r&&(i(n),t(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":s},n),children:o.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:d,onClick:u,...l,className:(0,a.A)("tabs__item",b.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function g(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function A(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(g,{...n,...e})]})}function y(e){const n=(0,x.A)();return(0,f.jsx)(A,{...e,children:d(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>o});var r=s(6540);const a={},l=r.createContext(a);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3693],{95:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=s(4848),a=s(8453),l=s(1470),t=s(9365);const o={title:"personal namespace",sidebar_label:"personal",sidebar_position:6},c=void 0,i={id:"interacting/json-rpc-ns/personal",title:"personal namespace",description:"personal_importRawKey",source:"@site/docs/interacting/json-rpc-ns/personal.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/personal",permalink:"/next/interacting/json-rpc-ns/personal",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/personal.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:6,frontMatter:{title:"personal namespace",sidebar_label:"personal",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"parity",permalink:"/next/interacting/json-rpc-ns/parity"},next:{title:"proof",permalink:"/next/interacting/json-rpc-ns/proof"}},u={},d=[{value:"personal_importRawKey",id:"personal_importrawkey",level:3},{value:"personal_listAccounts",id:"personal_listaccounts",level:3},{value:"personal_lockAccount",id:"personal_lockaccount",level:3},{value:"personal_newAccount",id:"personal_newaccount",level:3},{value:"personal_unlockAccount",id:"personal_unlockaccount",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"personal_importrawkey",children:"personal_importRawKey"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"keyData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_importRawKey",\n "params": [keyData, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_listaccounts",children:"personal_listAccounts"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_listAccounts",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_lockaccount",children:"personal_lockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_lockAccount",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_newaccount",children:"personal_newAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_newAccount",\n "params": [passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_unlockaccount",children:"personal_unlockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_unlockAccount",\n "params": [address, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const a={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),a=s(4164),l=s(3104),t=s(6347),o=s(205),c=s(7485),i=s(1682),u=s(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:a}}=e;return{value:n,label:s,attributes:r,default:a}}))}(s);return function(e){const n=(0,i.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const a=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(a.location.search);n.set(l,e),a.replace({...a.location,search:n.toString()})}),[l,a])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:a}=e,l=p(e),[t,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[i,d]=j({queryString:s,groupId:a}),[m,x]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,l]=(0,u.Dv)(s);return[a,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:a}),b=(()=>{const e=i??m;return h({value:e,tabValues:l})?e:null})();(0,o.A)((()=>{b&&c(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),x(e)}),[d,x,l]),tabValues:l}}var x=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:o}=e;const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),u=e=>{const n=e.currentTarget,s=c.indexOf(n),a=o[s].value;a!==r&&(i(n),t(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":s},n),children:o.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:d,onClick:u,...l,className:(0,a.A)("tabs__item",b.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function g(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function A(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(g,{...n,...e})]})}function y(e){const n=(0,x.A)();return(0,f.jsx)(A,{...e,children:d(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>o});var r=s(6540);const a={},l=r.createContext(a);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/573f724f.5e8f6468.js b/assets/js/573f724f.38df7453.js similarity index 99% rename from assets/js/573f724f.5e8f6468.js rename to assets/js/573f724f.38df7453.js index e97072d32..3ed4a5e64 100644 --- a/assets/js/573f724f.5e8f6468.js +++ b/assets/js/573f724f.38df7453.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8761],{2787:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>o,toc:()=>d});var i=s(4848),r=s(8453);const t={title:"Validators",sidebar_position:0},a=void 0,o={id:"validators/validators",title:"Validators",description:"General considerations",source:"@site/versioned_docs/version-1.28.0/validators/validators.md",sourceDirName:"validators",slug:"/validators/",permalink:"/1.28.0/validators/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/validators/validators.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Health check",permalink:"/1.28.0/monitoring/health-check"},next:{title:"Aura-based validators",permalink:"/1.28.0/validators/aura"}},l={},d=[{value:"General considerations",id:"general-considerations",level:2},{value:"Hardware configurations",id:"hardware-configurations",level:2},{value:"On-premises",id:"on-premises",level:3},{value:"AWS",id:"aws",level:3},{value:"Azure",id:"azure",level:3},{value:"GCP",id:"gcp",level:3},{value:"Gnosis validators",id:"gnosis-validators",level:2}];function c(e){const n={a:"a",admonition:"admonition",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"general-considerations",children:"General considerations"}),"\n",(0,i.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,i.jsxs)(n.p,{children:["Please check out the ",(0,i.jsx)(n.a,{href:"/1.28.0/fundamentals/security",children:"security considerations"})," before using Nethermind as a validator."]})}),"\n",(0,i.jsxs)(n.p,{children:["For Ethereum validators, we highly recommend checking out ",(0,i.jsx)(n.a,{href:"https://ethereum.org/staking",children:"Staking with Ethereum"})," and ",(0,i.jsx)(n.a,{href:"https://launchpad.ethereum.org/en/checklist",children:"Validator checklist"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"hardware-configurations",children:"Hardware configurations"}),"\n",(0,i.jsx)(n.p,{children:"The following hardware configurations for Ethereum Mainnet validators have been battle-tested by us and our users. We have observed excellent validator performance and stability with these configurations."}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Before setting up your infrastructure, check out ",(0,i.jsx)(n.a,{href:"/1.28.0/get-started/system-requirements#hardware-requirements",children:"Nethermind hardware requirements"}),"."]})}),"\n",(0,i.jsx)(n.h3,{id:"on-premises",children:"On-premises"}),"\n",(0,i.jsx)(n.p,{children:"A single validator on Intel NUC 11:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"CPU: Intel Core i7-1165G7"}),"\n",(0,i.jsx)(n.li,{children:"Memory: Crucial 32GB DDR4-3200 SODIMM"}),"\n",(0,i.jsx)(n.li,{children:"Storage: Samsung 980 PRO PCIe NVMe SSD 2TB"}),"\n",(0,i.jsx)(n.li,{children:"Internet speed: 620 Mbps download, 160 Mbps upload"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"aws",children:"AWS"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following EC2 instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m6i/",children:"m6i.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m7g/",children:"m7g.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/t4/",children:"t4g.small"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"azure",children:"Azure"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following VM instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dv5-dsv5-series#dv5-series",children:"Standard_D8_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dpsv5-dpdsv5-series#dpsv5-series",children:"Standard_D8ps_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dplsv5-dpldsv5-series#dplsv5-series",children:"Standard_D2pls_v5"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"gcp",children:"GCP"}),"\n",(0,i.jsxs)(n.p,{children:["Multiple validators on the ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/compute-optimized-machines#c2d-high-mem",children:"c2d-highmem-4"})," instance: 4 vCPU, 32 GB memory"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/general-purpose-machines#sharedcore",children:"e2-small"})," instances."]}),"\n",(0,i.jsx)(n.h2,{id:"gnosis-validators",children:"Gnosis validators"}),"\n",(0,i.jsxs)(n.p,{children:["To set up a Gnosis Chain validator, see the ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node",children:"Gnosis Chain documentation"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>o});var i=s(6540);const r={},t=i.createContext(r);function a(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8761],{2787:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>o,toc:()=>d});var i=s(4848),r=s(8453);const t={title:"Validators",sidebar_position:0},a=void 0,o={id:"validators/validators",title:"Validators",description:"General considerations",source:"@site/versioned_docs/version-1.28.0/validators/validators.md",sourceDirName:"validators",slug:"/validators/",permalink:"/1.28.0/validators/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/validators/validators.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Health check",permalink:"/1.28.0/monitoring/health-check"},next:{title:"Aura-based validators",permalink:"/1.28.0/validators/aura"}},l={},d=[{value:"General considerations",id:"general-considerations",level:2},{value:"Hardware configurations",id:"hardware-configurations",level:2},{value:"On-premises",id:"on-premises",level:3},{value:"AWS",id:"aws",level:3},{value:"Azure",id:"azure",level:3},{value:"GCP",id:"gcp",level:3},{value:"Gnosis validators",id:"gnosis-validators",level:2}];function c(e){const n={a:"a",admonition:"admonition",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"general-considerations",children:"General considerations"}),"\n",(0,i.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,i.jsxs)(n.p,{children:["Please check out the ",(0,i.jsx)(n.a,{href:"/1.28.0/fundamentals/security",children:"security considerations"})," before using Nethermind as a validator."]})}),"\n",(0,i.jsxs)(n.p,{children:["For Ethereum validators, we highly recommend checking out ",(0,i.jsx)(n.a,{href:"https://ethereum.org/staking",children:"Staking with Ethereum"})," and ",(0,i.jsx)(n.a,{href:"https://launchpad.ethereum.org/en/checklist",children:"Validator checklist"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"hardware-configurations",children:"Hardware configurations"}),"\n",(0,i.jsx)(n.p,{children:"The following hardware configurations for Ethereum Mainnet validators have been battle-tested by us and our users. We have observed excellent validator performance and stability with these configurations."}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Before setting up your infrastructure, check out ",(0,i.jsx)(n.a,{href:"/1.28.0/get-started/system-requirements#hardware-requirements",children:"Nethermind hardware requirements"}),"."]})}),"\n",(0,i.jsx)(n.h3,{id:"on-premises",children:"On-premises"}),"\n",(0,i.jsx)(n.p,{children:"A single validator on Intel NUC 11:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"CPU: Intel Core i7-1165G7"}),"\n",(0,i.jsx)(n.li,{children:"Memory: Crucial 32GB DDR4-3200 SODIMM"}),"\n",(0,i.jsx)(n.li,{children:"Storage: Samsung 980 PRO PCIe NVMe SSD 2TB"}),"\n",(0,i.jsx)(n.li,{children:"Internet speed: 620 Mbps download, 160 Mbps upload"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"aws",children:"AWS"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following EC2 instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m6i/",children:"m6i.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m7g/",children:"m7g.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/t4/",children:"t4g.small"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"azure",children:"Azure"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following VM instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dv5-dsv5-series#dv5-series",children:"Standard_D8_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dpsv5-dpdsv5-series#dpsv5-series",children:"Standard_D8ps_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dplsv5-dpldsv5-series#dplsv5-series",children:"Standard_D2pls_v5"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"gcp",children:"GCP"}),"\n",(0,i.jsxs)(n.p,{children:["Multiple validators on the ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/compute-optimized-machines#c2d-high-mem",children:"c2d-highmem-4"})," instance: 4 vCPU, 32 GB memory"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/general-purpose-machines#sharedcore",children:"e2-small"})," instances."]}),"\n",(0,i.jsx)(n.h2,{id:"gnosis-validators",children:"Gnosis validators"}),"\n",(0,i.jsxs)(n.p,{children:["To set up a Gnosis Chain validator, see the ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node",children:"Gnosis Chain documentation"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>o});var i=s(6540);const r={},t=i.createContext(r);function a(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/59d5f8ae.d4839294.js b/assets/js/59d5f8ae.f434e633.js similarity index 99% rename from assets/js/59d5f8ae.d4839294.js rename to assets/js/59d5f8ae.f434e633.js index 5ec811df8..ab66fd4c5 100644 --- a/assets/js/59d5f8ae.d4839294.js +++ b/assets/js/59d5f8ae.f434e633.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[288],{3961:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>r,metadata:()=>i,toc:()=>c});var a=t(4848),o=t(8453);t(1470),t(9365);const r={title:"Health check",sidebar_position:1},s=void 0,i={id:"monitoring/health-check",title:"Health check",description:"To monitor liveness and readiness of your node, Nethermind provides a simple yet powerful health check feature. It is available at the default /health endpoint of the JSON-RPC server.",source:"@site/docs/monitoring/health-check.md",sourceDirName:"monitoring",slug:"/monitoring/health-check",permalink:"/next/monitoring/health-check",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/monitoring/health-check.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Health check",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"dotnet-counters",permalink:"/next/monitoring/metrics/dotnet-counters"},next:{title:"Validators",permalink:"/next/validators/"}},l={},c=[{value:"Basic configuration",id:"basic-configuration",level:2},{value:"Configuring a webhook",id:"webhook",level:2},{value:"Monitoring storage space",id:"storage-space",level:2},{value:"Monitoring blocks",id:"blocks",level:2},{value:"Monitoring consensus client",id:"consensus-client",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.p,{children:["To monitor liveness and readiness of your node, Nethermind provides a simple yet powerful health check feature. It is available at the default ",(0,a.jsx)(n.code,{children:"/health"})," endpoint of the ",(0,a.jsx)(n.a,{href:"/next/interacting/json-rpc-server",children:"JSON-RPC server"}),"."]}),"\n",(0,a.jsx)(n.h2,{id:"basic-configuration",children:"Basic configuration"}),"\n",(0,a.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,a.jsxs)(n.p,{children:["The health check service requires the ",(0,a.jsx)(n.a,{href:"/next/interacting/json-rpc-server#http",children:"JSON-RPC API"})," to be enabled."]})}),"\n",(0,a.jsxs)(n.p,{children:["The health check service is disabled by default. To enable it, set the ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-enabled",children:(0,a.jsx)(n.code,{children:"HealthChecks.Enabled"})})," configuration option as follows:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --HealthChecks.Enabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Once Nethermind is up and running, the health check service can be accessed at the ",(0,a.jsx)(n.code,{children:"/health"})," endpoint:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"curl localhost:8545/health\n"})}),"\n",(0,a.jsx)(n.p,{children:"with a response similar to the following if healthy:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HTTP 200 OK"',children:'{\n "status": "Healthy",\n "totalDuration": "00:00:00.0006931",\n "entries": {\n "node-health": {\n "data": {\n "IsSyncing": false,\n "Errors": []\n },\n "description": "The node is now fully synced with a network. Peers: 89.",\n "duration": "00:00:00.0003797",\n "status": "Healthy",\n "tags": []\n }\n }\n}\n'})}),"\n",(0,a.jsx)(n.p,{children:"or similar to the following if unhealthy:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HTTP 503 Service Unavailable"',children:'{\n "status": "Unhealthy",\n "totalDuration": "00:00:00.0009477",\n "entries": {\n "node-health": {\n "data": {\n "IsSyncing": false,\n "Errors": [ "NoPeers" ]\n },\n "description": "The node is now fully synced with a network. Node is not connected to any peers.",\n "duration": "00:00:00.0001356",\n "status": "Unhealthy",\n "tags": []\n }\n }\n}\n'})}),"\n",(0,a.jsxs)(n.p,{children:["It is also possible to replace the default ",(0,a.jsx)(n.code,{children:"/health"})," endpoint with a custom one using the ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-slug",children:(0,a.jsx)(n.code,{children:"HealthChecks.Slug"})})," configuration option. For example:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"--HealthChecks.Slug /my/custom/endpoint\n"})}),"\n",(0,a.jsx)(n.h2,{id:"webhook",children:"Configuring a webhook"}),"\n",(0,a.jsxs)(n.p,{children:["The health check service can be configured to send notifications to a webhook on node failure or recovery. This is achieved with the ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-uienabled",children:(0,a.jsx)(n.code,{children:"HealthChecks.UIEnabled"})}),", ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-webhooksenabled",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksEnabled"})}),", and ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-webhooksuri",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksUri"})})," configuration options. Optionally, the webhook payload data can be customized with the ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-webhookspayload",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksPayload"})})," and ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-webhooksrestorepayload",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksRestorePayload"})})," configuration options for failure and recovery events respectively."]}),"\n",(0,a.jsx)(n.p,{children:"The following example demonstrates how to configure a basic Slack webhook:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --HealthChecks.Enabled true \\\n --HealthChecks.UIEnabled true \\\n --HealthChecks.WebhooksEnabled true \\\n --HealthChecks.WebhooksUri https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX \\\n --HealthChecks.WebhooksPayload \'{"text": "Node is unhealthy"}\' \\\n --HealthChecks.WebhooksRestorePayload \'{"text": "Node is healthy"}\'\n'})}),"\n",(0,a.jsx)(n.h2,{id:"storage-space",children:"Monitoring storage space"}),"\n",(0,a.jsx)(n.p,{children:"Monitoring the available storage space is a crucial aspect of running a node. Nethermind provides a feature to track the free storage space and take action when the available space falls below a certain threshold. The following options are available:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-lowstoragecheckawaitonstartup",children:(0,a.jsx)(n.code,{children:"HealthChecks.LowStorageCheckAwaitOnStartup"})})," to check for low disk space on startup and suspend Nethermind until enough space is available"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-lowstoragespaceshutdownthreshold",children:(0,a.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceShutdownThreshold"})})," to shut down Nethermind when the percentage of available disk space falls below the specified threshold"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-lowstoragespacewarningthreshold",children:(0,a.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceWarningThreshold"})})," to issue a warning when the percentage of available disk space falls below the specified threshold"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"blocks",children:"Monitoring blocks"}),"\n",(0,a.jsx)(n.p,{children:"Another critical aspect of running a node is monitoring the production and processing of blocks. For that, Nethermind provides the following options:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-maxintervalwithoutprocessedblock",children:(0,a.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProcessedBlock"})})," to specify the max interval without processing a block before the node is considered unhealthy"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-maxintervalwithoutproducedblock",children:(0,a.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProducedBlock"})})," to specify the max interval without producing a block before the node is considered unhealthy"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"consensus-client",children:"Monitoring consensus client"}),"\n",(0,a.jsxs)(n.p,{children:["The health check service can also monitor the communication between Nethermind and the consensus client which can be configured by the ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-maxintervalclrequesttime",children:(0,a.jsx)(n.code,{children:"HealthChecks.MaxIntervalClRequestTime"})})," configuration option."]})]})}function d(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(4164);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var a=t(6540),o=t(4164),r=t(3104),s=t(6347),i=t(205),l=t(7485),c=t(1682),h=t(679);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function f(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=u(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!f({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,d]=p({queryString:t,groupId:o}),[b,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,h.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),g=(()=>{const e=c??b;return f({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!f({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),m(e)}),[d,m,r]),tabValues:r}}var m=t(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(4848);function k(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),h=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(c(n),s(o))},d=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:d,onClick:h,...r,className:(0,o.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function j(e){const n=b(e);return(0,x.jsxs)("div",{className:(0,o.A)("tabs-container",g.tabList),children:[(0,x.jsx)(k,{...n,...e}),(0,x.jsx)(v,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,x.jsx)(j,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>i});var a=t(6540);const o={},r=a.createContext(o);function s(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[288],{3961:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>r,metadata:()=>i,toc:()=>c});var a=t(4848),o=t(8453);t(1470),t(9365);const r={title:"Health check",sidebar_position:1},s=void 0,i={id:"monitoring/health-check",title:"Health check",description:"To monitor liveness and readiness of your node, Nethermind provides a simple yet powerful health check feature. It is available at the default /health endpoint of the JSON-RPC server.",source:"@site/docs/monitoring/health-check.md",sourceDirName:"monitoring",slug:"/monitoring/health-check",permalink:"/next/monitoring/health-check",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/monitoring/health-check.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Health check",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"dotnet-counters",permalink:"/next/monitoring/metrics/dotnet-counters"},next:{title:"Validators",permalink:"/next/validators/"}},l={},c=[{value:"Basic configuration",id:"basic-configuration",level:2},{value:"Configuring a webhook",id:"webhook",level:2},{value:"Monitoring storage space",id:"storage-space",level:2},{value:"Monitoring blocks",id:"blocks",level:2},{value:"Monitoring consensus client",id:"consensus-client",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.p,{children:["To monitor liveness and readiness of your node, Nethermind provides a simple yet powerful health check feature. It is available at the default ",(0,a.jsx)(n.code,{children:"/health"})," endpoint of the ",(0,a.jsx)(n.a,{href:"/next/interacting/json-rpc-server",children:"JSON-RPC server"}),"."]}),"\n",(0,a.jsx)(n.h2,{id:"basic-configuration",children:"Basic configuration"}),"\n",(0,a.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,a.jsxs)(n.p,{children:["The health check service requires the ",(0,a.jsx)(n.a,{href:"/next/interacting/json-rpc-server#http",children:"JSON-RPC API"})," to be enabled."]})}),"\n",(0,a.jsxs)(n.p,{children:["The health check service is disabled by default. To enable it, set the ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-enabled",children:(0,a.jsx)(n.code,{children:"HealthChecks.Enabled"})})," configuration option as follows:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --HealthChecks.Enabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Once Nethermind is up and running, the health check service can be accessed at the ",(0,a.jsx)(n.code,{children:"/health"})," endpoint:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"curl localhost:8545/health\n"})}),"\n",(0,a.jsx)(n.p,{children:"with a response similar to the following if healthy:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HTTP 200 OK"',children:'{\n "status": "Healthy",\n "totalDuration": "00:00:00.0006931",\n "entries": {\n "node-health": {\n "data": {\n "IsSyncing": false,\n "Errors": []\n },\n "description": "The node is now fully synced with a network. Peers: 89.",\n "duration": "00:00:00.0003797",\n "status": "Healthy",\n "tags": []\n }\n }\n}\n'})}),"\n",(0,a.jsx)(n.p,{children:"or similar to the following if unhealthy:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HTTP 503 Service Unavailable"',children:'{\n "status": "Unhealthy",\n "totalDuration": "00:00:00.0009477",\n "entries": {\n "node-health": {\n "data": {\n "IsSyncing": false,\n "Errors": [ "NoPeers" ]\n },\n "description": "The node is now fully synced with a network. Node is not connected to any peers.",\n "duration": "00:00:00.0001356",\n "status": "Unhealthy",\n "tags": []\n }\n }\n}\n'})}),"\n",(0,a.jsxs)(n.p,{children:["It is also possible to replace the default ",(0,a.jsx)(n.code,{children:"/health"})," endpoint with a custom one using the ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-slug",children:(0,a.jsx)(n.code,{children:"HealthChecks.Slug"})})," configuration option. For example:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"--HealthChecks.Slug /my/custom/endpoint\n"})}),"\n",(0,a.jsx)(n.h2,{id:"webhook",children:"Configuring a webhook"}),"\n",(0,a.jsxs)(n.p,{children:["The health check service can be configured to send notifications to a webhook on node failure or recovery. This is achieved with the ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-uienabled",children:(0,a.jsx)(n.code,{children:"HealthChecks.UIEnabled"})}),", ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-webhooksenabled",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksEnabled"})}),", and ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-webhooksuri",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksUri"})})," configuration options. Optionally, the webhook payload data can be customized with the ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-webhookspayload",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksPayload"})})," and ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-webhooksrestorepayload",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksRestorePayload"})})," configuration options for failure and recovery events respectively."]}),"\n",(0,a.jsx)(n.p,{children:"The following example demonstrates how to configure a basic Slack webhook:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --HealthChecks.Enabled true \\\n --HealthChecks.UIEnabled true \\\n --HealthChecks.WebhooksEnabled true \\\n --HealthChecks.WebhooksUri https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX \\\n --HealthChecks.WebhooksPayload \'{"text": "Node is unhealthy"}\' \\\n --HealthChecks.WebhooksRestorePayload \'{"text": "Node is healthy"}\'\n'})}),"\n",(0,a.jsx)(n.h2,{id:"storage-space",children:"Monitoring storage space"}),"\n",(0,a.jsx)(n.p,{children:"Monitoring the available storage space is a crucial aspect of running a node. Nethermind provides a feature to track the free storage space and take action when the available space falls below a certain threshold. The following options are available:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-lowstoragecheckawaitonstartup",children:(0,a.jsx)(n.code,{children:"HealthChecks.LowStorageCheckAwaitOnStartup"})})," to check for low disk space on startup and suspend Nethermind until enough space is available"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-lowstoragespaceshutdownthreshold",children:(0,a.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceShutdownThreshold"})})," to shut down Nethermind when the percentage of available disk space falls below the specified threshold"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-lowstoragespacewarningthreshold",children:(0,a.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceWarningThreshold"})})," to issue a warning when the percentage of available disk space falls below the specified threshold"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"blocks",children:"Monitoring blocks"}),"\n",(0,a.jsx)(n.p,{children:"Another critical aspect of running a node is monitoring the production and processing of blocks. For that, Nethermind provides the following options:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-maxintervalwithoutprocessedblock",children:(0,a.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProcessedBlock"})})," to specify the max interval without processing a block before the node is considered unhealthy"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-maxintervalwithoutproducedblock",children:(0,a.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProducedBlock"})})," to specify the max interval without producing a block before the node is considered unhealthy"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"consensus-client",children:"Monitoring consensus client"}),"\n",(0,a.jsxs)(n.p,{children:["The health check service can also monitor the communication between Nethermind and the consensus client which can be configured by the ",(0,a.jsx)(n.a,{href:"/next/fundamentals/configuration#healthchecks-maxintervalclrequesttime",children:(0,a.jsx)(n.code,{children:"HealthChecks.MaxIntervalClRequestTime"})})," configuration option."]})]})}function d(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(4164);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var a=t(6540),o=t(4164),r=t(3104),s=t(6347),i=t(205),l=t(7485),c=t(1682),h=t(679);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function f(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=u(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!f({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,d]=p({queryString:t,groupId:o}),[b,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,h.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),g=(()=>{const e=c??b;return f({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!f({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),m(e)}),[d,m,r]),tabValues:r}}var m=t(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(4848);function k(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),h=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(c(n),s(o))},d=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:d,onClick:h,...r,className:(0,o.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function j(e){const n=b(e);return(0,x.jsxs)("div",{className:(0,o.A)("tabs-container",g.tabList),children:[(0,x.jsx)(k,{...n,...e}),(0,x.jsx)(v,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,x.jsx)(j,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>i});var a=t(6540);const o={},r=a.createContext(o);function s(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5ba94d59.2d126ce2.js b/assets/js/5ba94d59.29d64b2d.js similarity index 98% rename from assets/js/5ba94d59.2d126ce2.js rename to assets/js/5ba94d59.29d64b2d.js index ebf173e7d..8d381f961 100644 --- a/assets/js/5ba94d59.2d126ce2.js +++ b/assets/js/5ba94d59.29d64b2d.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[546],{9093:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var o=t(4848),r=t(8453);const i={title:"Layer 2 networks",sidebar_position:2},s=void 0,a={id:"get-started/running-node/l2-networks",title:"Layer 2 networks",description:"OP Stack",source:"@site/versioned_docs/version-1.29.0/get-started/running-node/l2-networks.md",sourceDirName:"get-started/running-node",slug:"/get-started/running-node/l2-networks",permalink:"/get-started/running-node/l2-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/get-started/running-node/l2-networks.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Layer 2 networks",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Consensus clients",permalink:"/get-started/running-node/consensus-clients"},next:{title:"Migrating from Geth",permalink:"/get-started/migrating-from-geth"}},d={},c=[{value:"OP Stack",id:"op-stack",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h2,{id:"op-stack",children:"OP Stack"}),"\n",(0,o.jsxs)(n.p,{children:["An Optimism node ",(0,o.jsx)(n.a,{href:"https://docs.optimism.io/builders/node-operators/architecture",children:"consists of two nodes"}),": op-node, a rollup node, analogous to a consensus client in Ethereum, paired with a Layer 2 (L2) execution client, and a Layer 1 (L1) node of a pair of execution and consensus clients."]}),"\n",(0,o.jsx)(n.admonition,{title:"Before you begin",type:"info",children:(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Running the OP stack requires access to an L1 node\u2014either on-premises or an external RPC provider. If you also plan to run an L1 node with Nethermind, note that you will need two Nethermind instances\u2014one for the L1 node and another for the L2 node, replacing op-geth."}),"\n",(0,o.jsx)(n.li,{children:"Depending on which OP Stack network you want to run on, the L1 node must be configured respectively. For instance, for OP Mainnet, the L1 node must run on Ethereum Mainnet. For OP Sepolia, on Sepolia."}),"\n",(0,o.jsxs)(n.li,{children:["Ensure your L1 node is up and running on the respective network before running the OP Stack. See ",(0,o.jsx)(n.a,{href:"/get-started/running-node/#ethereum",children:"Running a node on Ethereum"}),"."]}),"\n"]})}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Similar to the L1 node, the L2 instance of Nethermind also requires a ",(0,o.jsx)(n.a,{href:"/get-started/running-node/consensus-clients#configuring-json-rpc-interface",children:"properly configured"})," Engine API to communicate to op-node."]}),"\n",(0,o.jsx)(n.li,{children:"If both the L1 and L2 nodes run on the same machine, ensure they use different ports and data directories."}),"\n"]})}),"\n",(0,o.jsx)(n.p,{children:"To run Nethermind on the OP Mainnet, use the following command:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c op-mainnet \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,o.jsx)(n.p,{children:"Below is a sample command to run op-node paired with Nethermind:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"export L1_RPC_URL=... # The URL of the L1 node RPC interface\nexport L1_BEACON_URL=... # The URL of the L1 node Beacon interface\n\nop-node \\\n --l1=$L1_RPC_URL \\\n --l1.rpckind=standard \\\n --l1.beacon=$L1_BEACON_URL \\\n --l2=http://localhost:8551 \\\n --l2.jwt-secret=path/to/jwt.hex \\\n --syncmode=execution-layer \\\n --network=op-mainnet\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For the full list of the configuration options, see the ",(0,o.jsx)(n.a,{href:"https://docs.optimism.io/builders/node-operators/configuration/consensus-config",children:"op-node documentation"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>a});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[546],{9093:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var o=t(4848),r=t(8453);const i={title:"Layer 2 networks",sidebar_position:2},s=void 0,a={id:"get-started/running-node/l2-networks",title:"Layer 2 networks",description:"OP Stack",source:"@site/versioned_docs/version-1.29.0/get-started/running-node/l2-networks.md",sourceDirName:"get-started/running-node",slug:"/get-started/running-node/l2-networks",permalink:"/get-started/running-node/l2-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/get-started/running-node/l2-networks.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Layer 2 networks",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Consensus clients",permalink:"/get-started/running-node/consensus-clients"},next:{title:"Migrating from Geth",permalink:"/get-started/migrating-from-geth"}},d={},c=[{value:"OP Stack",id:"op-stack",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h2,{id:"op-stack",children:"OP Stack"}),"\n",(0,o.jsxs)(n.p,{children:["An Optimism node ",(0,o.jsx)(n.a,{href:"https://docs.optimism.io/builders/node-operators/architecture",children:"consists of two nodes"}),": op-node, a rollup node, analogous to a consensus client in Ethereum, paired with a Layer 2 (L2) execution client, and a Layer 1 (L1) node of a pair of execution and consensus clients."]}),"\n",(0,o.jsx)(n.admonition,{title:"Before you begin",type:"info",children:(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Running the OP stack requires access to an L1 node\u2014either on-premises or an external RPC provider. If you also plan to run an L1 node with Nethermind, note that you will need two Nethermind instances\u2014one for the L1 node and another for the L2 node, replacing op-geth."}),"\n",(0,o.jsx)(n.li,{children:"Depending on which OP Stack network you want to run on, the L1 node must be configured respectively. For instance, for OP Mainnet, the L1 node must run on Ethereum Mainnet. For OP Sepolia, on Sepolia."}),"\n",(0,o.jsxs)(n.li,{children:["Ensure your L1 node is up and running on the respective network before running the OP Stack. See ",(0,o.jsx)(n.a,{href:"/get-started/running-node/#ethereum",children:"Running a node on Ethereum"}),"."]}),"\n"]})}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Similar to the L1 node, the L2 instance of Nethermind also requires a ",(0,o.jsx)(n.a,{href:"/get-started/running-node/consensus-clients#configuring-json-rpc-interface",children:"properly configured"})," Engine API to communicate to op-node."]}),"\n",(0,o.jsx)(n.li,{children:"If both the L1 and L2 nodes run on the same machine, ensure they use different ports and data directories."}),"\n"]})}),"\n",(0,o.jsx)(n.p,{children:"To run Nethermind on the OP Mainnet, use the following command:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c op-mainnet \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,o.jsx)(n.p,{children:"Below is a sample command to run op-node paired with Nethermind:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"export L1_RPC_URL=... # The URL of the L1 node RPC interface\nexport L1_BEACON_URL=... # The URL of the L1 node Beacon interface\n\nop-node \\\n --l1=$L1_RPC_URL \\\n --l1.rpckind=standard \\\n --l1.beacon=$L1_BEACON_URL \\\n --l2=http://localhost:8551 \\\n --l2.jwt-secret=path/to/jwt.hex \\\n --syncmode=execution-layer \\\n --network=op-mainnet\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For the full list of the configuration options, see the ",(0,o.jsx)(n.a,{href:"https://docs.optimism.io/builders/node-operators/configuration/consensus-config",children:"op-node documentation"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>a});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5dfc1b45.2edc97e9.js b/assets/js/5dfc1b45.6ee2d261.js similarity index 99% rename from assets/js/5dfc1b45.2edc97e9.js rename to assets/js/5dfc1b45.6ee2d261.js index 3a8b00f16..4afa3354f 100644 --- a/assets/js/5dfc1b45.2edc97e9.js +++ b/assets/js/5dfc1b45.6ee2d261.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6065],{9934:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=s(4848),a=s(8453),l=s(1470),t=s(9365);const o={title:"personal namespace",sidebar_label:"personal",sidebar_position:6},c=void 0,i={id:"interacting/json-rpc-ns/personal",title:"personal namespace",description:"personal_importRawKey",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/personal.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/personal",permalink:"/1.26.0/interacting/json-rpc-ns/personal",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/personal.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:6,frontMatter:{title:"personal namespace",sidebar_label:"personal",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"parity",permalink:"/1.26.0/interacting/json-rpc-ns/parity"},next:{title:"proof",permalink:"/1.26.0/interacting/json-rpc-ns/proof"}},u={},d=[{value:"personal_importRawKey",id:"personal_importrawkey",level:3},{value:"personal_listAccounts",id:"personal_listaccounts",level:3},{value:"personal_lockAccount",id:"personal_lockaccount",level:3},{value:"personal_newAccount",id:"personal_newaccount",level:3},{value:"personal_unlockAccount",id:"personal_unlockaccount",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"personal_importrawkey",children:"personal_importRawKey"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"keyData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_importRawKey",\n "params": [keyData, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_listaccounts",children:"personal_listAccounts"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_listAccounts",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_lockaccount",children:"personal_lockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_lockAccount",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_newaccount",children:"personal_newAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_newAccount",\n "params": [passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_unlockaccount",children:"personal_unlockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_unlockAccount",\n "params": [address, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const a={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),a=s(4164),l=s(3104),t=s(6347),o=s(205),c=s(7485),i=s(1682),u=s(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:a}}=e;return{value:n,label:s,attributes:r,default:a}}))}(s);return function(e){const n=(0,i.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const a=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(a.location.search);n.set(l,e),a.replace({...a.location,search:n.toString()})}),[l,a])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:a}=e,l=p(e),[t,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[i,d]=j({queryString:s,groupId:a}),[m,x]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,l]=(0,u.Dv)(s);return[a,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:a}),b=(()=>{const e=i??m;return h({value:e,tabValues:l})?e:null})();(0,o.A)((()=>{b&&c(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),x(e)}),[d,x,l]),tabValues:l}}var x=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:o}=e;const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),u=e=>{const n=e.currentTarget,s=c.indexOf(n),a=o[s].value;a!==r&&(i(n),t(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":s},n),children:o.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:d,onClick:u,...l,className:(0,a.A)("tabs__item",b.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function g(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function A(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(g,{...n,...e})]})}function _(e){const n=(0,x.A)();return(0,f.jsx)(A,{...e,children:d(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>o});var r=s(6540);const a={},l=r.createContext(a);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6065],{9934:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=s(4848),a=s(8453),l=s(1470),t=s(9365);const o={title:"personal namespace",sidebar_label:"personal",sidebar_position:6},c=void 0,i={id:"interacting/json-rpc-ns/personal",title:"personal namespace",description:"personal_importRawKey",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/personal.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/personal",permalink:"/1.26.0/interacting/json-rpc-ns/personal",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/personal.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:6,frontMatter:{title:"personal namespace",sidebar_label:"personal",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"parity",permalink:"/1.26.0/interacting/json-rpc-ns/parity"},next:{title:"proof",permalink:"/1.26.0/interacting/json-rpc-ns/proof"}},u={},d=[{value:"personal_importRawKey",id:"personal_importrawkey",level:3},{value:"personal_listAccounts",id:"personal_listaccounts",level:3},{value:"personal_lockAccount",id:"personal_lockaccount",level:3},{value:"personal_newAccount",id:"personal_newaccount",level:3},{value:"personal_unlockAccount",id:"personal_unlockaccount",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"personal_importrawkey",children:"personal_importRawKey"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"keyData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_importRawKey",\n "params": [keyData, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_listaccounts",children:"personal_listAccounts"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_listAccounts",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_lockaccount",children:"personal_lockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_lockAccount",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_newaccount",children:"personal_newAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_newAccount",\n "params": [passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_unlockaccount",children:"personal_unlockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_unlockAccount",\n "params": [address, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const a={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),a=s(4164),l=s(3104),t=s(6347),o=s(205),c=s(7485),i=s(1682),u=s(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:a}}=e;return{value:n,label:s,attributes:r,default:a}}))}(s);return function(e){const n=(0,i.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const a=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(a.location.search);n.set(l,e),a.replace({...a.location,search:n.toString()})}),[l,a])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:a}=e,l=p(e),[t,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[i,d]=j({queryString:s,groupId:a}),[m,x]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,l]=(0,u.Dv)(s);return[a,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:a}),b=(()=>{const e=i??m;return h({value:e,tabValues:l})?e:null})();(0,o.A)((()=>{b&&c(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),x(e)}),[d,x,l]),tabValues:l}}var x=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:o}=e;const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),u=e=>{const n=e.currentTarget,s=c.indexOf(n),a=o[s].value;a!==r&&(i(n),t(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":s},n),children:o.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:d,onClick:u,...l,className:(0,a.A)("tabs__item",b.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function g(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function A(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(g,{...n,...e})]})}function _(e){const n=(0,x.A)();return(0,f.jsx)(A,{...e,children:d(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>o});var r=s(6540);const a={},l=r.createContext(a);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/60778a21.c9f8685d.js b/assets/js/60778a21.7a7061e1.js similarity index 99% rename from assets/js/60778a21.c9f8685d.js rename to assets/js/60778a21.7a7061e1.js index 507678b64..518c6151b 100644 --- a/assets/js/60778a21.c9f8685d.js +++ b/assets/js/60778a21.7a7061e1.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2709],{4267:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),a=t(8453),s=t(1470),l=t(9365);const o={title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},i=void 0,c={id:"interacting/json-rpc-ns/web3",title:"web3 namespace",description:"web3_clientVersion",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/web3.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/web3",permalink:"/1.28.0/interacting/json-rpc-ns/web3",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/web3.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:10,frontMatter:{title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"txpool",permalink:"/1.28.0/interacting/json-rpc-ns/txpool"},next:{title:"Metrics",permalink:"/1.28.0/monitoring/metrics/"}},u={},d=[{value:"web3_clientVersion",id:"web3_clientversion",level:3},{value:"web3_sha3",id:"web3_sha3",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"web3_clientversion",children:"web3_clientVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns the current client version."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_clientVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"web3_sha3",children:"web3_sha3"}),"\n",(0,r.jsx)(n.p,{children:"Returns Keccak of the given data."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_sha3",\n "params": [data]\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const a={tabItem:"tabItem_Ymn6"};var s=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>y});var r=t(6540),a=t(4164),s=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const a=(0,l.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(s),(0,r.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(a.location.search);n.set(s,e),a.replace({...a.location,search:n.toString()})}),[s,a])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s}))),[c,d]=b({queryString:t,groupId:a}),[m,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,s]=(0,u.Dv)(t);return[a,(0,r.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:a}),v=(()=>{const e=c??m;return h({value:e,tabValues:s})?e:null})();(0,o.A)((()=>{v&&i(v)}),[v]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)}),[d,f,s]),tabValues:s}}var f=t(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function x(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),a=o[t].value;a!==r&&(c(n),l(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...s,className:(0,a.A)("tabs__item",v.tabItem,s?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:s}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===s));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function w(e){const n=m(e);return(0,j.jsxs)("div",{className:(0,a.A)("tabs-container",v.tabList),children:[(0,j.jsx)(x,{...n,...e}),(0,j.jsx)(g,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,j.jsx)(w,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const a={},s=r.createContext(a);function l(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2709],{4267:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),a=t(8453),s=t(1470),l=t(9365);const o={title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},i=void 0,c={id:"interacting/json-rpc-ns/web3",title:"web3 namespace",description:"web3_clientVersion",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/web3.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/web3",permalink:"/1.28.0/interacting/json-rpc-ns/web3",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/web3.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:10,frontMatter:{title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"txpool",permalink:"/1.28.0/interacting/json-rpc-ns/txpool"},next:{title:"Metrics",permalink:"/1.28.0/monitoring/metrics/"}},u={},d=[{value:"web3_clientVersion",id:"web3_clientversion",level:3},{value:"web3_sha3",id:"web3_sha3",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"web3_clientversion",children:"web3_clientVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns the current client version."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_clientVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"web3_sha3",children:"web3_sha3"}),"\n",(0,r.jsx)(n.p,{children:"Returns Keccak of the given data."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_sha3",\n "params": [data]\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const a={tabItem:"tabItem_Ymn6"};var s=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>y});var r=t(6540),a=t(4164),s=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const a=(0,l.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(s),(0,r.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(a.location.search);n.set(s,e),a.replace({...a.location,search:n.toString()})}),[s,a])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s}))),[c,d]=b({queryString:t,groupId:a}),[m,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,s]=(0,u.Dv)(t);return[a,(0,r.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:a}),v=(()=>{const e=c??m;return h({value:e,tabValues:s})?e:null})();(0,o.A)((()=>{v&&i(v)}),[v]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)}),[d,f,s]),tabValues:s}}var f=t(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function x(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),a=o[t].value;a!==r&&(c(n),l(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...s,className:(0,a.A)("tabs__item",v.tabItem,s?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:s}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===s));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function w(e){const n=m(e);return(0,j.jsxs)("div",{className:(0,a.A)("tabs-container",v.tabList),children:[(0,j.jsx)(x,{...n,...e}),(0,j.jsx)(g,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,j.jsx)(w,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const a={},s=r.createContext(a);function l(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/61d4b285.ce0cd1c2.js b/assets/js/61d4b285.5b4bb0d2.js similarity index 99% rename from assets/js/61d4b285.ce0cd1c2.js rename to assets/js/61d4b285.5b4bb0d2.js index db8c6b646..853607061 100644 --- a/assets/js/61d4b285.ce0cd1c2.js +++ b/assets/js/61d4b285.5b4bb0d2.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5073],{130:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>d,toc:()=>l});var t=s(4848),i=s(8453);const r={title:"System requirements",sidebar_position:1},a=void 0,d={id:"get-started/system-requirements",title:"System requirements",description:"Supported operating systems",source:"@site/docs/get-started/system-requirements.md",sourceDirName:"get-started",slug:"/get-started/system-requirements",permalink:"/next/get-started/system-requirements",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/get-started/system-requirements.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"System requirements",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/next/"},next:{title:"Installing Nethermind",permalink:"/next/get-started/installing-nethermind"}},o={},l=[{value:"Supported operating systems",id:"supported-operating-systems",level:2},{value:"Hardware requirements",id:"hardware-requirements",level:2},{value:"Disk requirements",id:"disk-requirements",level:3},{value:"Database growth",id:"database-growth",level:4},{value:"Disk speed",id:"disk-speed",level:4},{value:"Sync modes and disk usage",id:"sync-modes-and-disk-usage",level:4}];function c(e){const n={a:"a",br:"br",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"supported-operating-systems",children:"Supported operating systems"}),"\n",(0,t.jsx)(n.p,{children:"Nethermind supports a broad range of modern operating systems (64-bit-only) including but not limited to:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Linux"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Alpine 3.17+"}),"\n",(0,t.jsx)(n.li,{children:"CentOS Stream 9+"}),"\n",(0,t.jsx)(n.li,{children:"Debian 11+"}),"\n",(0,t.jsx)(n.li,{children:"Fedora 37+"}),"\n",(0,t.jsx)(n.li,{children:"openSUSE 15+"}),"\n",(0,t.jsx)(n.li,{children:"RHEL 8+"}),"\n",(0,t.jsx)(n.li,{children:"SLES 15+"}),"\n",(0,t.jsx)(n.li,{children:"Ubuntu 20.04+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Windows"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Windows 10+"}),"\n",(0,t.jsx)(n.li,{children:"Windows Server 2012+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"macOS"})," 10.15+"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"hardware-requirements",children:"Hardware requirements"}),"\n",(0,t.jsx)(n.p,{children:"Suggested requirements can be found below."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Network"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Memory"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"CPU cores"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"4"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet archive"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"128 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Gnosis"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Energy Web"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Volta"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]})]})]}),"\n",(0,t.jsx)(n.h3,{id:"disk-requirements",children:"Disk requirements"}),"\n",(0,t.jsxs)(n.p,{children:["Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as NVMe or a fast SSD. However, ",(0,t.jsx)(n.strong,{children:"2\nTB is recommended"})," to minimize maintenance requirements. To choose a specific disk model, we recommend\nchecking out ",(0,t.jsx)(n.a,{href:"https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good",children:"this guide"}),".",(0,t.jsx)(n.br,{}),"\n","Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking.\nNonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic."]}),"\n",(0,t.jsx)(n.h4,{id:"database-growth",children:"Database growth"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind requires approximately 898 GB of disk space (as of Jan 2024) after a fresh Ethereum Mainnet sync using default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to bring it back to its optimal database size. For more info on managing node disk usage growth, see ",(0,t.jsx)(n.a,{href:"/next/fundamentals/database#reducing-database-size",children:"how to reduce database size"}),".",(0,t.jsx)(n.br,{}),"\n","Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements."]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/next/fundamentals/database#database-size",children:"Database size"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"disk-speed",children:"Disk speed"}),"\n",(0,t.jsx)(n.p,{children:"The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully."}),"\n",(0,t.jsx)(n.h4,{id:"sync-modes-and-disk-usage",children:"Sync modes and disk usage"}),"\n",(0,t.jsx)(n.p,{children:"A node can be run using different syncing options, and each option has different characteristics of disk space usage."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Archive node."})," This mode stores the full historical state for all blocks. As of July 2023, an archive node requires at least 14 TB of disk space, and it grows by approximately 60 GB per week."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Ancient barriers."})," Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Non-validator mode."})," This mode drops all historical receipts and bodies, but it cannot be used for validation."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/next/fundamentals/sync",children:"sync modes"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>d});var t=s(6540);const i={},r=t.createContext(i);function a(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5073],{130:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>d,toc:()=>l});var t=s(4848),i=s(8453);const r={title:"System requirements",sidebar_position:1},a=void 0,d={id:"get-started/system-requirements",title:"System requirements",description:"Supported operating systems",source:"@site/docs/get-started/system-requirements.md",sourceDirName:"get-started",slug:"/get-started/system-requirements",permalink:"/next/get-started/system-requirements",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/get-started/system-requirements.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"System requirements",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/next/"},next:{title:"Installing Nethermind",permalink:"/next/get-started/installing-nethermind"}},o={},l=[{value:"Supported operating systems",id:"supported-operating-systems",level:2},{value:"Hardware requirements",id:"hardware-requirements",level:2},{value:"Disk requirements",id:"disk-requirements",level:3},{value:"Database growth",id:"database-growth",level:4},{value:"Disk speed",id:"disk-speed",level:4},{value:"Sync modes and disk usage",id:"sync-modes-and-disk-usage",level:4}];function c(e){const n={a:"a",br:"br",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"supported-operating-systems",children:"Supported operating systems"}),"\n",(0,t.jsx)(n.p,{children:"Nethermind supports a broad range of modern operating systems (64-bit-only) including but not limited to:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Linux"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Alpine 3.17+"}),"\n",(0,t.jsx)(n.li,{children:"CentOS Stream 9+"}),"\n",(0,t.jsx)(n.li,{children:"Debian 11+"}),"\n",(0,t.jsx)(n.li,{children:"Fedora 37+"}),"\n",(0,t.jsx)(n.li,{children:"openSUSE 15+"}),"\n",(0,t.jsx)(n.li,{children:"RHEL 8+"}),"\n",(0,t.jsx)(n.li,{children:"SLES 15+"}),"\n",(0,t.jsx)(n.li,{children:"Ubuntu 20.04+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Windows"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Windows 10+"}),"\n",(0,t.jsx)(n.li,{children:"Windows Server 2012+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"macOS"})," 10.15+"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"hardware-requirements",children:"Hardware requirements"}),"\n",(0,t.jsx)(n.p,{children:"Suggested requirements can be found below."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Network"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Memory"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"CPU cores"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"4"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet archive"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"128 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Gnosis"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Energy Web"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Volta"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]})]})]}),"\n",(0,t.jsx)(n.h3,{id:"disk-requirements",children:"Disk requirements"}),"\n",(0,t.jsxs)(n.p,{children:["Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as NVMe or a fast SSD. However, ",(0,t.jsx)(n.strong,{children:"2\nTB is recommended"})," to minimize maintenance requirements. To choose a specific disk model, we recommend\nchecking out ",(0,t.jsx)(n.a,{href:"https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good",children:"this guide"}),".",(0,t.jsx)(n.br,{}),"\n","Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking.\nNonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic."]}),"\n",(0,t.jsx)(n.h4,{id:"database-growth",children:"Database growth"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind requires approximately 898 GB of disk space (as of Jan 2024) after a fresh Ethereum Mainnet sync using default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to bring it back to its optimal database size. For more info on managing node disk usage growth, see ",(0,t.jsx)(n.a,{href:"/next/fundamentals/database#reducing-database-size",children:"how to reduce database size"}),".",(0,t.jsx)(n.br,{}),"\n","Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements."]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/next/fundamentals/database#database-size",children:"Database size"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"disk-speed",children:"Disk speed"}),"\n",(0,t.jsx)(n.p,{children:"The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully."}),"\n",(0,t.jsx)(n.h4,{id:"sync-modes-and-disk-usage",children:"Sync modes and disk usage"}),"\n",(0,t.jsx)(n.p,{children:"A node can be run using different syncing options, and each option has different characteristics of disk space usage."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Archive node."})," This mode stores the full historical state for all blocks. As of July 2023, an archive node requires at least 14 TB of disk space, and it grows by approximately 60 GB per week."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Ancient barriers."})," Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Non-validator mode."})," This mode drops all historical receipts and bodies, but it cannot be used for validation."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/next/fundamentals/sync",children:"sync modes"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>d});var t=s(6540);const i={},r=t.createContext(i);function a(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/64af1a79.3cec1b6e.js b/assets/js/64af1a79.ab398527.js similarity index 99% rename from assets/js/64af1a79.3cec1b6e.js rename to assets/js/64af1a79.ab398527.js index 81dbac202..5a621ee65 100644 --- a/assets/js/64af1a79.3cec1b6e.js +++ b/assets/js/64af1a79.ab398527.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4182],{4338:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var s=r(4848),i=r(8453),l=r(1470),c=r(9365);const t={title:"proof namespace",sidebar_label:"proof",sidebar_position:7},d=void 0,a={id:"interacting/json-rpc-ns/proof",title:"proof namespace",description:"proof_getTransactionByHash",source:"@site/docs/interacting/json-rpc-ns/proof.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/proof",permalink:"/next/interacting/json-rpc-ns/proof",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/proof.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:7,frontMatter:{title:"proof namespace",sidebar_label:"proof",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"personal",permalink:"/next/interacting/json-rpc-ns/personal"},next:{title:"trace",permalink:"/next/interacting/json-rpc-ns/trace"}},o={},h=[{value:"proof_getTransactionByHash",id:"proof_gettransactionbyhash",level:3},{value:"proof_getTransactionReceipt",id:"proof_gettransactionreceipt",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"proof_gettransactionbyhash",children:"proof_getTransactionByHash"}),"\n",(0,s.jsxs)(n.p,{children:["This function returns the same result as ",(0,s.jsx)(n.code,{children:"eth_getTransactionReceipt"})," and also a tx proof, receipt proof and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionByHash",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transaction"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"accessList"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"chainId"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"hash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"input"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"isSystemTx"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mint"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nonce"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"r"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"s"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sourceHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"v"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"yParity"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"proof_gettransactionreceipt",children:"proof_getTransactionReceipt"}),"\n",(0,s.jsxs)(n.p,{children:["This function should return the same result as ",(0,s.jsx)(n.code,{children:"eth_call"})," and also proofs of all used accounts and their storages and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionReceipt",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receipt"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"contractAddress"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"error"}),": ",(0,s.jsx)(n.em,{children:"string"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logs"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"removed"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"topics"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logsBloom"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"root"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"status"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receiptProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},9365:(e,n,r)=>{r.d(n,{A:()=>c});r(6540);var s=r(4164);const i={tabItem:"tabItem_Ymn6"};var l=r(4848);function c(e){let{children:n,hidden:r,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,s.A)(i.tabItem,c),hidden:r,children:n})}},1470:(e,n,r)=>{r.d(n,{A:()=>T});var s=r(6540),i=r(4164),l=r(3104),c=r(6347),t=r(205),d=r(7485),a=r(1682),o=r(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:r}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:r,attributes:s,default:i}}=e;return{value:n,label:r,attributes:s,default:i}}))}(r);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,r])}function j(e){let{value:n,tabValues:r}=e;return r.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:r}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:r}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:n,groupId:r});return[(0,d.aZ)(l),(0,s.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:i}=e,l=x(e),[c,d]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=r.find((e=>e.default))??r[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:r,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(r);return[i,(0,s.useCallback)((e=>{r&&l.set(e)}),[r,l])]}({groupId:i}),g=(()=>{const e=a??m;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{g&&d(g)}),[g]);return{selectedValue:c,selectValue:(0,s.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=r(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=r(4848);function b(e){let{className:n,block:r,selectedValue:s,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,r=d.indexOf(n),i=t[r].value;i!==s&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const r=d.indexOf(e.currentTarget)+1;n=d[r]??d[0];break}case"ArrowLeft":{const r=d.indexOf(e.currentTarget)-1;n=d[r]??d[d.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":r},n),children:t.map((e=>{let{value:n,label:r,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":s===n}),children:r??n},n)}))})}function v(e){let{lazy:n,children:r,selectedValue:l}=e;const c=(Array.isArray(r)?r:[r]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,s.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,f.jsx)(b,{...n,...e}),(0,f.jsx)(v,{...n,...e})]})}function T(e){const n=(0,p.A)();return(0,f.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>t});var s=r(6540);const i={},l=s.createContext(i);function c(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4182],{4338:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var s=r(4848),i=r(8453),l=r(1470),c=r(9365);const t={title:"proof namespace",sidebar_label:"proof",sidebar_position:7},d=void 0,a={id:"interacting/json-rpc-ns/proof",title:"proof namespace",description:"proof_getTransactionByHash",source:"@site/docs/interacting/json-rpc-ns/proof.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/proof",permalink:"/next/interacting/json-rpc-ns/proof",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/proof.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:7,frontMatter:{title:"proof namespace",sidebar_label:"proof",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"personal",permalink:"/next/interacting/json-rpc-ns/personal"},next:{title:"trace",permalink:"/next/interacting/json-rpc-ns/trace"}},o={},h=[{value:"proof_getTransactionByHash",id:"proof_gettransactionbyhash",level:3},{value:"proof_getTransactionReceipt",id:"proof_gettransactionreceipt",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"proof_gettransactionbyhash",children:"proof_getTransactionByHash"}),"\n",(0,s.jsxs)(n.p,{children:["This function returns the same result as ",(0,s.jsx)(n.code,{children:"eth_getTransactionReceipt"})," and also a tx proof, receipt proof and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionByHash",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transaction"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"accessList"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"chainId"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"hash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"input"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"isSystemTx"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mint"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nonce"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"r"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"s"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sourceHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"v"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"yParity"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"proof_gettransactionreceipt",children:"proof_getTransactionReceipt"}),"\n",(0,s.jsxs)(n.p,{children:["This function should return the same result as ",(0,s.jsx)(n.code,{children:"eth_call"})," and also proofs of all used accounts and their storages and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionReceipt",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receipt"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"contractAddress"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"error"}),": ",(0,s.jsx)(n.em,{children:"string"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logs"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"removed"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"topics"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logsBloom"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"root"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"status"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receiptProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},9365:(e,n,r)=>{r.d(n,{A:()=>c});r(6540);var s=r(4164);const i={tabItem:"tabItem_Ymn6"};var l=r(4848);function c(e){let{children:n,hidden:r,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,s.A)(i.tabItem,c),hidden:r,children:n})}},1470:(e,n,r)=>{r.d(n,{A:()=>T});var s=r(6540),i=r(4164),l=r(3104),c=r(6347),t=r(205),d=r(7485),a=r(1682),o=r(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:r}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:r,attributes:s,default:i}}=e;return{value:n,label:r,attributes:s,default:i}}))}(r);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,r])}function j(e){let{value:n,tabValues:r}=e;return r.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:r}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:r}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:n,groupId:r});return[(0,d.aZ)(l),(0,s.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:i}=e,l=x(e),[c,d]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=r.find((e=>e.default))??r[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:r,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(r);return[i,(0,s.useCallback)((e=>{r&&l.set(e)}),[r,l])]}({groupId:i}),g=(()=>{const e=a??m;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{g&&d(g)}),[g]);return{selectedValue:c,selectValue:(0,s.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=r(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=r(4848);function b(e){let{className:n,block:r,selectedValue:s,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,r=d.indexOf(n),i=t[r].value;i!==s&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const r=d.indexOf(e.currentTarget)+1;n=d[r]??d[0];break}case"ArrowLeft":{const r=d.indexOf(e.currentTarget)-1;n=d[r]??d[d.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":r},n),children:t.map((e=>{let{value:n,label:r,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":s===n}),children:r??n},n)}))})}function v(e){let{lazy:n,children:r,selectedValue:l}=e;const c=(Array.isArray(r)?r:[r]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,s.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,f.jsx)(b,{...n,...e}),(0,f.jsx)(v,{...n,...e})]})}function T(e){const n=(0,p.A)();return(0,f.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>t});var s=r(6540);const i={},l=s.createContext(i);function c(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/64e9d9e1.ffd08445.js b/assets/js/64e9d9e1.ac327491.js similarity index 99% rename from assets/js/64e9d9e1.ffd08445.js rename to assets/js/64e9d9e1.ac327491.js index d5d09f06c..60dcf66e2 100644 --- a/assets/js/64e9d9e1.ffd08445.js +++ b/assets/js/64e9d9e1.ac327491.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[72],{9493:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),a=t(8453),s=t(1470),l=t(9365);const o={title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},i=void 0,c={id:"interacting/json-rpc-ns/web3",title:"web3 namespace",description:"web3_clientVersion",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/web3.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/web3",permalink:"/1.26.0/interacting/json-rpc-ns/web3",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/web3.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:10,frontMatter:{title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"txpool",permalink:"/1.26.0/interacting/json-rpc-ns/txpool"},next:{title:"Metrics",permalink:"/1.26.0/monitoring/metrics/"}},u={},d=[{value:"web3_clientVersion",id:"web3_clientversion",level:3},{value:"web3_sha3",id:"web3_sha3",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"web3_clientversion",children:"web3_clientVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns the current client version."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_clientVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"web3_sha3",children:"web3_sha3"}),"\n",(0,r.jsx)(n.p,{children:"Returns Keccak of the given data."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_sha3",\n "params": [data]\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const a={tabItem:"tabItem_Ymn6"};var s=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>y});var r=t(6540),a=t(4164),s=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const a=(0,l.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(s),(0,r.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(a.location.search);n.set(s,e),a.replace({...a.location,search:n.toString()})}),[s,a])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s}))),[c,d]=b({queryString:t,groupId:a}),[m,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,s]=(0,u.Dv)(t);return[a,(0,r.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:a}),v=(()=>{const e=c??m;return h({value:e,tabValues:s})?e:null})();(0,o.A)((()=>{v&&i(v)}),[v]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)}),[d,f,s]),tabValues:s}}var f=t(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function x(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),a=o[t].value;a!==r&&(c(n),l(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...s,className:(0,a.A)("tabs__item",v.tabItem,s?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:s}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===s));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function w(e){const n=m(e);return(0,j.jsxs)("div",{className:(0,a.A)("tabs-container",v.tabList),children:[(0,j.jsx)(x,{...n,...e}),(0,j.jsx)(g,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,j.jsx)(w,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const a={},s=r.createContext(a);function l(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[72],{9493:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),a=t(8453),s=t(1470),l=t(9365);const o={title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},i=void 0,c={id:"interacting/json-rpc-ns/web3",title:"web3 namespace",description:"web3_clientVersion",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/web3.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/web3",permalink:"/1.26.0/interacting/json-rpc-ns/web3",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/web3.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:10,frontMatter:{title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"txpool",permalink:"/1.26.0/interacting/json-rpc-ns/txpool"},next:{title:"Metrics",permalink:"/1.26.0/monitoring/metrics/"}},u={},d=[{value:"web3_clientVersion",id:"web3_clientversion",level:3},{value:"web3_sha3",id:"web3_sha3",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"web3_clientversion",children:"web3_clientVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns the current client version."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_clientVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"web3_sha3",children:"web3_sha3"}),"\n",(0,r.jsx)(n.p,{children:"Returns Keccak of the given data."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_sha3",\n "params": [data]\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const a={tabItem:"tabItem_Ymn6"};var s=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>y});var r=t(6540),a=t(4164),s=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const a=(0,l.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(s),(0,r.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(a.location.search);n.set(s,e),a.replace({...a.location,search:n.toString()})}),[s,a])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s}))),[c,d]=b({queryString:t,groupId:a}),[m,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,s]=(0,u.Dv)(t);return[a,(0,r.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:a}),v=(()=>{const e=c??m;return h({value:e,tabValues:s})?e:null})();(0,o.A)((()=>{v&&i(v)}),[v]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)}),[d,f,s]),tabValues:s}}var f=t(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function x(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),a=o[t].value;a!==r&&(c(n),l(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...s,className:(0,a.A)("tabs__item",v.tabItem,s?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:s}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===s));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function w(e){const n=m(e);return(0,j.jsxs)("div",{className:(0,a.A)("tabs-container",v.tabList),children:[(0,j.jsx)(x,{...n,...e}),(0,j.jsx)(g,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,j.jsx)(w,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const a={},s=r.createContext(a);function l(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/67a08dad.ec31c8aa.js b/assets/js/67a08dad.83867d17.js similarity index 99% rename from assets/js/67a08dad.ec31c8aa.js rename to assets/js/67a08dad.83867d17.js index 75e9edd65..5b8a4b663 100644 --- a/assets/js/67a08dad.ec31c8aa.js +++ b/assets/js/67a08dad.83867d17.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2478],{4458:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),a=t(8453),s=t(1470),l=t(9365);const o={title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},i=void 0,c={id:"interacting/json-rpc-ns/web3",title:"web3 namespace",description:"web3_clientVersion",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/web3.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/web3",permalink:"/interacting/json-rpc-ns/web3",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/web3.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:10,frontMatter:{title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"txpool",permalink:"/interacting/json-rpc-ns/txpool"},next:{title:"Metrics",permalink:"/monitoring/metrics/"}},u={},d=[{value:"web3_clientVersion",id:"web3_clientversion",level:3},{value:"web3_sha3",id:"web3_sha3",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"web3_clientversion",children:"web3_clientVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns the current client version."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_clientVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"web3_sha3",children:"web3_sha3"}),"\n",(0,r.jsx)(n.p,{children:"Returns Keccak of the given data."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_sha3",\n "params": [data]\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const a={tabItem:"tabItem_Ymn6"};var s=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>y});var r=t(6540),a=t(4164),s=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const a=(0,l.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(s),(0,r.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(a.location.search);n.set(s,e),a.replace({...a.location,search:n.toString()})}),[s,a])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s}))),[c,d]=b({queryString:t,groupId:a}),[m,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,s]=(0,u.Dv)(t);return[a,(0,r.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:a}),v=(()=>{const e=c??m;return h({value:e,tabValues:s})?e:null})();(0,o.A)((()=>{v&&i(v)}),[v]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)}),[d,f,s]),tabValues:s}}var f=t(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function x(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),a=o[t].value;a!==r&&(c(n),l(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...s,className:(0,a.A)("tabs__item",v.tabItem,s?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:s}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===s));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function w(e){const n=m(e);return(0,j.jsxs)("div",{className:(0,a.A)("tabs-container",v.tabList),children:[(0,j.jsx)(x,{...n,...e}),(0,j.jsx)(g,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,j.jsx)(w,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const a={},s=r.createContext(a);function l(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2478],{4458:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),a=t(8453),s=t(1470),l=t(9365);const o={title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},i=void 0,c={id:"interacting/json-rpc-ns/web3",title:"web3 namespace",description:"web3_clientVersion",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/web3.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/web3",permalink:"/interacting/json-rpc-ns/web3",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/web3.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:10,frontMatter:{title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"txpool",permalink:"/interacting/json-rpc-ns/txpool"},next:{title:"Metrics",permalink:"/monitoring/metrics/"}},u={},d=[{value:"web3_clientVersion",id:"web3_clientversion",level:3},{value:"web3_sha3",id:"web3_sha3",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"web3_clientversion",children:"web3_clientVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns the current client version."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_clientVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"web3_sha3",children:"web3_sha3"}),"\n",(0,r.jsx)(n.p,{children:"Returns Keccak of the given data."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_sha3",\n "params": [data]\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const a={tabItem:"tabItem_Ymn6"};var s=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>y});var r=t(6540),a=t(4164),s=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const a=(0,l.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(s),(0,r.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(a.location.search);n.set(s,e),a.replace({...a.location,search:n.toString()})}),[s,a])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s}))),[c,d]=b({queryString:t,groupId:a}),[m,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,s]=(0,u.Dv)(t);return[a,(0,r.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:a}),v=(()=>{const e=c??m;return h({value:e,tabValues:s})?e:null})();(0,o.A)((()=>{v&&i(v)}),[v]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)}),[d,f,s]),tabValues:s}}var f=t(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function x(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),a=o[t].value;a!==r&&(c(n),l(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...s,className:(0,a.A)("tabs__item",v.tabItem,s?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:s}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===s));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function w(e){const n=m(e);return(0,j.jsxs)("div",{className:(0,a.A)("tabs-container",v.tabList),children:[(0,j.jsx)(x,{...n,...e}),(0,j.jsx)(g,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,j.jsx)(w,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const a={},s=r.createContext(a);function l(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/67ada9d5.c69b3334.js b/assets/js/67ada9d5.e2017ffb.js similarity index 99% rename from assets/js/67ada9d5.c69b3334.js rename to assets/js/67ada9d5.e2017ffb.js index a3d7e8022..5013bf5fc 100644 --- a/assets/js/67ada9d5.c69b3334.js +++ b/assets/js/67ada9d5.e2017ffb.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3490],{3650:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=t(4848),i=t(8453);const o={title:"Performance tuning",sidebar_position:7},r=void 0,a={id:"fundamentals/performance-tuning",title:"Performance tuning",description:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.",source:"@site/versioned_docs/version-1.29.0/fundamentals/performance-tuning.md",sourceDirName:"fundamentals",slug:"/fundamentals/performance-tuning",permalink:"/fundamentals/performance-tuning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/performance-tuning.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:7,frontMatter:{title:"Performance tuning",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Pruning",permalink:"/fundamentals/pruning"},next:{title:"Private networks",permalink:"/fundamentals/private-networks"}},c={},d=[{value:"Peer discovery",id:"peer-discovery",level:2},{value:"Port forwarding",id:"port-forwarding",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Snap sync",id:"snap-sync",level:2},{value:"Old bodies and receipts",id:"old-bodies-and-receipts",level:2},{value:"Block processing time and attestation",id:"block-processing-time-and-attestation",level:2}];function l(e){const n={code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs."}),"\n",(0,s.jsx)(n.h2,{id:"peer-discovery",children:"Peer discovery"}),"\n",(0,s.jsxs)(n.p,{children:["To connect to the Ethereum network, Nethermind needs to maintain connections to other clients. The number of connections can be configured with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers "}),". The default value depends on the network. Increasing this number may reduce syncing time, while reducing this number may help with attestation performance.\nAlso, you can increase the rate at which a new connection is established with ",(0,s.jsx)(n.code,{children:"--Network.MaxOutgoingConnectPerSec "}),". The default value is 20 while 50 would be a reasonable higher value. This tends to reduce the snap sync time; however, some ISPs may throttle your Internet connection if you set this value too high. Also, some WiFi routers may hang if the value is set too high."]}),"\n",(0,s.jsx)(n.h2,{id:"port-forwarding",children:"Port forwarding"}),"\n",(0,s.jsxs)(n.p,{children:["While port forwarding is not strictly required, it helps significantly with finding peers and is essential for the network's overall health. The exact steps for port forwarding highly depend on your environment, router, and ISP. For most home configurations, automatic port forwarding can be turned on with ",(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true"}),".\nSome ISPs are more restrictive and do not support port forwarding and/or utilize provider-level NAT. In such cases, your best option is to use a VPN that supports port forwarding. Keep in mind that consensus clients need a separate port forwarding."]}),"\n",(0,s.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,s.jsx)(n.p,{children:"On the Ethereum mainnet, most of the syncing time is split into three phases: snap sync, old bodies, and old receipts. Strictly speaking, there are also fast sync, full sync, and state sync phases. However, they usually complete in less than a minute, with state sync usually taking up to 3 minutes."}),"\n",(0,s.jsx)(n.p,{children:"At the moment, the best test case sync time is 1 hour 50 minutes for all phases with the following configuration:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"CPU: AMD Ryzen 9 7950X"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Memory: 128GB RAM"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Storage: Intel Optane SSD 905P Series 900GB"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Network: 1 Gbps Internet with TorGuard VPN with WireGuard protocol. Both execution and consensus clients port forwarding are set up manually."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Command line options:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true\n--Network.MaxOutgoingConnectPerSec 50\n--Network.ProcessingThreadCount 32\n--Sync.TuneDbMode HeavyWrite\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"snap-sync",children:"Snap sync"}),"\n",(0,s.jsx)(n.p,{children:"Snap sync is the process of downloading the Ethereum state tree. After it is complete, and after the state sync phase, Nethermind can process and follow the chain. The fastest tested snap sync and state sync time is 25 minutes.\nThis phase is the most I/O-intensive sync phase, and therefore, assuming a fast internet, the sync time highly depends on your SSD's write speed. Remember that most SSDs only advertise peak write speed, usually above 5GB/s. However, they tend to slow down significantly to around 0.5GB/s (or even less for a QLC SSD) after a few seconds. Therefore, look for SSDs with high sustained write speed."}),"\n",(0,s.jsxs)(n.p,{children:["Also, ensuring your SSD is sufficiently cooled to prevent thermal throttling is essential. This is often overlooked as most workloads rarely stress SSD as much; however, to reduce sync time, Nethermind will utilize your SSD to its limit. If, for whatever reason, you need to minimize the I/O load, you can specify a rate limit with ",(0,s.jsx)(n.code,{children:"--Db.MaxBytesPerSec 1000000000"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Nethermind temporarily changes the database configuration during sync to optimize it for writing, notably the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode HeavyWrite"})," is turned on by default. On some systems with slow SSDs, the use of the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode AggressiveHeavyWrite"})," may boost. Also, the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode DisableCompaction"})," can be used to disable compaction altogether. This is likely faster for systems using entry-level NVMe SSDs and is also useful to extend the lifespan of your SSD as it provides the lowest total writes possible. However, it uses about 3GB of extra memory during snap sync. The state sync phase may appear to hang for about 10 minutes as the whole database compacts for the first time after snap sync."]}),"\n",(0,s.jsxs)(n.p,{children:["If you are running on a VPS with artificially capped IOPS, or you are using SATA SSD (which is highly not recommended), increasing the state DB block size with ",(0,s.jsx)(n.code,{children:"--Db.StateDbBlockSize 16384"})," may help to reduce snap sync time. However, this negatively affects block processing time. An alternative is to turn on compaction readahead with ",(0,s.jsx)(n.code,{children:"--Db.CompactionReadAhead 128000"}),"; however, this may take up a few extra GB of memory depending on the readahead value."]}),"\n",(0,s.jsx)(n.h2,{id:"old-bodies-and-receipts",children:"Old bodies and receipts"}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and old receipts are the process of downloading block bodies and receipts. This is required for some RPC methods, such as ",(0,s.jsx)(n.code,{children:"eth_getLogs"}),", and for consensus clients to work correctly. If you don't need them, skip this phase with"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync false\n--Sync.DownloadReceiptsInFastSync false\n--Sync.NonValidatorNode true\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and receipts are mainly limited by your Internet connection. With a 1Gbps connection, they consume around 250MB/s and 500MB/s of writes, respectively, which is generally reasonable for most PCIE SSDs. On older systems or VPS with low single thread performance and high Internet speed, the block body deserialization may be a bottleneck, in which case, you can increase the number of network processing threads with ",(0,s.jsx)(n.code,{children:"--Network.ProcessingThreadCount 32"}),". However, this may impact block processing time."]}),"\n",(0,s.jsx)(n.h2,{id:"block-processing-time-and-attestation",children:"Block processing time and attestation"}),"\n",(0,s.jsxs)(n.p,{children:["Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time.\nTo help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option ",(0,s.jsx)(n.code,{children:"--Init.MemoryHint 2000000000"}),". If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time."]}),"\n",(0,s.jsxs)(n.p,{children:["It is also possible to disable compression of the state DB with ",(0,s.jsx)(n.code,{children:"--Db.StateDbDisableCompression true"})," that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers 20"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3490],{3650:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=t(4848),i=t(8453);const o={title:"Performance tuning",sidebar_position:7},r=void 0,a={id:"fundamentals/performance-tuning",title:"Performance tuning",description:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.",source:"@site/versioned_docs/version-1.29.0/fundamentals/performance-tuning.md",sourceDirName:"fundamentals",slug:"/fundamentals/performance-tuning",permalink:"/fundamentals/performance-tuning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/performance-tuning.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:7,frontMatter:{title:"Performance tuning",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Pruning",permalink:"/fundamentals/pruning"},next:{title:"Private networks",permalink:"/fundamentals/private-networks"}},c={},d=[{value:"Peer discovery",id:"peer-discovery",level:2},{value:"Port forwarding",id:"port-forwarding",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Snap sync",id:"snap-sync",level:2},{value:"Old bodies and receipts",id:"old-bodies-and-receipts",level:2},{value:"Block processing time and attestation",id:"block-processing-time-and-attestation",level:2}];function l(e){const n={code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs."}),"\n",(0,s.jsx)(n.h2,{id:"peer-discovery",children:"Peer discovery"}),"\n",(0,s.jsxs)(n.p,{children:["To connect to the Ethereum network, Nethermind needs to maintain connections to other clients. The number of connections can be configured with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers "}),". The default value depends on the network. Increasing this number may reduce syncing time, while reducing this number may help with attestation performance.\nAlso, you can increase the rate at which a new connection is established with ",(0,s.jsx)(n.code,{children:"--Network.MaxOutgoingConnectPerSec "}),". The default value is 20 while 50 would be a reasonable higher value. This tends to reduce the snap sync time; however, some ISPs may throttle your Internet connection if you set this value too high. Also, some WiFi routers may hang if the value is set too high."]}),"\n",(0,s.jsx)(n.h2,{id:"port-forwarding",children:"Port forwarding"}),"\n",(0,s.jsxs)(n.p,{children:["While port forwarding is not strictly required, it helps significantly with finding peers and is essential for the network's overall health. The exact steps for port forwarding highly depend on your environment, router, and ISP. For most home configurations, automatic port forwarding can be turned on with ",(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true"}),".\nSome ISPs are more restrictive and do not support port forwarding and/or utilize provider-level NAT. In such cases, your best option is to use a VPN that supports port forwarding. Keep in mind that consensus clients need a separate port forwarding."]}),"\n",(0,s.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,s.jsx)(n.p,{children:"On the Ethereum mainnet, most of the syncing time is split into three phases: snap sync, old bodies, and old receipts. Strictly speaking, there are also fast sync, full sync, and state sync phases. However, they usually complete in less than a minute, with state sync usually taking up to 3 minutes."}),"\n",(0,s.jsx)(n.p,{children:"At the moment, the best test case sync time is 1 hour 50 minutes for all phases with the following configuration:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"CPU: AMD Ryzen 9 7950X"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Memory: 128GB RAM"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Storage: Intel Optane SSD 905P Series 900GB"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Network: 1 Gbps Internet with TorGuard VPN with WireGuard protocol. Both execution and consensus clients port forwarding are set up manually."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Command line options:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true\n--Network.MaxOutgoingConnectPerSec 50\n--Network.ProcessingThreadCount 32\n--Sync.TuneDbMode HeavyWrite\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"snap-sync",children:"Snap sync"}),"\n",(0,s.jsx)(n.p,{children:"Snap sync is the process of downloading the Ethereum state tree. After it is complete, and after the state sync phase, Nethermind can process and follow the chain. The fastest tested snap sync and state sync time is 25 minutes.\nThis phase is the most I/O-intensive sync phase, and therefore, assuming a fast internet, the sync time highly depends on your SSD's write speed. Remember that most SSDs only advertise peak write speed, usually above 5GB/s. However, they tend to slow down significantly to around 0.5GB/s (or even less for a QLC SSD) after a few seconds. Therefore, look for SSDs with high sustained write speed."}),"\n",(0,s.jsxs)(n.p,{children:["Also, ensuring your SSD is sufficiently cooled to prevent thermal throttling is essential. This is often overlooked as most workloads rarely stress SSD as much; however, to reduce sync time, Nethermind will utilize your SSD to its limit. If, for whatever reason, you need to minimize the I/O load, you can specify a rate limit with ",(0,s.jsx)(n.code,{children:"--Db.MaxBytesPerSec 1000000000"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Nethermind temporarily changes the database configuration during sync to optimize it for writing, notably the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode HeavyWrite"})," is turned on by default. On some systems with slow SSDs, the use of the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode AggressiveHeavyWrite"})," may boost. Also, the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode DisableCompaction"})," can be used to disable compaction altogether. This is likely faster for systems using entry-level NVMe SSDs and is also useful to extend the lifespan of your SSD as it provides the lowest total writes possible. However, it uses about 3GB of extra memory during snap sync. The state sync phase may appear to hang for about 10 minutes as the whole database compacts for the first time after snap sync."]}),"\n",(0,s.jsxs)(n.p,{children:["If you are running on a VPS with artificially capped IOPS, or you are using SATA SSD (which is highly not recommended), increasing the state DB block size with ",(0,s.jsx)(n.code,{children:"--Db.StateDbBlockSize 16384"})," may help to reduce snap sync time. However, this negatively affects block processing time. An alternative is to turn on compaction readahead with ",(0,s.jsx)(n.code,{children:"--Db.CompactionReadAhead 128000"}),"; however, this may take up a few extra GB of memory depending on the readahead value."]}),"\n",(0,s.jsx)(n.h2,{id:"old-bodies-and-receipts",children:"Old bodies and receipts"}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and old receipts are the process of downloading block bodies and receipts. This is required for some RPC methods, such as ",(0,s.jsx)(n.code,{children:"eth_getLogs"}),", and for consensus clients to work correctly. If you don't need them, skip this phase with"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync false\n--Sync.DownloadReceiptsInFastSync false\n--Sync.NonValidatorNode true\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and receipts are mainly limited by your Internet connection. With a 1Gbps connection, they consume around 250MB/s and 500MB/s of writes, respectively, which is generally reasonable for most PCIE SSDs. On older systems or VPS with low single thread performance and high Internet speed, the block body deserialization may be a bottleneck, in which case, you can increase the number of network processing threads with ",(0,s.jsx)(n.code,{children:"--Network.ProcessingThreadCount 32"}),". However, this may impact block processing time."]}),"\n",(0,s.jsx)(n.h2,{id:"block-processing-time-and-attestation",children:"Block processing time and attestation"}),"\n",(0,s.jsxs)(n.p,{children:["Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time.\nTo help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option ",(0,s.jsx)(n.code,{children:"--Init.MemoryHint 2000000000"}),". If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time."]}),"\n",(0,s.jsxs)(n.p,{children:["It is also possible to disable compression of the state DB with ",(0,s.jsx)(n.code,{children:"--Db.StateDbDisableCompression true"})," that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers 20"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6aab6db7.246c2f09.js b/assets/js/6aab6db7.5f86631d.js similarity index 99% rename from assets/js/6aab6db7.246c2f09.js rename to assets/js/6aab6db7.5f86631d.js index c3ad60e96..a166f7f3d 100644 --- a/assets/js/6aab6db7.246c2f09.js +++ b/assets/js/6aab6db7.5f86631d.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8326],{6756:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),s=t(8453);const i={title:"JSON-RPC server",sidebar_position:0},r=void 0,c={id:"interacting/json-rpc-server",title:"JSON-RPC server",description:"Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over HTTP, WebSocket, and IPC socket transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the JSON-RPC configuration options.",source:"@site/docs/interacting/json-rpc-server.md",sourceDirName:"interacting",slug:"/interacting/json-rpc-server",permalink:"/next/interacting/json-rpc-server",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-server.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"JSON-RPC server",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Private networks",permalink:"/next/fundamentals/private-networks"},next:{title:"admin",permalink:"/next/interacting/json-rpc-ns/admin"}},a={},d=[{value:"Transports",id:"transports",level:2},{value:"HTTP",id:"http",level:3},{value:"WebSocket",id:"websocket",level:3},{value:"IPC socket",id:"ipc-socket",level:3},{value:"Engine API",id:"engine-api",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over ",(0,o.jsx)(n.a,{href:"#http",children:"HTTP"}),", ",(0,o.jsx)(n.a,{href:"#websocket",children:"WebSocket"}),", and ",(0,o.jsx)(n.a,{href:"#ipc-socket",children:"IPC socket"})," transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the ",(0,o.jsx)(n.a,{href:"/next/fundamentals/configuration#jsonrpc",children:"JSON-RPC configuration options"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The JSON-RPC API methods are grouped into several categories (namespaces) depending on their purpose. All API method names are composed of the namespace and the actual method name in that namespace. For instance, the ",(0,o.jsx)(n.code,{children:"eth_call"})," method belongs to the ",(0,o.jsx)(n.code,{children:"eth"})," namespace. See the sidebar for all supported namespaces and methods."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["Not all of the JSON-RPC namespaces are enabled by default. Instead, they must be enabled explicitly with the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})," command line option. Otherwise, error code ",(0,o.jsx)(n.code,{children:"-32600"})," is returned. The enabled namespaces can be found in the configuration file specified with the ",(0,o.jsx)(n.code,{children:"--config"})," command line option."]})}),"\n",(0,o.jsx)(n.h2,{id:"transports",children:"Transports"}),"\n",(0,o.jsxs)(n.admonition,{type:"tip",children:[(0,o.jsx)(n.p,{children:"The right choice of transport depends on the specific use case."}),(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"HTTP is a familiar and idempotent transport that closes connections between requests and can, therefore, have lower overall overhead for a relatively low number of requests."}),"\n",(0,o.jsx)(n.li,{children:"WebSocket provides a continuous open channel that enables event subscriptions and streaming and handles large volumes of requests with more negligible per-message overhead."}),"\n",(0,o.jsx)(n.li,{children:"IPC is generally the most secure as it is limited to local interactions and cannot be exposed to external traffic. It can also be used for event subscriptions."}),"\n"]})]}),"\n",(0,o.jsx)(n.h3,{id:"http",children:"HTTP"}),"\n",(0,o.jsxs)(n.p,{children:["HTTP is the most widely used transport for Nethermind. To enable the HTTP server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Enabled true"})," command line option. By default, Nethermind uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8545"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Host"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.Port"})," command line options, respectively."]}),"\n",(0,o.jsx)(n.h3,{id:"websocket",children:"WebSocket"}),"\n",(0,o.jsxs)(n.p,{children:["The configuration of the WebSocket server follows the same pattern as the HTTP server. The WebSocket server is enabled automatically when the HTTP server is enabled and uses the same host and port. To disable the WebSocket server, use the ",(0,o.jsx)(n.code,{children:"--Init.WebSocketsEnabled false"})," command line option. To use a different a port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort"})," command line option."]}),"\n",(0,o.jsx)(n.h3,{id:"ipc-socket",children:"IPC socket"}),"\n",(0,o.jsxs)(n.p,{children:["Nethermind uses IPC based on Unix domain socket. To enable the IPC server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath path/to/ipc"})," command line option. If the ",(0,o.jsx)(n.code,{children:"path/to/ipc"})," doesn't exist, Nethermind creates one."]}),"\n",(0,o.jsx)(n.h2,{id:"engine-api",children:"Engine API"}),"\n",(0,o.jsx)(n.p,{children:"The Engine API is a set of RPC methods that enable communication between an execution and consensus client. The clients call these methods automatically when they need to exchange information. Engine API is enabled automatically by default and is not designed to be exposed to the user."}),"\n",(0,o.jsxs)(n.p,{children:["By default, the Engine API uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8551"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," command line options, respectively. For example, this can be useful when execution and consensus clients are on different machines."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["When the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," option is specified, the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," option must be specified as well."]})}),"\n",(0,o.jsxs)(n.p,{children:["The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at ",(0,o.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory. To use a different path, specify the ",(0,o.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option."]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var o=t(6540);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8326],{6756:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),s=t(8453);const i={title:"JSON-RPC server",sidebar_position:0},r=void 0,c={id:"interacting/json-rpc-server",title:"JSON-RPC server",description:"Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over HTTP, WebSocket, and IPC socket transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the JSON-RPC configuration options.",source:"@site/docs/interacting/json-rpc-server.md",sourceDirName:"interacting",slug:"/interacting/json-rpc-server",permalink:"/next/interacting/json-rpc-server",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-server.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"JSON-RPC server",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Private networks",permalink:"/next/fundamentals/private-networks"},next:{title:"admin",permalink:"/next/interacting/json-rpc-ns/admin"}},a={},d=[{value:"Transports",id:"transports",level:2},{value:"HTTP",id:"http",level:3},{value:"WebSocket",id:"websocket",level:3},{value:"IPC socket",id:"ipc-socket",level:3},{value:"Engine API",id:"engine-api",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over ",(0,o.jsx)(n.a,{href:"#http",children:"HTTP"}),", ",(0,o.jsx)(n.a,{href:"#websocket",children:"WebSocket"}),", and ",(0,o.jsx)(n.a,{href:"#ipc-socket",children:"IPC socket"})," transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the ",(0,o.jsx)(n.a,{href:"/next/fundamentals/configuration#jsonrpc",children:"JSON-RPC configuration options"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The JSON-RPC API methods are grouped into several categories (namespaces) depending on their purpose. All API method names are composed of the namespace and the actual method name in that namespace. For instance, the ",(0,o.jsx)(n.code,{children:"eth_call"})," method belongs to the ",(0,o.jsx)(n.code,{children:"eth"})," namespace. See the sidebar for all supported namespaces and methods."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["Not all of the JSON-RPC namespaces are enabled by default. Instead, they must be enabled explicitly with the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})," command line option. Otherwise, error code ",(0,o.jsx)(n.code,{children:"-32600"})," is returned. The enabled namespaces can be found in the configuration file specified with the ",(0,o.jsx)(n.code,{children:"--config"})," command line option."]})}),"\n",(0,o.jsx)(n.h2,{id:"transports",children:"Transports"}),"\n",(0,o.jsxs)(n.admonition,{type:"tip",children:[(0,o.jsx)(n.p,{children:"The right choice of transport depends on the specific use case."}),(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"HTTP is a familiar and idempotent transport that closes connections between requests and can, therefore, have lower overall overhead for a relatively low number of requests."}),"\n",(0,o.jsx)(n.li,{children:"WebSocket provides a continuous open channel that enables event subscriptions and streaming and handles large volumes of requests with more negligible per-message overhead."}),"\n",(0,o.jsx)(n.li,{children:"IPC is generally the most secure as it is limited to local interactions and cannot be exposed to external traffic. It can also be used for event subscriptions."}),"\n"]})]}),"\n",(0,o.jsx)(n.h3,{id:"http",children:"HTTP"}),"\n",(0,o.jsxs)(n.p,{children:["HTTP is the most widely used transport for Nethermind. To enable the HTTP server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Enabled true"})," command line option. By default, Nethermind uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8545"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Host"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.Port"})," command line options, respectively."]}),"\n",(0,o.jsx)(n.h3,{id:"websocket",children:"WebSocket"}),"\n",(0,o.jsxs)(n.p,{children:["The configuration of the WebSocket server follows the same pattern as the HTTP server. The WebSocket server is enabled automatically when the HTTP server is enabled and uses the same host and port. To disable the WebSocket server, use the ",(0,o.jsx)(n.code,{children:"--Init.WebSocketsEnabled false"})," command line option. To use a different a port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort"})," command line option."]}),"\n",(0,o.jsx)(n.h3,{id:"ipc-socket",children:"IPC socket"}),"\n",(0,o.jsxs)(n.p,{children:["Nethermind uses IPC based on Unix domain socket. To enable the IPC server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath path/to/ipc"})," command line option. If the ",(0,o.jsx)(n.code,{children:"path/to/ipc"})," doesn't exist, Nethermind creates one."]}),"\n",(0,o.jsx)(n.h2,{id:"engine-api",children:"Engine API"}),"\n",(0,o.jsx)(n.p,{children:"The Engine API is a set of RPC methods that enable communication between an execution and consensus client. The clients call these methods automatically when they need to exchange information. Engine API is enabled automatically by default and is not designed to be exposed to the user."}),"\n",(0,o.jsxs)(n.p,{children:["By default, the Engine API uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8551"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," command line options, respectively. For example, this can be useful when execution and consensus clients are on different machines."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["When the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," option is specified, the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," option must be specified as well."]})}),"\n",(0,o.jsxs)(n.p,{children:["The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at ",(0,o.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory. To use a different path, specify the ",(0,o.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option."]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var o=t(6540);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6ad729b4.c3c2d1de.js b/assets/js/6ad729b4.f384ecae.js similarity index 99% rename from assets/js/6ad729b4.c3c2d1de.js rename to assets/js/6ad729b4.f384ecae.js index 468b59896..ad8bcbb0c 100644 --- a/assets/js/6ad729b4.c3c2d1de.js +++ b/assets/js/6ad729b4.f384ecae.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4298],{8938:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const o={title:"Aura-based validators",sidebar_position:0},s=void 0,a={id:"validators/aura",title:"Aura-based validators",description:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.",source:"@site/versioned_docs/version-1.27.0/validators/aura.md",sourceDirName:"validators",slug:"/validators/aura",permalink:"/1.27.0/validators/aura",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/validators/aura.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Aura-based validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Validators",permalink:"/1.27.0/validators/"},next:{title:"Building from source",permalink:"/1.27.0/developers/building-from-source"}},c={},d=[{value:"Configuring a Docker container",id:"configuring-a-docker-container",level:2},{value:"Configuring keyfile",id:"configuring-keyfile",level:2},{value:"Configuration settings",id:"configuration-settings",level:2},{value:"Running the validator",id:"running-the-validator",level:2}];function l(e){const n={admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Your machine's clock has to be synchronized. Otherwise, you might miss block sealing. By default, the block time is set to 5 seconds."})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-a-docker-container",children:"Configuring a Docker container"}),"\n",(0,r.jsx)(n.p,{children:"The example below shows how to configure a Docker container for an Aura-based validator on the Energy Web chain:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n nethermind-validator:\n image: nethermind/nethermind:latest\n container_name: nethermind-validator\n restart: unless-stopped\n ports:\n - 8545:8545\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n environment:\n - NETHERMIND_CONFIG=energyweb\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-keyfile",children:"Configuring keyfile"}),"\n",(0,r.jsxs)(n.p,{children:["Make sure that the keyfile name contains the public key (address). Otherwise, Nethermind doesn't recognize it as such.\nFor instance, a keyfile can be named ",(0,r.jsx)(n.code,{children:"key-0x1234567890123456789012345678901234567890"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The keyfile must be stored in the ",(0,r.jsx)(n.code,{children:"keystore"})," directory located in the Nethermind base data directory."]}),"\n",(0,r.jsx)(n.h2,{id:"configuration-settings",children:"Configuration settings"}),"\n",(0,r.jsx)(n.p,{children:"Here is an example of recommended settings for a validator. The most convenient way to configure these settings is either defining them in the configuration file or passing them as environment variables."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.IsMining"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.MemoryHint"}),": Can be left unspecified. It's recommended to configure it accordingly to the machine specification(for Eneergy Web, 768000000 is enough)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"EthStats"})," namespace parameters if you want to report node status to Ethstats for your network."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Metrics"})," namespace parameters to enable node monitoring."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.PasswordFiles"}),": The path to the file containing the password for the mining private key."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.UnlockAccounts"}),": An array of accounts. Provide the miner public address here."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"}),": The miner public address should be provided here as well."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Aura.ForceSealing"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Merge.Enabled"}),": ",(0,r.jsx)(n.code,{children:"false"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Here's an example of above settings in the Energy Web configuration file:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",metastring:'title="energyweb.cfg"',children:'{\n "Init": {\n "ChainSpecPath": "chainspec/energyweb.json",\n "GenesisHash": "0x0b6d3e680af2fc525392c720666cce58e3d8e6fe75ba4b48cb36bcc69039229b",\n "BaseDbPath": "nethermind_db/energyweb",\n "LogFileName": "energyweb.log",\n "MemoryHint": 768000000\n },\n "Sync": {\n "FastSync": true,\n "PivotNumber": 26940000,\n "PivotHash": "0x8835983de9578a4355313afd2a43d8eada6f2a4ddbd9c51da103e0d5f53c4d8b",\n "PivotTotalDifficulty": "9167206964850082205703311924211835616257898274",\n "FastBlocks": true,\n "UseGethLimitsInFastBlocks": false,\n "FastSyncCatchUpHeightDelta": 10000000000\n },\n "EthStats": {\n "Enabled": true,\n "Name": "Nethermind Energy Web",\n "Secret": "secret...",\n "Url": "ws://localhost:3000/api"\n },\n "Metrics": {\n "Enabled": true,\n "NodeName": "Energy Web",\n "PushGatewayUrl": "http://localhost:9091/metrics"\n },\n "Mining": {\n "MinGasPrice": 1\n },\n "Merge": {\n "Enabled": false\n },\n "Aura": {\n "ForceSealing": true\n },\n "KeyStore": {\n "PasswordFiles": ["keystore/password"],\n "UnlockAccounts": ["0x..."],\n "BlockAuthorAccount": "0x..." \n },\n}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"running-the-validator",children:"Running the validator"}),"\n",(0,r.jsxs)(n.p,{children:["The above Docker Compose file can be run from the directory the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," is located in as follows:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose up -d\n"})}),"\n",(0,r.jsx)(n.p,{children:"To check the logs and verify the sealing of blocks, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose logs -f nethermind-validator\n"})})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>a});var r=i(6540);const t={},o=r.createContext(t);function s(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4298],{8938:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const o={title:"Aura-based validators",sidebar_position:0},s=void 0,a={id:"validators/aura",title:"Aura-based validators",description:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.",source:"@site/versioned_docs/version-1.27.0/validators/aura.md",sourceDirName:"validators",slug:"/validators/aura",permalink:"/1.27.0/validators/aura",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/validators/aura.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Aura-based validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Validators",permalink:"/1.27.0/validators/"},next:{title:"Building from source",permalink:"/1.27.0/developers/building-from-source"}},c={},d=[{value:"Configuring a Docker container",id:"configuring-a-docker-container",level:2},{value:"Configuring keyfile",id:"configuring-keyfile",level:2},{value:"Configuration settings",id:"configuration-settings",level:2},{value:"Running the validator",id:"running-the-validator",level:2}];function l(e){const n={admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Your machine's clock has to be synchronized. Otherwise, you might miss block sealing. By default, the block time is set to 5 seconds."})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-a-docker-container",children:"Configuring a Docker container"}),"\n",(0,r.jsx)(n.p,{children:"The example below shows how to configure a Docker container for an Aura-based validator on the Energy Web chain:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n nethermind-validator:\n image: nethermind/nethermind:latest\n container_name: nethermind-validator\n restart: unless-stopped\n ports:\n - 8545:8545\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n environment:\n - NETHERMIND_CONFIG=energyweb\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-keyfile",children:"Configuring keyfile"}),"\n",(0,r.jsxs)(n.p,{children:["Make sure that the keyfile name contains the public key (address). Otherwise, Nethermind doesn't recognize it as such.\nFor instance, a keyfile can be named ",(0,r.jsx)(n.code,{children:"key-0x1234567890123456789012345678901234567890"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The keyfile must be stored in the ",(0,r.jsx)(n.code,{children:"keystore"})," directory located in the Nethermind base data directory."]}),"\n",(0,r.jsx)(n.h2,{id:"configuration-settings",children:"Configuration settings"}),"\n",(0,r.jsx)(n.p,{children:"Here is an example of recommended settings for a validator. The most convenient way to configure these settings is either defining them in the configuration file or passing them as environment variables."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.IsMining"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.MemoryHint"}),": Can be left unspecified. It's recommended to configure it accordingly to the machine specification(for Eneergy Web, 768000000 is enough)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"EthStats"})," namespace parameters if you want to report node status to Ethstats for your network."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Metrics"})," namespace parameters to enable node monitoring."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.PasswordFiles"}),": The path to the file containing the password for the mining private key."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.UnlockAccounts"}),": An array of accounts. Provide the miner public address here."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"}),": The miner public address should be provided here as well."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Aura.ForceSealing"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Merge.Enabled"}),": ",(0,r.jsx)(n.code,{children:"false"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Here's an example of above settings in the Energy Web configuration file:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",metastring:'title="energyweb.cfg"',children:'{\n "Init": {\n "ChainSpecPath": "chainspec/energyweb.json",\n "GenesisHash": "0x0b6d3e680af2fc525392c720666cce58e3d8e6fe75ba4b48cb36bcc69039229b",\n "BaseDbPath": "nethermind_db/energyweb",\n "LogFileName": "energyweb.log",\n "MemoryHint": 768000000\n },\n "Sync": {\n "FastSync": true,\n "PivotNumber": 26940000,\n "PivotHash": "0x8835983de9578a4355313afd2a43d8eada6f2a4ddbd9c51da103e0d5f53c4d8b",\n "PivotTotalDifficulty": "9167206964850082205703311924211835616257898274",\n "FastBlocks": true,\n "UseGethLimitsInFastBlocks": false,\n "FastSyncCatchUpHeightDelta": 10000000000\n },\n "EthStats": {\n "Enabled": true,\n "Name": "Nethermind Energy Web",\n "Secret": "secret...",\n "Url": "ws://localhost:3000/api"\n },\n "Metrics": {\n "Enabled": true,\n "NodeName": "Energy Web",\n "PushGatewayUrl": "http://localhost:9091/metrics"\n },\n "Mining": {\n "MinGasPrice": 1\n },\n "Merge": {\n "Enabled": false\n },\n "Aura": {\n "ForceSealing": true\n },\n "KeyStore": {\n "PasswordFiles": ["keystore/password"],\n "UnlockAccounts": ["0x..."],\n "BlockAuthorAccount": "0x..." \n },\n}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"running-the-validator",children:"Running the validator"}),"\n",(0,r.jsxs)(n.p,{children:["The above Docker Compose file can be run from the directory the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," is located in as follows:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose up -d\n"})}),"\n",(0,r.jsx)(n.p,{children:"To check the logs and verify the sealing of blocks, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose logs -f nethermind-validator\n"})})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>a});var r=i(6540);const t={},o=r.createContext(t);function s(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6dbb1c8b.ad37b333.js b/assets/js/6dbb1c8b.b30968f2.js similarity index 99% rename from assets/js/6dbb1c8b.ad37b333.js rename to assets/js/6dbb1c8b.b30968f2.js index 0aaf98c7c..72e581a9d 100644 --- a/assets/js/6dbb1c8b.ad37b333.js +++ b/assets/js/6dbb1c8b.b30968f2.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4971],{8130:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),s=t(8453);const i={title:"JSON-RPC server",sidebar_position:0},r=void 0,c={id:"interacting/json-rpc-server",title:"JSON-RPC server",description:"Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over HTTP, WebSocket, and IPC socket transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the JSON-RPC configuration options.",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-server.md",sourceDirName:"interacting",slug:"/interacting/json-rpc-server",permalink:"/1.25.4/interacting/json-rpc-server",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-server.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"JSON-RPC server",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Private networks",permalink:"/1.25.4/fundamentals/private-networks"},next:{title:"admin",permalink:"/1.25.4/interacting/json-rpc-ns/admin"}},a={},d=[{value:"Transports",id:"transports",level:2},{value:"HTTP",id:"http",level:3},{value:"WebSocket",id:"websocket",level:3},{value:"IPC socket",id:"ipc-socket",level:3},{value:"Engine API",id:"engine-api",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over ",(0,o.jsx)(n.a,{href:"#http",children:"HTTP"}),", ",(0,o.jsx)(n.a,{href:"#websocket",children:"WebSocket"}),", and ",(0,o.jsx)(n.a,{href:"#ipc-socket",children:"IPC socket"})," transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the ",(0,o.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration#jsonrpc",children:"JSON-RPC configuration options"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The JSON-RPC API methods are grouped into several categories (namespaces) depending on their purpose. All API method names are composed of the namespace and the actual method name in that namespace. For instance, the ",(0,o.jsx)(n.code,{children:"eth_call"})," method belongs to the ",(0,o.jsx)(n.code,{children:"eth"})," namespace. See the sidebar for all supported namespaces and methods."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["Not all of the JSON-RPC namespaces are enabled by default. Instead, they must be enabled explicitly with the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})," command line option. Otherwise, error code ",(0,o.jsx)(n.code,{children:"-32600"})," is returned. The enabled namespaces can be found in the configuration file specified with the ",(0,o.jsx)(n.code,{children:"--config"})," command line option."]})}),"\n",(0,o.jsx)(n.h2,{id:"transports",children:"Transports"}),"\n",(0,o.jsxs)(n.admonition,{type:"tip",children:[(0,o.jsx)(n.p,{children:"The right choice of transport depends on the specific use case."}),(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"HTTP is a familiar and idempotent transport that closes connections between requests and can, therefore, have lower overall overhead for a relatively low number of requests."}),"\n",(0,o.jsx)(n.li,{children:"WebSocket provides a continuous open channel that enables event subscriptions and streaming and handles large volumes of requests with more negligible per-message overhead."}),"\n",(0,o.jsx)(n.li,{children:"IPC is generally the most secure as it is limited to local interactions and cannot be exposed to external traffic. It can also be used for event subscriptions."}),"\n"]})]}),"\n",(0,o.jsx)(n.h3,{id:"http",children:"HTTP"}),"\n",(0,o.jsxs)(n.p,{children:["HTTP is the most widely used transport for Nethermind. To enable the HTTP server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Enabled true"})," command line option. By default, Nethermind uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8545"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Host"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.Port"})," command line options, respectively."]}),"\n",(0,o.jsx)(n.h3,{id:"websocket",children:"WebSocket"}),"\n",(0,o.jsxs)(n.p,{children:["The configuration of the WebSocket server follows the same pattern as the HTTP server. The WebSocket server is enabled automatically when the HTTP server is enabled and uses the same host and port. To disable the WebSocket server, use the ",(0,o.jsx)(n.code,{children:"--Init.WebSocketsEnabled false"})," command line option. To use a different a port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort"})," command line option."]}),"\n",(0,o.jsx)(n.h3,{id:"ipc-socket",children:"IPC socket"}),"\n",(0,o.jsxs)(n.p,{children:["Nethermind uses IPC based on Unix domain socket. To enable the IPC server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath path/to/ipc"})," command line option. If the ",(0,o.jsx)(n.code,{children:"path/to/ipc"})," doesn't exist, Nethermind creates one."]}),"\n",(0,o.jsx)(n.h2,{id:"engine-api",children:"Engine API"}),"\n",(0,o.jsx)(n.p,{children:"The Engine API is a set of RPC methods that enable communication between an execution and consensus client. The clients call these methods automatically when they need to exchange information. Engine API is enabled automatically by default and is not designed to be exposed to the user."}),"\n",(0,o.jsxs)(n.p,{children:["By default, the Engine API uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8551"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," command line options, respectively. For example, this can be useful when execution and consensus clients are on different machines."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["When the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," option is specified, the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," option must be specified as well."]})}),"\n",(0,o.jsxs)(n.p,{children:["The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at ",(0,o.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory. To use a different path, specify the ",(0,o.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option."]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var o=t(6540);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4971],{8130:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),s=t(8453);const i={title:"JSON-RPC server",sidebar_position:0},r=void 0,c={id:"interacting/json-rpc-server",title:"JSON-RPC server",description:"Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over HTTP, WebSocket, and IPC socket transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the JSON-RPC configuration options.",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-server.md",sourceDirName:"interacting",slug:"/interacting/json-rpc-server",permalink:"/1.25.4/interacting/json-rpc-server",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-server.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"JSON-RPC server",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Private networks",permalink:"/1.25.4/fundamentals/private-networks"},next:{title:"admin",permalink:"/1.25.4/interacting/json-rpc-ns/admin"}},a={},d=[{value:"Transports",id:"transports",level:2},{value:"HTTP",id:"http",level:3},{value:"WebSocket",id:"websocket",level:3},{value:"IPC socket",id:"ipc-socket",level:3},{value:"Engine API",id:"engine-api",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over ",(0,o.jsx)(n.a,{href:"#http",children:"HTTP"}),", ",(0,o.jsx)(n.a,{href:"#websocket",children:"WebSocket"}),", and ",(0,o.jsx)(n.a,{href:"#ipc-socket",children:"IPC socket"})," transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the ",(0,o.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration#jsonrpc",children:"JSON-RPC configuration options"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The JSON-RPC API methods are grouped into several categories (namespaces) depending on their purpose. All API method names are composed of the namespace and the actual method name in that namespace. For instance, the ",(0,o.jsx)(n.code,{children:"eth_call"})," method belongs to the ",(0,o.jsx)(n.code,{children:"eth"})," namespace. See the sidebar for all supported namespaces and methods."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["Not all of the JSON-RPC namespaces are enabled by default. Instead, they must be enabled explicitly with the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})," command line option. Otherwise, error code ",(0,o.jsx)(n.code,{children:"-32600"})," is returned. The enabled namespaces can be found in the configuration file specified with the ",(0,o.jsx)(n.code,{children:"--config"})," command line option."]})}),"\n",(0,o.jsx)(n.h2,{id:"transports",children:"Transports"}),"\n",(0,o.jsxs)(n.admonition,{type:"tip",children:[(0,o.jsx)(n.p,{children:"The right choice of transport depends on the specific use case."}),(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"HTTP is a familiar and idempotent transport that closes connections between requests and can, therefore, have lower overall overhead for a relatively low number of requests."}),"\n",(0,o.jsx)(n.li,{children:"WebSocket provides a continuous open channel that enables event subscriptions and streaming and handles large volumes of requests with more negligible per-message overhead."}),"\n",(0,o.jsx)(n.li,{children:"IPC is generally the most secure as it is limited to local interactions and cannot be exposed to external traffic. It can also be used for event subscriptions."}),"\n"]})]}),"\n",(0,o.jsx)(n.h3,{id:"http",children:"HTTP"}),"\n",(0,o.jsxs)(n.p,{children:["HTTP is the most widely used transport for Nethermind. To enable the HTTP server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Enabled true"})," command line option. By default, Nethermind uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8545"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Host"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.Port"})," command line options, respectively."]}),"\n",(0,o.jsx)(n.h3,{id:"websocket",children:"WebSocket"}),"\n",(0,o.jsxs)(n.p,{children:["The configuration of the WebSocket server follows the same pattern as the HTTP server. The WebSocket server is enabled automatically when the HTTP server is enabled and uses the same host and port. To disable the WebSocket server, use the ",(0,o.jsx)(n.code,{children:"--Init.WebSocketsEnabled false"})," command line option. To use a different a port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort"})," command line option."]}),"\n",(0,o.jsx)(n.h3,{id:"ipc-socket",children:"IPC socket"}),"\n",(0,o.jsxs)(n.p,{children:["Nethermind uses IPC based on Unix domain socket. To enable the IPC server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath path/to/ipc"})," command line option. If the ",(0,o.jsx)(n.code,{children:"path/to/ipc"})," doesn't exist, Nethermind creates one."]}),"\n",(0,o.jsx)(n.h2,{id:"engine-api",children:"Engine API"}),"\n",(0,o.jsx)(n.p,{children:"The Engine API is a set of RPC methods that enable communication between an execution and consensus client. The clients call these methods automatically when they need to exchange information. Engine API is enabled automatically by default and is not designed to be exposed to the user."}),"\n",(0,o.jsxs)(n.p,{children:["By default, the Engine API uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8551"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," command line options, respectively. For example, this can be useful when execution and consensus clients are on different machines."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["When the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," option is specified, the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," option must be specified as well."]})}),"\n",(0,o.jsxs)(n.p,{children:["The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at ",(0,o.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory. To use a different path, specify the ",(0,o.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option."]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var o=t(6540);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6e937beb.be23c8e8.js b/assets/js/6e937beb.f8063ce1.js similarity index 99% rename from assets/js/6e937beb.be23c8e8.js rename to assets/js/6e937beb.f8063ce1.js index 1b1abf855..c6d641b44 100644 --- a/assets/js/6e937beb.be23c8e8.js +++ b/assets/js/6e937beb.f8063ce1.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[662],{8740:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var s=r(4848),i=r(8453),l=r(1470),c=r(9365);const t={title:"proof namespace",sidebar_label:"proof",sidebar_position:7},d=void 0,a={id:"interacting/json-rpc-ns/proof",title:"proof namespace",description:"proof_getTransactionByHash",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/proof.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/proof",permalink:"/1.28.0/interacting/json-rpc-ns/proof",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/proof.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:7,frontMatter:{title:"proof namespace",sidebar_label:"proof",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"personal",permalink:"/1.28.0/interacting/json-rpc-ns/personal"},next:{title:"trace",permalink:"/1.28.0/interacting/json-rpc-ns/trace"}},o={},h=[{value:"proof_getTransactionByHash",id:"proof_gettransactionbyhash",level:3},{value:"proof_getTransactionReceipt",id:"proof_gettransactionreceipt",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"proof_gettransactionbyhash",children:"proof_getTransactionByHash"}),"\n",(0,s.jsxs)(n.p,{children:["This function returns the same result as ",(0,s.jsx)(n.code,{children:"eth_getTransactionReceipt"})," and also a tx proof, receipt proof and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionByHash",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transaction"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"accessList"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"chainId"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"hash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"input"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"isSystemTx"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mint"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nonce"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"r"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"s"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sourceHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"v"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"yParity"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"proof_gettransactionreceipt",children:"proof_getTransactionReceipt"}),"\n",(0,s.jsxs)(n.p,{children:["This function should return the same result as ",(0,s.jsx)(n.code,{children:"eth_call"})," and also proofs of all used accounts and their storages and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionReceipt",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receipt"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"contractAddress"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"error"}),": ",(0,s.jsx)(n.em,{children:"string"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logs"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"removed"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"topics"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logsBloom"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"root"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"status"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receiptProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},9365:(e,n,r)=>{r.d(n,{A:()=>c});r(6540);var s=r(4164);const i={tabItem:"tabItem_Ymn6"};var l=r(4848);function c(e){let{children:n,hidden:r,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,s.A)(i.tabItem,c),hidden:r,children:n})}},1470:(e,n,r)=>{r.d(n,{A:()=>T});var s=r(6540),i=r(4164),l=r(3104),c=r(6347),t=r(205),d=r(7485),a=r(1682),o=r(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:r}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:r,attributes:s,default:i}}=e;return{value:n,label:r,attributes:s,default:i}}))}(r);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,r])}function j(e){let{value:n,tabValues:r}=e;return r.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:r}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:r}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:n,groupId:r});return[(0,d.aZ)(l),(0,s.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:i}=e,l=x(e),[c,d]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=r.find((e=>e.default))??r[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:r,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(r);return[i,(0,s.useCallback)((e=>{r&&l.set(e)}),[r,l])]}({groupId:i}),g=(()=>{const e=a??m;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{g&&d(g)}),[g]);return{selectedValue:c,selectValue:(0,s.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=r(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=r(4848);function b(e){let{className:n,block:r,selectedValue:s,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,r=d.indexOf(n),i=t[r].value;i!==s&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const r=d.indexOf(e.currentTarget)+1;n=d[r]??d[0];break}case"ArrowLeft":{const r=d.indexOf(e.currentTarget)-1;n=d[r]??d[d.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":r},n),children:t.map((e=>{let{value:n,label:r,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":s===n}),children:r??n},n)}))})}function v(e){let{lazy:n,children:r,selectedValue:l}=e;const c=(Array.isArray(r)?r:[r]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,s.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,f.jsx)(b,{...n,...e}),(0,f.jsx)(v,{...n,...e})]})}function T(e){const n=(0,p.A)();return(0,f.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>t});var s=r(6540);const i={},l=s.createContext(i);function c(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[662],{8740:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var s=r(4848),i=r(8453),l=r(1470),c=r(9365);const t={title:"proof namespace",sidebar_label:"proof",sidebar_position:7},d=void 0,a={id:"interacting/json-rpc-ns/proof",title:"proof namespace",description:"proof_getTransactionByHash",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/proof.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/proof",permalink:"/1.28.0/interacting/json-rpc-ns/proof",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/proof.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:7,frontMatter:{title:"proof namespace",sidebar_label:"proof",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"personal",permalink:"/1.28.0/interacting/json-rpc-ns/personal"},next:{title:"trace",permalink:"/1.28.0/interacting/json-rpc-ns/trace"}},o={},h=[{value:"proof_getTransactionByHash",id:"proof_gettransactionbyhash",level:3},{value:"proof_getTransactionReceipt",id:"proof_gettransactionreceipt",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"proof_gettransactionbyhash",children:"proof_getTransactionByHash"}),"\n",(0,s.jsxs)(n.p,{children:["This function returns the same result as ",(0,s.jsx)(n.code,{children:"eth_getTransactionReceipt"})," and also a tx proof, receipt proof and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionByHash",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transaction"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"accessList"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"chainId"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"hash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"input"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"isSystemTx"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mint"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nonce"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"r"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"s"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sourceHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"v"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"yParity"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"proof_gettransactionreceipt",children:"proof_getTransactionReceipt"}),"\n",(0,s.jsxs)(n.p,{children:["This function should return the same result as ",(0,s.jsx)(n.code,{children:"eth_call"})," and also proofs of all used accounts and their storages and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionReceipt",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receipt"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"contractAddress"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"error"}),": ",(0,s.jsx)(n.em,{children:"string"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logs"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"removed"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"topics"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logsBloom"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"root"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"status"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receiptProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},9365:(e,n,r)=>{r.d(n,{A:()=>c});r(6540);var s=r(4164);const i={tabItem:"tabItem_Ymn6"};var l=r(4848);function c(e){let{children:n,hidden:r,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,s.A)(i.tabItem,c),hidden:r,children:n})}},1470:(e,n,r)=>{r.d(n,{A:()=>T});var s=r(6540),i=r(4164),l=r(3104),c=r(6347),t=r(205),d=r(7485),a=r(1682),o=r(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:r}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:r,attributes:s,default:i}}=e;return{value:n,label:r,attributes:s,default:i}}))}(r);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,r])}function j(e){let{value:n,tabValues:r}=e;return r.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:r}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:r}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:n,groupId:r});return[(0,d.aZ)(l),(0,s.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:i}=e,l=x(e),[c,d]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=r.find((e=>e.default))??r[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:r,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(r);return[i,(0,s.useCallback)((e=>{r&&l.set(e)}),[r,l])]}({groupId:i}),g=(()=>{const e=a??m;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{g&&d(g)}),[g]);return{selectedValue:c,selectValue:(0,s.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=r(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=r(4848);function b(e){let{className:n,block:r,selectedValue:s,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,r=d.indexOf(n),i=t[r].value;i!==s&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const r=d.indexOf(e.currentTarget)+1;n=d[r]??d[0];break}case"ArrowLeft":{const r=d.indexOf(e.currentTarget)-1;n=d[r]??d[d.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":r},n),children:t.map((e=>{let{value:n,label:r,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":s===n}),children:r??n},n)}))})}function v(e){let{lazy:n,children:r,selectedValue:l}=e;const c=(Array.isArray(r)?r:[r]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,s.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,f.jsx)(b,{...n,...e}),(0,f.jsx)(v,{...n,...e})]})}function T(e){const n=(0,p.A)();return(0,f.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>t});var s=r(6540);const i={},l=s.createContext(i);function c(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6edb8094.825ffc3f.js b/assets/js/6edb8094.14969e3c.js similarity index 99% rename from assets/js/6edb8094.825ffc3f.js rename to assets/js/6edb8094.14969e3c.js index c437aa9a9..1190e6655 100644 --- a/assets/js/6edb8094.825ffc3f.js +++ b/assets/js/6edb8094.14969e3c.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6217],{9866:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var t=s(4848),i=s(8453);const r={title:"System requirements",sidebar_position:1},d=void 0,a={id:"get-started/system-requirements",title:"System requirements",description:"Supported operating systems",source:"@site/versioned_docs/version-1.26.0/get-started/system-requirements.md",sourceDirName:"get-started",slug:"/get-started/system-requirements",permalink:"/1.26.0/get-started/system-requirements",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/get-started/system-requirements.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"System requirements",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/1.26.0/"},next:{title:"Installing Nethermind",permalink:"/1.26.0/get-started/installing-nethermind"}},o={},l=[{value:"Supported operating systems",id:"supported-operating-systems",level:2},{value:"Hardware requirements",id:"hardware-requirements",level:2},{value:"Disk requirements",id:"disk-requirements",level:3},{value:"Database growth",id:"database-growth",level:4},{value:"Disk speed",id:"disk-speed",level:4},{value:"Sync modes and disk usage",id:"sync-modes-and-disk-usage",level:4}];function c(e){const n={a:"a",br:"br",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"supported-operating-systems",children:"Supported operating systems"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind supports a broad range of modern ",(0,t.jsx)(n.em,{children:"64-bit"})," operating systems including but not limited to:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Linux"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Alpine 3.17+"}),"\n",(0,t.jsx)(n.li,{children:"CentOS Stream 9+"}),"\n",(0,t.jsx)(n.li,{children:"Debian 11+"}),"\n",(0,t.jsx)(n.li,{children:"Fedora 37+"}),"\n",(0,t.jsx)(n.li,{children:"openSUSE 15+"}),"\n",(0,t.jsx)(n.li,{children:"RHEL 8+"}),"\n",(0,t.jsx)(n.li,{children:"SLES 15+"}),"\n",(0,t.jsx)(n.li,{children:"Ubuntu 20.04+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Windows"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Windows 10+ (x64 only)"}),"\n",(0,t.jsx)(n.li,{children:"Windows Server 2012+ (x64 only)"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"macOS"})," 10.15+"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"hardware-requirements",children:"Hardware requirements"}),"\n",(0,t.jsx)(n.p,{children:"Suggested requirements can be found below."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Network"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Memory"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"CPU cores"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"4"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet archive"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"128 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Gnosis"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Energy Web"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Volta"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]})]})]}),"\n",(0,t.jsx)(n.h3,{id:"disk-requirements",children:"Disk requirements"}),"\n",(0,t.jsxs)(n.p,{children:["Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as NVMe or a fast SSD. However, ",(0,t.jsx)(n.strong,{children:"2\nTB is recommended"})," to minimize maintenance requirements. To choose a specific disk model, we recommend\nchecking out ",(0,t.jsx)(n.a,{href:"https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good",children:"this guide"}),".",(0,t.jsx)(n.br,{}),"\n","Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking.\nNonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic."]}),"\n",(0,t.jsx)(n.h4,{id:"database-growth",children:"Database growth"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind requires approximately 898 GB of disk space (as of Jan 2024) after a fresh Ethereum Mainnet sync using default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to bring it back to its optimal database size. For more info on managing node disk usage growth, see ",(0,t.jsx)(n.a,{href:"/1.26.0/fundamentals/database#reducing-database-size",children:"how to reduce database size"}),".",(0,t.jsx)(n.br,{}),"\n","Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements."]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.26.0/fundamentals/database#database-size",children:"Database size"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"disk-speed",children:"Disk speed"}),"\n",(0,t.jsx)(n.p,{children:"The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully."}),"\n",(0,t.jsx)(n.h4,{id:"sync-modes-and-disk-usage",children:"Sync modes and disk usage"}),"\n",(0,t.jsx)(n.p,{children:"A node can be run using different syncing options, and each option has different characteristics of disk space usage."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Archive node."})," This mode stores the full historical state for all blocks. As of July 2023, an archive node requires at least 14 TB of disk space, and it grows by approximately 60 GB per week."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Ancient barriers."})," Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Non-validator mode."})," This mode drops all historical receipts and bodies, but it cannot be used for validation."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.26.0/fundamentals/sync",children:"sync modes"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>a});var t=s(6540);const i={},r=t.createContext(i);function d(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6217],{9866:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var t=s(4848),i=s(8453);const r={title:"System requirements",sidebar_position:1},d=void 0,a={id:"get-started/system-requirements",title:"System requirements",description:"Supported operating systems",source:"@site/versioned_docs/version-1.26.0/get-started/system-requirements.md",sourceDirName:"get-started",slug:"/get-started/system-requirements",permalink:"/1.26.0/get-started/system-requirements",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/get-started/system-requirements.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"System requirements",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/1.26.0/"},next:{title:"Installing Nethermind",permalink:"/1.26.0/get-started/installing-nethermind"}},o={},l=[{value:"Supported operating systems",id:"supported-operating-systems",level:2},{value:"Hardware requirements",id:"hardware-requirements",level:2},{value:"Disk requirements",id:"disk-requirements",level:3},{value:"Database growth",id:"database-growth",level:4},{value:"Disk speed",id:"disk-speed",level:4},{value:"Sync modes and disk usage",id:"sync-modes-and-disk-usage",level:4}];function c(e){const n={a:"a",br:"br",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"supported-operating-systems",children:"Supported operating systems"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind supports a broad range of modern ",(0,t.jsx)(n.em,{children:"64-bit"})," operating systems including but not limited to:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Linux"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Alpine 3.17+"}),"\n",(0,t.jsx)(n.li,{children:"CentOS Stream 9+"}),"\n",(0,t.jsx)(n.li,{children:"Debian 11+"}),"\n",(0,t.jsx)(n.li,{children:"Fedora 37+"}),"\n",(0,t.jsx)(n.li,{children:"openSUSE 15+"}),"\n",(0,t.jsx)(n.li,{children:"RHEL 8+"}),"\n",(0,t.jsx)(n.li,{children:"SLES 15+"}),"\n",(0,t.jsx)(n.li,{children:"Ubuntu 20.04+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Windows"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Windows 10+ (x64 only)"}),"\n",(0,t.jsx)(n.li,{children:"Windows Server 2012+ (x64 only)"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"macOS"})," 10.15+"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"hardware-requirements",children:"Hardware requirements"}),"\n",(0,t.jsx)(n.p,{children:"Suggested requirements can be found below."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Network"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Memory"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"CPU cores"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"4"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet archive"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"128 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Gnosis"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Energy Web"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Volta"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]})]})]}),"\n",(0,t.jsx)(n.h3,{id:"disk-requirements",children:"Disk requirements"}),"\n",(0,t.jsxs)(n.p,{children:["Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as NVMe or a fast SSD. However, ",(0,t.jsx)(n.strong,{children:"2\nTB is recommended"})," to minimize maintenance requirements. To choose a specific disk model, we recommend\nchecking out ",(0,t.jsx)(n.a,{href:"https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good",children:"this guide"}),".",(0,t.jsx)(n.br,{}),"\n","Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking.\nNonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic."]}),"\n",(0,t.jsx)(n.h4,{id:"database-growth",children:"Database growth"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind requires approximately 898 GB of disk space (as of Jan 2024) after a fresh Ethereum Mainnet sync using default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to bring it back to its optimal database size. For more info on managing node disk usage growth, see ",(0,t.jsx)(n.a,{href:"/1.26.0/fundamentals/database#reducing-database-size",children:"how to reduce database size"}),".",(0,t.jsx)(n.br,{}),"\n","Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements."]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.26.0/fundamentals/database#database-size",children:"Database size"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"disk-speed",children:"Disk speed"}),"\n",(0,t.jsx)(n.p,{children:"The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully."}),"\n",(0,t.jsx)(n.h4,{id:"sync-modes-and-disk-usage",children:"Sync modes and disk usage"}),"\n",(0,t.jsx)(n.p,{children:"A node can be run using different syncing options, and each option has different characteristics of disk space usage."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Archive node."})," This mode stores the full historical state for all blocks. As of July 2023, an archive node requires at least 14 TB of disk space, and it grows by approximately 60 GB per week."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Ancient barriers."})," Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Non-validator mode."})," This mode drops all historical receipts and bodies, but it cannot be used for validation."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.26.0/fundamentals/sync",children:"sync modes"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>a});var t=s(6540);const i={},r=t.createContext(i);function d(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/70fbabeb.a5b7f517.js b/assets/js/70fbabeb.d8447859.js similarity index 99% rename from assets/js/70fbabeb.a5b7f517.js rename to assets/js/70fbabeb.d8447859.js index 4d97728db..a99e3426a 100644 --- a/assets/js/70fbabeb.a5b7f517.js +++ b/assets/js/70fbabeb.d8447859.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3862],{1262:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>x,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>t,toc:()=>a});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"eth namespace",sidebar_label:"eth",sidebar_position:3},h=void 0,t={id:"interacting/json-rpc-ns/eth",title:"eth namespace",description:"eth_blockNumber",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/eth.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/eth",permalink:"/1.25.4/interacting/json-rpc-ns/eth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/eth.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"eth namespace",sidebar_label:"eth",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"debug",permalink:"/1.25.4/interacting/json-rpc-ns/debug"},next:{title:"net",permalink:"/1.25.4/interacting/json-rpc-ns/net"}},x={},a=[{value:"eth_blockNumber",id:"eth_blocknumber",level:3},{value:"eth_call",id:"eth_call",level:3},{value:"eth_chainId",id:"eth_chainid",level:3},{value:"eth_createAccessList",id:"eth_createaccesslist",level:3},{value:"eth_estimateGas",id:"eth_estimategas",level:3},{value:"eth_feeHistory",id:"eth_feehistory",level:3},{value:"eth_getAccount",id:"eth_getaccount",level:3},{value:"eth_getBalance",id:"eth_getbalance",level:3},{value:"eth_getBlockByHash",id:"eth_getblockbyhash",level:3},{value:"eth_getBlockByNumber",id:"eth_getblockbynumber",level:3},{value:"eth_getBlockReceipts",id:"eth_getblockreceipts",level:3},{value:"eth_getBlockTransactionCountByHash",id:"eth_getblocktransactioncountbyhash",level:3},{value:"eth_getBlockTransactionCountByNumber",id:"eth_getblocktransactioncountbynumber",level:3},{value:"eth_getCode",id:"eth_getcode",level:3},{value:"eth_getFilterChanges",id:"eth_getfilterchanges",level:3},{value:"eth_getFilterLogs",id:"eth_getfilterlogs",level:3},{value:"eth_getLogs",id:"eth_getlogs",level:3},{value:"eth_getProof",id:"eth_getproof",level:3},{value:"eth_getStorageAt",id:"eth_getstorageat",level:3},{value:"eth_getTransactionByBlockHashAndIndex",id:"eth_gettransactionbyblockhashandindex",level:3},{value:"eth_getTransactionByBlockNumberAndIndex",id:"eth_gettransactionbyblocknumberandindex",level:3},{value:"eth_getTransactionByHash",id:"eth_gettransactionbyhash",level:3},{value:"eth_getTransactionCount",id:"eth_gettransactioncount",level:3},{value:"eth_getTransactionReceipt",id:"eth_gettransactionreceipt",level:3},{value:"eth_getUncleByBlockHashAndIndex",id:"eth_getunclebyblockhashandindex",level:3},{value:"eth_getUncleByBlockNumberAndIndex",id:"eth_getunclebyblocknumberandindex",level:3},{value:"eth_getUncleCountByBlockHash",id:"eth_getunclecountbyblockhash",level:3},{value:"eth_getUncleCountByBlockNumber",id:"eth_getunclecountbyblocknumber",level:3},{value:"eth_newBlockFilter",id:"eth_newblockfilter",level:3},{value:"eth_newFilter",id:"eth_newfilter",level:3},{value:"eth_newPendingTransactionFilter",id:"eth_newpendingtransactionfilter",level:3},{value:"eth_pendingTransactions",id:"eth_pendingtransactions",level:3},{value:"eth_protocolVersion",id:"eth_protocolversion",level:3},{value:"eth_sendRawTransaction",id:"eth_sendrawtransaction",level:3},{value:"eth_sendTransaction",id:"eth_sendtransaction",level:3},{value:"eth_subscribe",id:"eth_subscribe",level:3},{value:"Subscription topics",id:"subscription-topics",level:4},{value:"newHeads",id:"newheads",level:5},{value:"logs",id:"logs",level:5},{value:"newPendingTransactions",id:"newpendingtransactions",level:5},{value:"droppedPendingTransactions",id:"droppedpendingtransactions",level:5},{value:"syncing",id:"syncing",level:5},{value:"eth_syncing",id:"eth_syncing",level:3},{value:"eth_uninstallFilter",id:"eth_uninstallfilter",level:3},{value:"eth_unsubscribe",id:"eth_unsubscribe",level:3}];function j(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h3:"h3",h4:"h4",h5:"h5",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"eth_blocknumber",children:"eth_blockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns current block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blockNumber",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_call",children:"eth_call"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_call",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_chainid",children:"eth_chainId"}),"\n",(0,r.jsx)(n.p,{children:"Returns ChainID"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_chainId",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_createaccesslist",children:"eth_createAccessList"}),"\n",(0,r.jsxs)(n.p,{children:["Creates an ",(0,r.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-2930",children:"EIP2930"})," type AccessList for the given transaction"]}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"optimize"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_createAccessList",\n "params": [transactionCall, blockParameter, optimize]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_estimategas",children:"eth_estimateGas"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call and returns gas used (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_estimateGas",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_feehistory",children:"eth_feeHistory"}),"\n",(0,r.jsx)(n.p,{children:"Returns block fee history."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockCount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"newestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"rewardPercentiles"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_feeHistory",\n "params": [blockCount, newestBlock, rewardPercentiles]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oldestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"reward"}),": array of array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getaccount",children:"eth_getAccount"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves Accounts via Address and Blocknumber"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getAccount",\n "params": [accountAddress, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getbalance",children:"eth_getBalance"}),"\n",(0,r.jsx)(n.p,{children:"Returns account balance"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBalance",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbyhash",children:"eth_getBlockByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByHash",\n "params": [blockHash, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbynumber",children:"eth_getBlockByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByNumber",\n "params": [blockParameter, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockreceipts",children:"eth_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbyhash",children:"eth_getBlockTransactionCountByHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbynumber",children:"eth_getBlockTransactionCountByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getcode",children:"eth_getCode"}),"\n",(0,r.jsx)(n.p,{children:"Returns account code at given address and block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getCode",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterchanges",children:"eth_getFilterChanges"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterChanges",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterlogs",children:"eth_getFilterLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterLogs",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getlogs",children:"eth_getLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads logs"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getLogs",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getproof",children:"eth_getProof"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"https://github.com/ethereum/EIPs/issues/1186",children:"https://github.com/ethereum/EIPs/issues/1186"})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"hashRate"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getProof",\n "params": [accountAddress, hashRate, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageProofs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getstorageat",children:"eth_getStorageAt"}),"\n",(0,r.jsx)(n.p,{children:"Returns storage data at address. storage_index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getStorageAt",\n "params": [address, positionIndex, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblockhashandindex",children:"eth_getTransactionByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block hash and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockHashAndIndex",\n "params": [blockHash, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblocknumberandindex",children:"eth_getTransactionByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block number and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyhash",children:"eth_getTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactioncount",children:"eth_getTransactionCount"}),"\n",(0,r.jsx)(n.p,{children:"Returns account nonce (number of trnsactions from the account since genesis) at the given block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionCount",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionreceipt",children:"eth_getTransactionReceipt"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction receipt by tx hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionReceipt",\n "params": [txHashData]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblockhashandindex",children:"eth_getUncleByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block hash and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockHashAndIndex",\n "params": [blockHashData, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblocknumberandindex",children:"eth_getUncleByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block number and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblockhash",children:"eth_getUncleCountByBlockHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblocknumber",children:"eth_getUncleCountByBlockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newblockfilter",children:"eth_newBlockFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newBlockFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newfilter",children:"eth_newFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newFilter",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newpendingtransactionfilter",children:"eth_newPendingTransactionFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newPendingTransactionFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_pendingtransactions",children:"eth_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns the pending transactions list"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_pendingTransactions",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_protocolversion",children:"eth_protocolVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns ETH protocol version"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_protocolVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendrawtransaction",children:"eth_sendRawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a raw transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transaction"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendRawTransaction",\n "params": [transaction]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendtransaction",children:"eth_sendTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rpcTx"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendTransaction",\n "params": [rpcTx]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_subscribe",children:"eth_subscribe"}),"\n",(0,r.jsx)(n.p,{children:"Starts a subscription to a particular event over WebSockets. A JSON-RPC notification with event payload and subscription id is sent to a client for every event matching the subscription topic."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"subscriptionName"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_subscribe",\n "params": [subscriptionName, args]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": "0x..." // subscription id\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]}),(0,r.jsxs)(c.A,{value:"notif",label:"Notification",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "method": "eth_subscription",\n "params": {\n "subscription": "0x...", // subscription id\n "result": payload\n }\n}\n'})}),(0,r.jsxs)(n.p,{children:["See specific subcription topic below for ",(0,r.jsx)(n.code,{children:"payload"})," details."]})]})]}),"\n",(0,r.jsx)(n.h4,{id:"subscription-topics",children:"Subscription topics"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newheads",children:"newHeads"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming block headers. Fires a notification each time a new header is appended to the chain, including chain reorganizations."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"logs",children:"logs"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to incoming logs filtered by the given options. In case of a chain reorganization, previously sent logs on the old chain will be re-sent with the ",(0,r.jsx)(n.code,{children:"removed"})," field set to ",(0,r.jsx)(n.code,{children:"true"}),"."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newpendingtransactions",children:"newPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming pending transactions. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"droppedpendingtransactions",children:"droppedPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to transactions evicted from the transaction pool. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"syncing",children:"syncing"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to syncing events. Returns ",(0,r.jsx)(n.code,{children:"false"})," (once) if the node is synced or an object with statistics (once) when the node starts syncing."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),":"]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["if synced: ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:["if syncing: ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_syncing",children:"eth_syncing"}),"\n",(0,r.jsx)(n.p,{children:"Returns syncing status"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_syncing",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"syncMode"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_uninstallfilter",children:"eth_uninstallFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_uninstallFilter",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_unsubscribe",children:"eth_unsubscribe"}),"\n",(0,r.jsx)(n.p,{children:"Unsubscribes from a subscription."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subscriptionId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_unsubscribe",\n "params": [subscriptionId]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})," (",(0,r.jsx)(n.code,{children:"true"})," if unsubscribed successfully; otherwise, ",(0,r.jsx)(n.code,{children:"false"}),")"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(j,{...e})}):j(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),t=s(1682),x=s(679);function a(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function j(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return a(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,t.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=j(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[t,a]=g({queryString:s,groupId:i}),[m,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,x.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=t??m;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),a(e),u(e)}),[a,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:t}=(0,l.a_)(),x=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(t(n),c(i))},a=e=>{let n=null;switch(e.key){case"Enter":x(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:a,onClick:x,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function k(e){const n=(0,u.A)();return(0,b.jsx)(y,{...e,children:a(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3862],{1262:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>x,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>t,toc:()=>a});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"eth namespace",sidebar_label:"eth",sidebar_position:3},h=void 0,t={id:"interacting/json-rpc-ns/eth",title:"eth namespace",description:"eth_blockNumber",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/eth.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/eth",permalink:"/1.25.4/interacting/json-rpc-ns/eth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/eth.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"eth namespace",sidebar_label:"eth",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"debug",permalink:"/1.25.4/interacting/json-rpc-ns/debug"},next:{title:"net",permalink:"/1.25.4/interacting/json-rpc-ns/net"}},x={},a=[{value:"eth_blockNumber",id:"eth_blocknumber",level:3},{value:"eth_call",id:"eth_call",level:3},{value:"eth_chainId",id:"eth_chainid",level:3},{value:"eth_createAccessList",id:"eth_createaccesslist",level:3},{value:"eth_estimateGas",id:"eth_estimategas",level:3},{value:"eth_feeHistory",id:"eth_feehistory",level:3},{value:"eth_getAccount",id:"eth_getaccount",level:3},{value:"eth_getBalance",id:"eth_getbalance",level:3},{value:"eth_getBlockByHash",id:"eth_getblockbyhash",level:3},{value:"eth_getBlockByNumber",id:"eth_getblockbynumber",level:3},{value:"eth_getBlockReceipts",id:"eth_getblockreceipts",level:3},{value:"eth_getBlockTransactionCountByHash",id:"eth_getblocktransactioncountbyhash",level:3},{value:"eth_getBlockTransactionCountByNumber",id:"eth_getblocktransactioncountbynumber",level:3},{value:"eth_getCode",id:"eth_getcode",level:3},{value:"eth_getFilterChanges",id:"eth_getfilterchanges",level:3},{value:"eth_getFilterLogs",id:"eth_getfilterlogs",level:3},{value:"eth_getLogs",id:"eth_getlogs",level:3},{value:"eth_getProof",id:"eth_getproof",level:3},{value:"eth_getStorageAt",id:"eth_getstorageat",level:3},{value:"eth_getTransactionByBlockHashAndIndex",id:"eth_gettransactionbyblockhashandindex",level:3},{value:"eth_getTransactionByBlockNumberAndIndex",id:"eth_gettransactionbyblocknumberandindex",level:3},{value:"eth_getTransactionByHash",id:"eth_gettransactionbyhash",level:3},{value:"eth_getTransactionCount",id:"eth_gettransactioncount",level:3},{value:"eth_getTransactionReceipt",id:"eth_gettransactionreceipt",level:3},{value:"eth_getUncleByBlockHashAndIndex",id:"eth_getunclebyblockhashandindex",level:3},{value:"eth_getUncleByBlockNumberAndIndex",id:"eth_getunclebyblocknumberandindex",level:3},{value:"eth_getUncleCountByBlockHash",id:"eth_getunclecountbyblockhash",level:3},{value:"eth_getUncleCountByBlockNumber",id:"eth_getunclecountbyblocknumber",level:3},{value:"eth_newBlockFilter",id:"eth_newblockfilter",level:3},{value:"eth_newFilter",id:"eth_newfilter",level:3},{value:"eth_newPendingTransactionFilter",id:"eth_newpendingtransactionfilter",level:3},{value:"eth_pendingTransactions",id:"eth_pendingtransactions",level:3},{value:"eth_protocolVersion",id:"eth_protocolversion",level:3},{value:"eth_sendRawTransaction",id:"eth_sendrawtransaction",level:3},{value:"eth_sendTransaction",id:"eth_sendtransaction",level:3},{value:"eth_subscribe",id:"eth_subscribe",level:3},{value:"Subscription topics",id:"subscription-topics",level:4},{value:"newHeads",id:"newheads",level:5},{value:"logs",id:"logs",level:5},{value:"newPendingTransactions",id:"newpendingtransactions",level:5},{value:"droppedPendingTransactions",id:"droppedpendingtransactions",level:5},{value:"syncing",id:"syncing",level:5},{value:"eth_syncing",id:"eth_syncing",level:3},{value:"eth_uninstallFilter",id:"eth_uninstallfilter",level:3},{value:"eth_unsubscribe",id:"eth_unsubscribe",level:3}];function j(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h3:"h3",h4:"h4",h5:"h5",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"eth_blocknumber",children:"eth_blockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns current block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blockNumber",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_call",children:"eth_call"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_call",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_chainid",children:"eth_chainId"}),"\n",(0,r.jsx)(n.p,{children:"Returns ChainID"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_chainId",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_createaccesslist",children:"eth_createAccessList"}),"\n",(0,r.jsxs)(n.p,{children:["Creates an ",(0,r.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-2930",children:"EIP2930"})," type AccessList for the given transaction"]}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"optimize"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_createAccessList",\n "params": [transactionCall, blockParameter, optimize]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_estimategas",children:"eth_estimateGas"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call and returns gas used (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_estimateGas",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_feehistory",children:"eth_feeHistory"}),"\n",(0,r.jsx)(n.p,{children:"Returns block fee history."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockCount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"newestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"rewardPercentiles"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_feeHistory",\n "params": [blockCount, newestBlock, rewardPercentiles]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oldestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"reward"}),": array of array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getaccount",children:"eth_getAccount"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves Accounts via Address and Blocknumber"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getAccount",\n "params": [accountAddress, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getbalance",children:"eth_getBalance"}),"\n",(0,r.jsx)(n.p,{children:"Returns account balance"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBalance",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbyhash",children:"eth_getBlockByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByHash",\n "params": [blockHash, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbynumber",children:"eth_getBlockByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByNumber",\n "params": [blockParameter, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockreceipts",children:"eth_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbyhash",children:"eth_getBlockTransactionCountByHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbynumber",children:"eth_getBlockTransactionCountByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getcode",children:"eth_getCode"}),"\n",(0,r.jsx)(n.p,{children:"Returns account code at given address and block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getCode",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterchanges",children:"eth_getFilterChanges"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterChanges",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterlogs",children:"eth_getFilterLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterLogs",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getlogs",children:"eth_getLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads logs"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getLogs",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getproof",children:"eth_getProof"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"https://github.com/ethereum/EIPs/issues/1186",children:"https://github.com/ethereum/EIPs/issues/1186"})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"hashRate"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getProof",\n "params": [accountAddress, hashRate, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageProofs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getstorageat",children:"eth_getStorageAt"}),"\n",(0,r.jsx)(n.p,{children:"Returns storage data at address. storage_index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getStorageAt",\n "params": [address, positionIndex, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblockhashandindex",children:"eth_getTransactionByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block hash and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockHashAndIndex",\n "params": [blockHash, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblocknumberandindex",children:"eth_getTransactionByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block number and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyhash",children:"eth_getTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactioncount",children:"eth_getTransactionCount"}),"\n",(0,r.jsx)(n.p,{children:"Returns account nonce (number of trnsactions from the account since genesis) at the given block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionCount",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionreceipt",children:"eth_getTransactionReceipt"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction receipt by tx hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionReceipt",\n "params": [txHashData]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblockhashandindex",children:"eth_getUncleByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block hash and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockHashAndIndex",\n "params": [blockHashData, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblocknumberandindex",children:"eth_getUncleByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block number and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblockhash",children:"eth_getUncleCountByBlockHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblocknumber",children:"eth_getUncleCountByBlockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newblockfilter",children:"eth_newBlockFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newBlockFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newfilter",children:"eth_newFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newFilter",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newpendingtransactionfilter",children:"eth_newPendingTransactionFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newPendingTransactionFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_pendingtransactions",children:"eth_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns the pending transactions list"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_pendingTransactions",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_protocolversion",children:"eth_protocolVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns ETH protocol version"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_protocolVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendrawtransaction",children:"eth_sendRawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a raw transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transaction"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendRawTransaction",\n "params": [transaction]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendtransaction",children:"eth_sendTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rpcTx"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendTransaction",\n "params": [rpcTx]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_subscribe",children:"eth_subscribe"}),"\n",(0,r.jsx)(n.p,{children:"Starts a subscription to a particular event over WebSockets. A JSON-RPC notification with event payload and subscription id is sent to a client for every event matching the subscription topic."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"subscriptionName"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_subscribe",\n "params": [subscriptionName, args]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": "0x..." // subscription id\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]}),(0,r.jsxs)(c.A,{value:"notif",label:"Notification",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "method": "eth_subscription",\n "params": {\n "subscription": "0x...", // subscription id\n "result": payload\n }\n}\n'})}),(0,r.jsxs)(n.p,{children:["See specific subcription topic below for ",(0,r.jsx)(n.code,{children:"payload"})," details."]})]})]}),"\n",(0,r.jsx)(n.h4,{id:"subscription-topics",children:"Subscription topics"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newheads",children:"newHeads"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming block headers. Fires a notification each time a new header is appended to the chain, including chain reorganizations."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"logs",children:"logs"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to incoming logs filtered by the given options. In case of a chain reorganization, previously sent logs on the old chain will be re-sent with the ",(0,r.jsx)(n.code,{children:"removed"})," field set to ",(0,r.jsx)(n.code,{children:"true"}),"."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newpendingtransactions",children:"newPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming pending transactions. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"droppedpendingtransactions",children:"droppedPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to transactions evicted from the transaction pool. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"syncing",children:"syncing"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to syncing events. Returns ",(0,r.jsx)(n.code,{children:"false"})," (once) if the node is synced or an object with statistics (once) when the node starts syncing."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),":"]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["if synced: ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:["if syncing: ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_syncing",children:"eth_syncing"}),"\n",(0,r.jsx)(n.p,{children:"Returns syncing status"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_syncing",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"syncMode"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_uninstallfilter",children:"eth_uninstallFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_uninstallFilter",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_unsubscribe",children:"eth_unsubscribe"}),"\n",(0,r.jsx)(n.p,{children:"Unsubscribes from a subscription."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subscriptionId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_unsubscribe",\n "params": [subscriptionId]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})," (",(0,r.jsx)(n.code,{children:"true"})," if unsubscribed successfully; otherwise, ",(0,r.jsx)(n.code,{children:"false"}),")"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(j,{...e})}):j(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),t=s(1682),x=s(679);function a(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function j(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return a(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,t.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=j(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[t,a]=g({queryString:s,groupId:i}),[m,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,x.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=t??m;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),a(e),u(e)}),[a,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:t}=(0,l.a_)(),x=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(t(n),c(i))},a=e=>{let n=null;switch(e.key){case"Enter":x(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:a,onClick:x,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function k(e){const n=(0,u.A)();return(0,b.jsx)(y,{...e,children:a(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/720b26b2.52a5fa6a.js b/assets/js/720b26b2.6220062e.js similarity index 99% rename from assets/js/720b26b2.52a5fa6a.js rename to assets/js/720b26b2.6220062e.js index 26f536fb3..6faac5da8 100644 --- a/assets/js/720b26b2.52a5fa6a.js +++ b/assets/js/720b26b2.6220062e.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7794],{1973:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=n(4848),s=n(8453),i=n(1470),a=n(9365);const o={title:"Troubleshooting",sidebar_position:8},l=void 0,c={id:"troubleshooting",title:"Troubleshooting",description:"File descriptor limits",source:"@site/versioned_docs/version-1.29.0/troubleshooting.md",sourceDirName:".",slug:"/troubleshooting",permalink:"/troubleshooting",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/troubleshooting.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"Troubleshooting",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Custom analytic tools",permalink:"/developers/custom-analytic-tools"}},u={},d=[{value:"File descriptor limits",id:"file-descriptor-limits",level:2},{value:"Database corruption issues",id:"database-corruption-issues",level:2},{value:"TrieNodeException errors",id:"trienodeexception-errors",level:2},{value:"Issues with lock files",id:"issues-with-lock-files",level:2},{value:"Block checksum mismatch",id:"block-checksum-mismatch",level:2},{value:"Plugin loading failure",id:"plugin-loading-failure",level:2}];function h(e){const t={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"file-descriptor-limits",children:"File descriptor limits"}),"\n",(0,r.jsx)(t.p,{children:'In some cases, file descriptor limits may cause errors like "Too many open files". To solve that, see the instructions for your platform below.'}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,r.jsxs)(t.p,{children:["To increase the limits for the user running Nethermind (given the process name of ",(0,r.jsx)(t.code,{children:"nethermind"}),"), run:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:'sudo echo "nethermind soft nofile 100000" > /etc/security/limits.d/nethermind.conf\nsudo echo "nethermind hard nofile 100000" >> /etc/security/limits.d/nethermind.conf\n'})})]}),(0,r.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(t.p,{children:"To increase the limits, run:"}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"ulimit -n 10000\n"})}),(0,r.jsxs)(t.p,{children:["If you run into issues with the above command, see the ",(0,r.jsx)(t.a,{href:"https://developer.apple.com/forums/thread/735798?answerId=762679022#762679022",children:"workaround"}),"."]}),(0,r.jsxs)(t.p,{children:["Note that the changes above are temporary and will be reset after the system reboot. To make them permanent, you can add them to your ",(0,r.jsx)(t.code,{children:"~/.bashrc"})," or ",(0,r.jsx)(t.code,{children:"~/.bash_profile"})," shell configuration file."]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"database-corruption-issues",children:"Database corruption issues"}),"\n",(0,r.jsx)(t.p,{children:"Database corruption is one of the issues that happen now and then; it has many possible causes among them:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Hardware failures: disk failures, memory errors, hardware overheating, etc."}),"\n",(0,r.jsx)(t.li,{children:"Power cuts and abrupt shutdowns"}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["There's no shortcut in such situations, and ",(0,r.jsx)(t.a,{href:"/fundamentals/sync#resync-a-node-from-scratch",children:"resyncing Nethermind from scratch"})," is the recommended remedy."]}),"\n",(0,r.jsx)(t.h2,{id:"trienodeexception-errors",children:"TrieNodeException errors"}),"\n",(0,r.jsxs)(t.p,{children:["If Nethermind reports ",(0,r.jsx)(t.code,{children:"Nethermind.Trie.TrieNodeException"})," or ",(0,r.jsx)(t.code,{children:"Nethermind.Trie.MissingTrieNodeException"})," errors, that usually indicates database corruption or missing data. The following steps may help:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"If the node is still syncing, wait until it has been fully synced and observe for errors"}),"\n",(0,r.jsx)(t.li,{children:"Restart the node and observe for errors"}),"\n",(0,r.jsx)(t.li,{children:"Update to the latest version of Nethermind"}),"\n",(0,r.jsxs)(t.li,{children:["If the above steps fail, a ",(0,r.jsx)(t.a,{href:"/fundamentals/sync#resync-a-node-from-scratch",children:"resync"})," may be required"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"issues-with-lock-files",children:"Issues with lock files"}),"\n",(0,r.jsx)(t.p,{children:"If Nethermind complains about the lock files, it perhaps because of one of the following:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Another Nethermind process is running using the same database"}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The database has not been appropriately closed on the last run.",(0,r.jsx)(t.br,{}),"\n","In this case, run the following command from the Nethermind database directory:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"find . -type f -name 'LOCK' -delete\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"block-checksum-mismatch",children:"Block checksum mismatch"}),"\n",(0,r.jsx)(t.p,{children:"Sometimes Nethermind may fail with an error similar the following:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"Corruption: block checksum mismatch: expected 2087346143, got 2983326672 in...\n"})}),"\n",(0,r.jsxs)(t.p,{children:["This tends to happen on XFS file systems under very high memory pressure. The issue can be mitigated by using the ",(0,r.jsx)(t.code,{children:"--Db.UseDirectIoForFlushAndCompactions true"})," option although at the cost of performance."]}),"\n",(0,r.jsx)(t.p,{children:"However, quite often, this is because of memory module issues."}),"\n",(0,r.jsx)(t.h2,{id:"plugin-loading-failure",children:"Plugin loading failure"}),"\n",(0,r.jsxs)(t.p,{children:["If Nethermind fails to start with a message like ",(0,r.jsx)(t.code,{children:"Failed to load plugin..."}),", this is most likely due to a missing or incompatible plugin. Reinstalling Nethermind usually fixes the issue."]}),"\n",(0,r.jsxs)(t.admonition,{type:"tip",children:[(0,r.jsxs)(t.p,{children:["If you install Nethermind over an existing installation, remove the old installation first, particularly the ",(0,r.jsx)(t.code,{children:"plugins"})," directory. Package managers do this automatically."]}),(0,r.jsx)(t.p,{children:"Watch out not to accidentally delete the database directory with the sync data, if any."})]})]})}function m(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>a});n(6540);var r=n(4164);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function a(e){let{children:t,hidden:n,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,a),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(4164),i=n(3104),a=n(6347),o=n(205),l=n(7485),c=n(1682),u=n(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const s=(0,a.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[a,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,d]=p({queryString:n,groupId:s}),[f,b]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,u.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),x=(()=>{const e=c??f;return m({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{x&&l(x)}),[x]);return{selectedValue:a,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,i]),tabValues:i}}var b=n(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=n(4848);function v(e){let{className:t,block:n,selectedValue:r,selectValue:a,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),u=e=>{const t=e.currentTarget,n=l.indexOf(t),s=o[n].value;s!==r&&(c(t),a(s))},d=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>l.push(e),onKeyDown:d,onClick:u,...i,className:(0,s.A)("tabs__item",x.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function y(e){let{lazy:t,children:n,selectedValue:i}=e;const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function j(e){const t=f(e);return(0,g.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,g.jsx)(v,{...t,...e}),(0,g.jsx)(y,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,g.jsx)(j,{...e,children:d(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function a(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7794],{1973:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=n(4848),s=n(8453),i=n(1470),a=n(9365);const o={title:"Troubleshooting",sidebar_position:8},l=void 0,c={id:"troubleshooting",title:"Troubleshooting",description:"File descriptor limits",source:"@site/versioned_docs/version-1.29.0/troubleshooting.md",sourceDirName:".",slug:"/troubleshooting",permalink:"/troubleshooting",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/troubleshooting.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"Troubleshooting",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Custom analytic tools",permalink:"/developers/custom-analytic-tools"}},u={},d=[{value:"File descriptor limits",id:"file-descriptor-limits",level:2},{value:"Database corruption issues",id:"database-corruption-issues",level:2},{value:"TrieNodeException errors",id:"trienodeexception-errors",level:2},{value:"Issues with lock files",id:"issues-with-lock-files",level:2},{value:"Block checksum mismatch",id:"block-checksum-mismatch",level:2},{value:"Plugin loading failure",id:"plugin-loading-failure",level:2}];function h(e){const t={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"file-descriptor-limits",children:"File descriptor limits"}),"\n",(0,r.jsx)(t.p,{children:'In some cases, file descriptor limits may cause errors like "Too many open files". To solve that, see the instructions for your platform below.'}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,r.jsxs)(t.p,{children:["To increase the limits for the user running Nethermind (given the process name of ",(0,r.jsx)(t.code,{children:"nethermind"}),"), run:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:'sudo echo "nethermind soft nofile 100000" > /etc/security/limits.d/nethermind.conf\nsudo echo "nethermind hard nofile 100000" >> /etc/security/limits.d/nethermind.conf\n'})})]}),(0,r.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(t.p,{children:"To increase the limits, run:"}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"ulimit -n 10000\n"})}),(0,r.jsxs)(t.p,{children:["If you run into issues with the above command, see the ",(0,r.jsx)(t.a,{href:"https://developer.apple.com/forums/thread/735798?answerId=762679022#762679022",children:"workaround"}),"."]}),(0,r.jsxs)(t.p,{children:["Note that the changes above are temporary and will be reset after the system reboot. To make them permanent, you can add them to your ",(0,r.jsx)(t.code,{children:"~/.bashrc"})," or ",(0,r.jsx)(t.code,{children:"~/.bash_profile"})," shell configuration file."]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"database-corruption-issues",children:"Database corruption issues"}),"\n",(0,r.jsx)(t.p,{children:"Database corruption is one of the issues that happen now and then; it has many possible causes among them:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Hardware failures: disk failures, memory errors, hardware overheating, etc."}),"\n",(0,r.jsx)(t.li,{children:"Power cuts and abrupt shutdowns"}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["There's no shortcut in such situations, and ",(0,r.jsx)(t.a,{href:"/fundamentals/sync#resync-a-node-from-scratch",children:"resyncing Nethermind from scratch"})," is the recommended remedy."]}),"\n",(0,r.jsx)(t.h2,{id:"trienodeexception-errors",children:"TrieNodeException errors"}),"\n",(0,r.jsxs)(t.p,{children:["If Nethermind reports ",(0,r.jsx)(t.code,{children:"Nethermind.Trie.TrieNodeException"})," or ",(0,r.jsx)(t.code,{children:"Nethermind.Trie.MissingTrieNodeException"})," errors, that usually indicates database corruption or missing data. The following steps may help:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"If the node is still syncing, wait until it has been fully synced and observe for errors"}),"\n",(0,r.jsx)(t.li,{children:"Restart the node and observe for errors"}),"\n",(0,r.jsx)(t.li,{children:"Update to the latest version of Nethermind"}),"\n",(0,r.jsxs)(t.li,{children:["If the above steps fail, a ",(0,r.jsx)(t.a,{href:"/fundamentals/sync#resync-a-node-from-scratch",children:"resync"})," may be required"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"issues-with-lock-files",children:"Issues with lock files"}),"\n",(0,r.jsx)(t.p,{children:"If Nethermind complains about the lock files, it perhaps because of one of the following:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Another Nethermind process is running using the same database"}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The database has not been appropriately closed on the last run.",(0,r.jsx)(t.br,{}),"\n","In this case, run the following command from the Nethermind database directory:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"find . -type f -name 'LOCK' -delete\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"block-checksum-mismatch",children:"Block checksum mismatch"}),"\n",(0,r.jsx)(t.p,{children:"Sometimes Nethermind may fail with an error similar the following:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"Corruption: block checksum mismatch: expected 2087346143, got 2983326672 in...\n"})}),"\n",(0,r.jsxs)(t.p,{children:["This tends to happen on XFS file systems under very high memory pressure. The issue can be mitigated by using the ",(0,r.jsx)(t.code,{children:"--Db.UseDirectIoForFlushAndCompactions true"})," option although at the cost of performance."]}),"\n",(0,r.jsx)(t.p,{children:"However, quite often, this is because of memory module issues."}),"\n",(0,r.jsx)(t.h2,{id:"plugin-loading-failure",children:"Plugin loading failure"}),"\n",(0,r.jsxs)(t.p,{children:["If Nethermind fails to start with a message like ",(0,r.jsx)(t.code,{children:"Failed to load plugin..."}),", this is most likely due to a missing or incompatible plugin. Reinstalling Nethermind usually fixes the issue."]}),"\n",(0,r.jsxs)(t.admonition,{type:"tip",children:[(0,r.jsxs)(t.p,{children:["If you install Nethermind over an existing installation, remove the old installation first, particularly the ",(0,r.jsx)(t.code,{children:"plugins"})," directory. Package managers do this automatically."]}),(0,r.jsx)(t.p,{children:"Watch out not to accidentally delete the database directory with the sync data, if any."})]})]})}function m(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>a});n(6540);var r=n(4164);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function a(e){let{children:t,hidden:n,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,a),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(4164),i=n(3104),a=n(6347),o=n(205),l=n(7485),c=n(1682),u=n(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const s=(0,a.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[a,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,d]=p({queryString:n,groupId:s}),[f,b]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,u.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),x=(()=>{const e=c??f;return m({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{x&&l(x)}),[x]);return{selectedValue:a,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,i]),tabValues:i}}var b=n(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=n(4848);function v(e){let{className:t,block:n,selectedValue:r,selectValue:a,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),u=e=>{const t=e.currentTarget,n=l.indexOf(t),s=o[n].value;s!==r&&(c(t),a(s))},d=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>l.push(e),onKeyDown:d,onClick:u,...i,className:(0,s.A)("tabs__item",x.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function y(e){let{lazy:t,children:n,selectedValue:i}=e;const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function j(e){const t=f(e);return(0,g.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,g.jsx)(v,{...t,...e}),(0,g.jsx)(y,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,g.jsx)(j,{...e,children:d(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function a(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/77e3cba5.3a0b805a.js b/assets/js/77e3cba5.560b5f01.js similarity index 99% rename from assets/js/77e3cba5.3a0b805a.js rename to assets/js/77e3cba5.560b5f01.js index 5a5d607ae..8a1774580 100644 --- a/assets/js/77e3cba5.3a0b805a.js +++ b/assets/js/77e3cba5.560b5f01.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3696],{9279:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var s=r(4848),i=r(8453),l=r(1470),c=r(9365);const t={title:"proof namespace",sidebar_label:"proof",sidebar_position:7},d=void 0,a={id:"interacting/json-rpc-ns/proof",title:"proof namespace",description:"proof_getTransactionByHash",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/proof.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/proof",permalink:"/1.25.4/interacting/json-rpc-ns/proof",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/proof.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:7,frontMatter:{title:"proof namespace",sidebar_label:"proof",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"personal",permalink:"/1.25.4/interacting/json-rpc-ns/personal"},next:{title:"trace",permalink:"/1.25.4/interacting/json-rpc-ns/trace"}},o={},h=[{value:"proof_getTransactionByHash",id:"proof_gettransactionbyhash",level:3},{value:"proof_getTransactionReceipt",id:"proof_gettransactionreceipt",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"proof_gettransactionbyhash",children:"proof_getTransactionByHash"}),"\n",(0,s.jsxs)(n.p,{children:["This function returns the same result as ",(0,s.jsx)(n.code,{children:"eth_getTransactionReceipt"})," and also a tx proof, receipt proof and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionByHash",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transaction"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"accessList"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"chainId"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"hash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"input"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"isSystemTx"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mint"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nonce"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"r"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"s"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sourceHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"v"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"yParity"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"proof_gettransactionreceipt",children:"proof_getTransactionReceipt"}),"\n",(0,s.jsxs)(n.p,{children:["This function should return the same result as ",(0,s.jsx)(n.code,{children:"eth_call"})," and also proofs of all used accounts and their storages and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionReceipt",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receipt"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"contractAddress"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"error"}),": ",(0,s.jsx)(n.em,{children:"string"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logs"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"removed"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"topics"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logsBloom"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"root"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"status"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receiptProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},9365:(e,n,r)=>{r.d(n,{A:()=>c});r(6540);var s=r(4164);const i={tabItem:"tabItem_Ymn6"};var l=r(4848);function c(e){let{children:n,hidden:r,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,s.A)(i.tabItem,c),hidden:r,children:n})}},1470:(e,n,r)=>{r.d(n,{A:()=>T});var s=r(6540),i=r(4164),l=r(3104),c=r(6347),t=r(205),d=r(7485),a=r(1682),o=r(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:r}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:r,attributes:s,default:i}}=e;return{value:n,label:r,attributes:s,default:i}}))}(r);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,r])}function j(e){let{value:n,tabValues:r}=e;return r.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:r}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:r}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:n,groupId:r});return[(0,d.aZ)(l),(0,s.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:i}=e,l=x(e),[c,d]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=r.find((e=>e.default))??r[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:r,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(r);return[i,(0,s.useCallback)((e=>{r&&l.set(e)}),[r,l])]}({groupId:i}),g=(()=>{const e=a??m;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{g&&d(g)}),[g]);return{selectedValue:c,selectValue:(0,s.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=r(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=r(4848);function b(e){let{className:n,block:r,selectedValue:s,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,r=d.indexOf(n),i=t[r].value;i!==s&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const r=d.indexOf(e.currentTarget)+1;n=d[r]??d[0];break}case"ArrowLeft":{const r=d.indexOf(e.currentTarget)-1;n=d[r]??d[d.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":r},n),children:t.map((e=>{let{value:n,label:r,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":s===n}),children:r??n},n)}))})}function v(e){let{lazy:n,children:r,selectedValue:l}=e;const c=(Array.isArray(r)?r:[r]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,s.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,f.jsx)(b,{...n,...e}),(0,f.jsx)(v,{...n,...e})]})}function T(e){const n=(0,p.A)();return(0,f.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>t});var s=r(6540);const i={},l=s.createContext(i);function c(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3696],{9279:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var s=r(4848),i=r(8453),l=r(1470),c=r(9365);const t={title:"proof namespace",sidebar_label:"proof",sidebar_position:7},d=void 0,a={id:"interacting/json-rpc-ns/proof",title:"proof namespace",description:"proof_getTransactionByHash",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/proof.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/proof",permalink:"/1.25.4/interacting/json-rpc-ns/proof",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/proof.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:7,frontMatter:{title:"proof namespace",sidebar_label:"proof",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"personal",permalink:"/1.25.4/interacting/json-rpc-ns/personal"},next:{title:"trace",permalink:"/1.25.4/interacting/json-rpc-ns/trace"}},o={},h=[{value:"proof_getTransactionByHash",id:"proof_gettransactionbyhash",level:3},{value:"proof_getTransactionReceipt",id:"proof_gettransactionreceipt",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"proof_gettransactionbyhash",children:"proof_getTransactionByHash"}),"\n",(0,s.jsxs)(n.p,{children:["This function returns the same result as ",(0,s.jsx)(n.code,{children:"eth_getTransactionReceipt"})," and also a tx proof, receipt proof and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionByHash",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transaction"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"accessList"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"chainId"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"hash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"input"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"isSystemTx"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mint"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nonce"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"r"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"s"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sourceHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"v"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"yParity"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"proof_gettransactionreceipt",children:"proof_getTransactionReceipt"}),"\n",(0,s.jsxs)(n.p,{children:["This function should return the same result as ",(0,s.jsx)(n.code,{children:"eth_call"})," and also proofs of all used accounts and their storages and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionReceipt",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receipt"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"contractAddress"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"error"}),": ",(0,s.jsx)(n.em,{children:"string"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logs"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"removed"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"topics"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logsBloom"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"root"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"status"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receiptProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},9365:(e,n,r)=>{r.d(n,{A:()=>c});r(6540);var s=r(4164);const i={tabItem:"tabItem_Ymn6"};var l=r(4848);function c(e){let{children:n,hidden:r,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,s.A)(i.tabItem,c),hidden:r,children:n})}},1470:(e,n,r)=>{r.d(n,{A:()=>T});var s=r(6540),i=r(4164),l=r(3104),c=r(6347),t=r(205),d=r(7485),a=r(1682),o=r(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:r}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:r,attributes:s,default:i}}=e;return{value:n,label:r,attributes:s,default:i}}))}(r);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,r])}function j(e){let{value:n,tabValues:r}=e;return r.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:r}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:r}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:n,groupId:r});return[(0,d.aZ)(l),(0,s.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:i}=e,l=x(e),[c,d]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=r.find((e=>e.default))??r[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:r,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(r);return[i,(0,s.useCallback)((e=>{r&&l.set(e)}),[r,l])]}({groupId:i}),g=(()=>{const e=a??m;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{g&&d(g)}),[g]);return{selectedValue:c,selectValue:(0,s.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=r(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=r(4848);function b(e){let{className:n,block:r,selectedValue:s,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,r=d.indexOf(n),i=t[r].value;i!==s&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const r=d.indexOf(e.currentTarget)+1;n=d[r]??d[0];break}case"ArrowLeft":{const r=d.indexOf(e.currentTarget)-1;n=d[r]??d[d.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":r},n),children:t.map((e=>{let{value:n,label:r,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":s===n}),children:r??n},n)}))})}function v(e){let{lazy:n,children:r,selectedValue:l}=e;const c=(Array.isArray(r)?r:[r]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,s.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,f.jsx)(b,{...n,...e}),(0,f.jsx)(v,{...n,...e})]})}function T(e){const n=(0,p.A)();return(0,f.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>t});var s=r(6540);const i={},l=s.createContext(i);function c(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7821a820.8311cee5.js b/assets/js/7821a820.4033dafa.js similarity index 99% rename from assets/js/7821a820.8311cee5.js rename to assets/js/7821a820.4033dafa.js index 5b06d023c..1a9251e7e 100644 --- a/assets/js/7821a820.8311cee5.js +++ b/assets/js/7821a820.4033dafa.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8688],{7787:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var t=i(4848),l=i(8453);const s={title:"Plugins",sidebar_position:1},o=void 0,r={id:"developers/plugins",title:"Plugins",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.29.0/developers/plugins.md",sourceDirName:"developers",slug:"/developers/plugins",permalink:"/developers/plugins",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/developers/plugins.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Plugins",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Building from source",permalink:"/developers/building-from-source"},next:{title:"Custom analytic tools",permalink:"/developers/custom-analytic-tools"}},a={},c=[{value:"RPC Plugin example:",id:"rpc-plugin-example",level:2},{value:"CLI Plugin example:",id:"cli-plugin-example",level:2},{value:"Block Tree Visitor Plugin example:",id:"block-tree-visitor-plugin-example",level:2},{value:"Config plugin example:",id:"config-plugin-example",level:2},{value:"State Tree Visitor example:",id:"state-tree-visitor-example",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,t.jsx)(n.p,{children:"Nethermind plugins is a powerful way of extending your local node capabilities."}),"\n",(0,t.jsxs)(n.p,{children:["(see also an article\nhere: ",(0,t.jsx)(n.a,{href:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59",children:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59"}),")"]}),"\n",(0,t.jsx)(n.p,{children:"Plugins that you can write:"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"Plugin Type"}),(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"What can it be used for?"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"RPC"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Adding additional RPC modules to the client that have full access to the internal Nethermind APIs and can extend capabilities of the node when integrating with your infrastructure / systems."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Block Tree Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Code allowing you to analyze entire block tree from genesis to the head block and execute aggregated calculations and checks."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Devp2p"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allows you to create additional devp2p network protocol for your nodes to communicate over TCP/IP. You can also build custom products that will run attached to Nethermind nodes."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"State Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allow you to run aggregated analysis on the entire raw format state (or just some accounts storages)."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Config"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"You can add additional configuration categories to our config files and then use them in env variables, json files or command line to configure behaviour of your plugins."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool behaviours and listeners."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Tracers"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Custom, powerful EVM tracers capable of extracting elements of EVM execution in real time."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"CLI"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Additional modules for Nethermind CLI that can allow you build some quick scratchpad style JavaScript based behaviors."})]})]})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," When writing a plugin be carefull about exceptions you throw. Especially if you are hooking up event handlers\non some core objects like BlockProcessor or BlockTree. Those exceptions can bring the node down. This is by design. Its\nresponsibility of plugin writer to correctly handle those exceptions."]}),"\n",(0,t.jsx)(n.p,{children:"How to build a plugin? We included an example inside the Nethermind.Analytics plugin:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:i(7200).A+"",width:"547",height:"417"})}),"\n",(0,t.jsx)(n.h2,{id:"rpc-plugin-example",children:"RPC Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' [RpcModule(ModuleType.Clique)]\n public interface IAnalyticsModule : IModule\n {\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from state.", IsImplemented = true)]\n ResultWrapper analytics_verifySupply();\n\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from rewards.", IsImplemented = true)]\n ResultWrapper analytics_verifyRewards();\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"cli-plugin-example",children:"CLI Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'[CliModule("analytics")]\npublic class AnalyticsCliModule : CliModuleBase\n{\n [CliFunction("analytics", "verifySupply")]\n public string VerifySupply()\n {\n return NodeManager.Post("analytics_verifySupply").Result;\n }\n\n [CliFunction("analytics", "verifyRewards")]\n public string VerifyRewards()\n {\n return NodeManager.Post("analytics_verifyRewards").Result;\n }\n\n public AnalyticsCliModule(ICliEngine cliEngine, INodeManager nodeManager)\n : base(cliEngine, nodeManager) { }\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"block-tree-visitor-plugin-example",children:"Block Tree Visitor Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive { get; }\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n\n public UInt256 BlockRewards { get; private set; }\n\n public RewardsVerifier(ILogManager logManager, long endLevelExclusive)\n {\n _logger = logManager.GetClassLogger();\n EndLevelExclusive = endLevelExclusive;\n BlockRewards = _genesisAllocations;\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n BlockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {BlockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(HeaderVisitOutcome.None);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"config-plugin-example",children:"Config plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:"public class AnalyticsConfig : IAnalyticsConfig\n{\n public bool PluginsEnabled { get; set; }\n public bool StreamTransactions { get; set; }\n public bool StreamBlocks { get; set; }\n public bool LogPublishedData { get; set; }\n}\n"})}),"\n",(0,t.jsx)(n.h2,{id:"state-tree-visitor-example",children:"State Tree Visitor example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'public class SupplyVerifier : ITreeVisitor\n{\n private readonly ILogger _logger;\n private HashSet _ignoreThisOne = new HashSet();\n private int _accountsVisited;\n private int _nodesVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public UInt256 Balance { get; set; } = UInt256.Zero;\n\n public bool ShouldVisit(Keccak nextNode)\n {\n if (_ignoreThisOne.Count > 16)\n {\n _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");\n }\n\n if (_ignoreThisOne.Contains(nextNode))\n {\n _ignoreThisOne.Remove(nextNode);\n return false;\n }\n\n return true;\n }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)\n {\n }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)\n {\n _logger.Warn($"Missing node {nodeHash}");\n }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n for (int i = 0; i < 16; i++)\n {\n Keccak childHash = node.GetChildHash(i);\n if (childHash != null)\n {\n _ignoreThisOne.Add(childHash);\n }\n }\n }\n }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n if (trieVisitContext.IsStorage)\n {\n _ignoreThisOne.Add(node.GetChildHash(0));\n }\n }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n Balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n }\n}\n'})})]})}function u(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},7200:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png"},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var t=i(6540);const l={},s=t.createContext(l);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8688],{7787:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var t=i(4848),l=i(8453);const s={title:"Plugins",sidebar_position:1},o=void 0,r={id:"developers/plugins",title:"Plugins",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.29.0/developers/plugins.md",sourceDirName:"developers",slug:"/developers/plugins",permalink:"/developers/plugins",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/developers/plugins.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Plugins",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Building from source",permalink:"/developers/building-from-source"},next:{title:"Custom analytic tools",permalink:"/developers/custom-analytic-tools"}},a={},c=[{value:"RPC Plugin example:",id:"rpc-plugin-example",level:2},{value:"CLI Plugin example:",id:"cli-plugin-example",level:2},{value:"Block Tree Visitor Plugin example:",id:"block-tree-visitor-plugin-example",level:2},{value:"Config plugin example:",id:"config-plugin-example",level:2},{value:"State Tree Visitor example:",id:"state-tree-visitor-example",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,t.jsx)(n.p,{children:"Nethermind plugins is a powerful way of extending your local node capabilities."}),"\n",(0,t.jsxs)(n.p,{children:["(see also an article\nhere: ",(0,t.jsx)(n.a,{href:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59",children:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59"}),")"]}),"\n",(0,t.jsx)(n.p,{children:"Plugins that you can write:"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"Plugin Type"}),(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"What can it be used for?"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"RPC"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Adding additional RPC modules to the client that have full access to the internal Nethermind APIs and can extend capabilities of the node when integrating with your infrastructure / systems."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Block Tree Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Code allowing you to analyze entire block tree from genesis to the head block and execute aggregated calculations and checks."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Devp2p"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allows you to create additional devp2p network protocol for your nodes to communicate over TCP/IP. You can also build custom products that will run attached to Nethermind nodes."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"State Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allow you to run aggregated analysis on the entire raw format state (or just some accounts storages)."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Config"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"You can add additional configuration categories to our config files and then use them in env variables, json files or command line to configure behaviour of your plugins."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool behaviours and listeners."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Tracers"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Custom, powerful EVM tracers capable of extracting elements of EVM execution in real time."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"CLI"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Additional modules for Nethermind CLI that can allow you build some quick scratchpad style JavaScript based behaviors."})]})]})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," When writing a plugin be carefull about exceptions you throw. Especially if you are hooking up event handlers\non some core objects like BlockProcessor or BlockTree. Those exceptions can bring the node down. This is by design. Its\nresponsibility of plugin writer to correctly handle those exceptions."]}),"\n",(0,t.jsx)(n.p,{children:"How to build a plugin? We included an example inside the Nethermind.Analytics plugin:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:i(7200).A+"",width:"547",height:"417"})}),"\n",(0,t.jsx)(n.h2,{id:"rpc-plugin-example",children:"RPC Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' [RpcModule(ModuleType.Clique)]\n public interface IAnalyticsModule : IModule\n {\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from state.", IsImplemented = true)]\n ResultWrapper analytics_verifySupply();\n\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from rewards.", IsImplemented = true)]\n ResultWrapper analytics_verifyRewards();\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"cli-plugin-example",children:"CLI Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'[CliModule("analytics")]\npublic class AnalyticsCliModule : CliModuleBase\n{\n [CliFunction("analytics", "verifySupply")]\n public string VerifySupply()\n {\n return NodeManager.Post("analytics_verifySupply").Result;\n }\n\n [CliFunction("analytics", "verifyRewards")]\n public string VerifyRewards()\n {\n return NodeManager.Post("analytics_verifyRewards").Result;\n }\n\n public AnalyticsCliModule(ICliEngine cliEngine, INodeManager nodeManager)\n : base(cliEngine, nodeManager) { }\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"block-tree-visitor-plugin-example",children:"Block Tree Visitor Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive { get; }\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n\n public UInt256 BlockRewards { get; private set; }\n\n public RewardsVerifier(ILogManager logManager, long endLevelExclusive)\n {\n _logger = logManager.GetClassLogger();\n EndLevelExclusive = endLevelExclusive;\n BlockRewards = _genesisAllocations;\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n BlockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {BlockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(HeaderVisitOutcome.None);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"config-plugin-example",children:"Config plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:"public class AnalyticsConfig : IAnalyticsConfig\n{\n public bool PluginsEnabled { get; set; }\n public bool StreamTransactions { get; set; }\n public bool StreamBlocks { get; set; }\n public bool LogPublishedData { get; set; }\n}\n"})}),"\n",(0,t.jsx)(n.h2,{id:"state-tree-visitor-example",children:"State Tree Visitor example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'public class SupplyVerifier : ITreeVisitor\n{\n private readonly ILogger _logger;\n private HashSet _ignoreThisOne = new HashSet();\n private int _accountsVisited;\n private int _nodesVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public UInt256 Balance { get; set; } = UInt256.Zero;\n\n public bool ShouldVisit(Keccak nextNode)\n {\n if (_ignoreThisOne.Count > 16)\n {\n _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");\n }\n\n if (_ignoreThisOne.Contains(nextNode))\n {\n _ignoreThisOne.Remove(nextNode);\n return false;\n }\n\n return true;\n }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)\n {\n }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)\n {\n _logger.Warn($"Missing node {nodeHash}");\n }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n for (int i = 0; i < 16; i++)\n {\n Keccak childHash = node.GetChildHash(i);\n if (childHash != null)\n {\n _ignoreThisOne.Add(childHash);\n }\n }\n }\n }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n if (trieVisitContext.IsStorage)\n {\n _ignoreThisOne.Add(node.GetChildHash(0));\n }\n }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n Balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n }\n}\n'})})]})}function u(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},7200:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png"},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var t=i(6540);const l={},s=t.createContext(l);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/791ecf85.086db3f4.js b/assets/js/791ecf85.71c8210a.js similarity index 99% rename from assets/js/791ecf85.086db3f4.js rename to assets/js/791ecf85.71c8210a.js index 288339487..965259eff 100644 --- a/assets/js/791ecf85.086db3f4.js +++ b/assets/js/791ecf85.71c8210a.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4771],{8472:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>d,toc:()=>h});var s=t(4848),r=t(8453),i=t(1470),a=t(9365);const o={title:"Installing Nethermind",sidebar_position:2},l=void 0,d={id:"get-started/installing-nethermind",title:"Installing Nethermind",description:"Nethermind can be installed in several ways:",source:"@site/versioned_docs/version-1.27.0/get-started/installing-nethermind.md",sourceDirName:"get-started",slug:"/get-started/installing-nethermind",permalink:"/1.27.0/get-started/installing-nethermind",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/get-started/installing-nethermind.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Installing Nethermind",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"System requirements",permalink:"/1.27.0/get-started/system-requirements"},next:{title:"Consensus clients",permalink:"/1.27.0/get-started/consensus-clients"}},c={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Package managers",id:"package-managers",level:2},{value:"Standalone downloads",id:"standalone-downloads",level:2},{value:"Configuring as a Linux service",id:"configuring-as-a-linux-service",level:3},{value:"Docker container",id:"docker-container",level:2},{value:"Running Nethermind",id:"running",level:2},{value:"Supported networks",id:"supported-networks",level:3}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"Nethermind can be installed in several ways:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#package-managers",children:"Via a package manager"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#standalone-downloads",children:"As a standalone download"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#docker-container",children:"As a Docker container"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/1.27.0/developers/building-from-source",children:"By building from source code"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"Does not apply to Docker distributions."})}),"\n",(0,s.jsx)(n.p,{children:"Before installing Nethermind, your specific platform might need the following prerequisites."}),"\n",(0,s.jsxs)(i.A,{groupId:"os",children:[(0,s.jsx)(a.A,{value:"linux",label:"Linux",children:"None"}),(0,s.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,s.jsxs)(n.p,{children:["Although the modern versions of Windows are bundled with a recent version of ",(0,s.jsx)(n.a,{href:"https://aka.ms/vcredist",children:"Microsoft Visual C++ Redistributable"}),", in some cases, it may need an update:"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-powershell",children:"winget install Microsoft.VCRedist.2015+.x64\n"})})]}),(0,s.jsx)(a.A,{value:"macos",label:"macOS",children:"None"})]}),"\n",(0,s.jsx)(n.h2,{id:"package-managers",children:"Package managers"}),"\n",(0,s.jsx)(n.p,{children:"Package managers are the easiest and fastest way of installing Nethermind."}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["If you're using a package manager, it's highly recommended to set the ",(0,s.jsx)(n.code,{children:"-dd, --datadir"})," flag to specify the data directory. Otherwise, Nethermind will use the default data directory where the package is installed, which may not be preserved on further updates or uninstall."]})}),"\n",(0,s.jsxs)(i.A,{groupId:"os",children:[(0,s.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,s.jsx)(n.p,{children:"On Ubuntu and other Linux distros supporting PPA, Nethermind can be installed via Launchpad PPA."}),(0,s.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo add-apt-repository ppa:nethermindeth/nethermind\n"})}),(0,s.jsxs)(n.admonition,{type:"note",children:[(0,s.jsx)(n.p,{children:"If the command is not found, run:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install software-properties-common\n"})})]}),(0,s.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo apt-get update\nsudo apt-get install nethermind\n"})})]}),(0,s.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,s.jsx)(n.p,{children:"On Windows, Nethermind can be installed via Windows Package Manager as follows:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-powershell",children:"winget install nethermind\n"})})]}),(0,s.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,s.jsx)(n.p,{children:"On macOS, Nethermind can be installed via Homebrew."}),(0,s.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"brew tap nethermindeth/nethermind\n"})}),(0,s.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"brew install nethermind\n"})})]})]}),"\n",(0,s.jsxs)(n.p,{children:["For further instructions, see ",(0,s.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"standalone-downloads",children:"Standalone downloads"}),"\n",(0,s.jsx)(n.p,{children:"Standalone downloads give users more flexibility by allowing them to install a specific version of Nethermind, choose the installation location, and prevent automatic updates."}),"\n",(0,s.jsxs)(n.p,{children:["Standalone downloads are available on ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub Releases"})," and at ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads.nethermind.io"})," as ZIP archives for x64 and AArch64 (ARM64) CPU architectures for Linux, Windows, and macOS."]}),"\n",(0,s.jsx)(n.h3,{id:"configuring-as-a-linux-service",children:"Configuring as a Linux service"}),"\n",(0,s.jsxs)(n.p,{children:["To install Nethermind as a Linux service, see the ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/scripts/nethermind.service",children:"nethermind.service"})," unit file as an example.\nAs it's configured to run Nethermind as the specific user and group and looks for the executable in a predefined location, the following steps need to be fulfilled:"]}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["Any of these steps can be omitted by replacing them with corresponding changes in the unit file.\nFor instance, if you want to run Nethermind as a different user, change the ",(0,s.jsx)(n.code,{children:"User"})," and ",(0,s.jsx)(n.code,{children:"Group"})," options in the unit file."]})}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Create a new user and group:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:" # Create a new user and group\n sudo useradd -m -s /bin/bash nethermind\n\n # Increase the maximum number of open files\n sudo bash -c 'echo \"nethermind soft nofile 100000\" > /etc/security/limits.d/nethermind.conf'\n sudo bash -c 'echo \"nethermind hard nofile 100000\" >> /etc/security/limits.d/nethermind.conf'\n\n # Switch to the nethermind user\n sudo su -l nethermind\n\n # Create required directories\n # Note that the home directory (~) is now /home/nethermind\n mkdir ~/build\n mkdir ~/data\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"#standalone-downloads",children:"Download Nethermind"})," and extract the package contents to the ",(0,s.jsx)(n.code,{children:"~/build"})," directory."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Configure options in the ",(0,s.jsx)(n.code,{children:"~/.env"})," file:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",metastring:'title="~/.env"',children:'# Required\nNETHERMIND_CONFIG="mainnet"\n\n# Optional\nNETHERMIND_HEALTHCHECKSCONFIG_ENABLED="true"\n'})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Now, let's set up the Linux service:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"# Download the unit file\ncurl -L https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/nethermind.service -o nethermind.service\n\n# Move the unit file to the systemd directory\nsudo mv nethermind.service /etc/systemd/system\n\n# Reload the systemd daemon\nsudo systemctl daemon-reload\n\n# Start the service\nsudo systemctl start nethermind\n\n# Optionally, enable the service to start on boot\nsudo systemctl enable nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"To ensure the service is up and running, check its status as follows:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo systemctl status nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"To monitor the Nethermind output, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"journalctl -u nethermind -f\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For further instructions, see ",(0,s.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"docker-container",children:"Docker container"}),"\n",(0,s.jsxs)(n.p,{children:["The Docker images of Nethermind are available on ",(0,s.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind",children:"Docker Hub"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"This registry provides production versions of Nethermind with 3 types of tags:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nethermind/nethermind:latest"})," is the latest version of Nethermind (the default tag)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nethermind/nethermind:"})," is the specific version of Nethermind where ",(0,s.jsx)(n.code,{children:""})," is the actual version of Nethermind."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nethermind/nethermind:-chiseled"})," is a ",(0,s.jsx)(n.em,{children:"rootless"})," and ",(0,s.jsx)(n.a,{href:"https://ubuntu.com/engage/chiselled-ubuntu-images-for-containers",children:"chiseled"})," image with the specific version of Nethermind where ",(0,s.jsx)(n.code,{children:""})," is either ",(0,s.jsx)(n.code,{children:"latest"})," or the actual version of Nethermind.",(0,s.jsx)(n.br,{}),"\n","For security reasons, this image contains only the absolutely necessary components and is intended to run as a non-root ",(0,s.jsx)(n.code,{children:"app"})," user with UID/GID of ",(0,s.jsx)(n.code,{children:"64198"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"To download the image from the registry, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker pull nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"Starting a node is achieved by:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker run -it nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"The following ports are exposed by default:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"8545"}),": TCP, for the JSON-RPC interface"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"8551"}),": TCP, for the consensus client JSON-RPC interface"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"30303"}),": TCP and UDP, for P2P networking"]}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsx)(n.p,{children:"It's highly recommended to mount data volumes as the Nethermind's data directories to ensure the synced data is preserved between the container restarts."})}),"\n",(0,s.jsx)(n.p,{children:"The following volume mount points are available by default:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"/nethermind/nethermind_db"}),": used to store the database"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"/nethermind/logs"}),": used to store the logs"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"/nethermind/keystore"}),": used to store the keys"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"To mount separate volumes for each directory listed above, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/db,target=/nethermind/nethermind_db \\\n --mount type=bind,source=path/to/logs,target=/nethermind/logs \\\n --mount type=bind,source=path/to/keystore,target=/nethermind/keystore \\\n nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"Alternatively, a single volume can be specified as the Nethermind data directory as follows:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/data_dir,target=/nethermind/data_dir \\\n nethermind/nethermind -dd /nethermind/data_dir\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Note that any Nethermind-specific configuration option can be specified at the end. For instance, the ",(0,s.jsx)(n.code,{children:"-dd"})," option in this case. For further instructions, see ",(0,s.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["To build the Docker image yourself, see ",(0,s.jsx)(n.a,{href:"/1.27.0/developers/building-from-source#bulding-docker-image",children:"Building Docker image"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running",children:"Running Nethermind"}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["A ",(0,s.jsx)(n.a,{href:"/1.27.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]}),"\n",(0,s.jsxs)(n.li,{children:["Please check out the ",(0,s.jsx)(n.a,{href:"/1.27.0/fundamentals/security",children:"security considerations"})," before using Nethermind for critical operations."]}),"\n"]})}),"\n",(0,s.jsx)(n.p,{children:"Nethermind is mainly controlled by command line options (aka arguments or flags)."}),"\n",(0,s.jsx)(n.p,{children:"The full list of options can be displayed by running:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,s.jsx)(n.p,{children:"For instance, to launch the client with the default configuration for the Mainnet and custom data directory, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet -dd path/to/data/dir\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For detailed info about the available configuration options, see ",(0,s.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration",children:"Configuration"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"supported-networks",children:"Supported networks"}),"\n",(0,s.jsxs)(n.p,{children:["To run Nethermind on a specific network, use the ",(0,s.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#basic-options",children:(0,s.jsx)(n.code,{children:"-c, --config"})})," command line option. Currently, the following networks are supported out of the box:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Ethereum"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#ethereum-mainnet",children:"Mainnet"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://github.com/eth-clients/holesky",children:"Holesky"})," (testnet)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#sepolia",children:"Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Base"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-mainnet",children:"Base Mainnet"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-testnet-sepolia",children:"Base Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Energy Web Chain"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain",children:"Energy Web"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/testnet-and-mainnet#developing-on-volta-test-network",children:"Volta"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Gnosis Chain"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.gnosischain.com/concepts/networks/mainnet",children:"Gnosis"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://docs.gnosischain.com/concepts/networks/chiado",children:"Chiado"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Optimism"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://community.optimism.io/docs/useful-tools/networks/#op-mainnet",children:"OP Mainnet"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://community.optimism.io/docs/useful-tools/networks/#op-sepolia",children:"OP Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>a});t(6540);var s=t(4164);const r={tabItem:"tabItem_Ymn6"};var i=t(4848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,s.A)(r.tabItem,a),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var s=t(6540),r=t(4164),i=t(3104),a=t(6347),o=t(205),l=t(7485),d=t(1682),c=t(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:t,attributes:s,default:r}}=e;return{value:n,label:t,attributes:s,default:r}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const r=(0,a.W6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(i),(0,s.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:r}=e,i=u(e),[a,l]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=t.find((e=>e.default))??t[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:i}))),[d,h]=p({queryString:t,groupId:r}),[x,g]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,c.Dv)(t);return[r,(0,s.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:r}),f=(()=>{const e=d??x;return m({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&l(f)}),[f]);return{selectedValue:a,selectValue:(0,s.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);l(e),h(e),g(e)}),[h,g,i]),tabValues:i}}var g=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function b(e){let{className:n,block:t,selectedValue:s,selectValue:a,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,i.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),r=o[t].value;r!==s&&(d(n),a(r))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>l.push(e),onKeyDown:h,onClick:c,...i,className:(0,r.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":s===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:i}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===i));return e?(0,s.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=x(e);return(0,j.jsxs)("div",{className:(0,r.A)("tabs-container",f.tabList),children:[(0,j.jsx)(b,{...n,...e}),(0,j.jsx)(v,{...n,...e})]})}function w(e){const n=(0,g.A)();return(0,j.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var s=t(6540);const r={},i=s.createContext(r);function a(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4771],{8472:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>d,toc:()=>h});var s=t(4848),r=t(8453),i=t(1470),a=t(9365);const o={title:"Installing Nethermind",sidebar_position:2},l=void 0,d={id:"get-started/installing-nethermind",title:"Installing Nethermind",description:"Nethermind can be installed in several ways:",source:"@site/versioned_docs/version-1.27.0/get-started/installing-nethermind.md",sourceDirName:"get-started",slug:"/get-started/installing-nethermind",permalink:"/1.27.0/get-started/installing-nethermind",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/get-started/installing-nethermind.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Installing Nethermind",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"System requirements",permalink:"/1.27.0/get-started/system-requirements"},next:{title:"Consensus clients",permalink:"/1.27.0/get-started/consensus-clients"}},c={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Package managers",id:"package-managers",level:2},{value:"Standalone downloads",id:"standalone-downloads",level:2},{value:"Configuring as a Linux service",id:"configuring-as-a-linux-service",level:3},{value:"Docker container",id:"docker-container",level:2},{value:"Running Nethermind",id:"running",level:2},{value:"Supported networks",id:"supported-networks",level:3}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"Nethermind can be installed in several ways:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#package-managers",children:"Via a package manager"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#standalone-downloads",children:"As a standalone download"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#docker-container",children:"As a Docker container"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/1.27.0/developers/building-from-source",children:"By building from source code"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"Does not apply to Docker distributions."})}),"\n",(0,s.jsx)(n.p,{children:"Before installing Nethermind, your specific platform might need the following prerequisites."}),"\n",(0,s.jsxs)(i.A,{groupId:"os",children:[(0,s.jsx)(a.A,{value:"linux",label:"Linux",children:"None"}),(0,s.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,s.jsxs)(n.p,{children:["Although the modern versions of Windows are bundled with a recent version of ",(0,s.jsx)(n.a,{href:"https://aka.ms/vcredist",children:"Microsoft Visual C++ Redistributable"}),", in some cases, it may need an update:"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-powershell",children:"winget install Microsoft.VCRedist.2015+.x64\n"})})]}),(0,s.jsx)(a.A,{value:"macos",label:"macOS",children:"None"})]}),"\n",(0,s.jsx)(n.h2,{id:"package-managers",children:"Package managers"}),"\n",(0,s.jsx)(n.p,{children:"Package managers are the easiest and fastest way of installing Nethermind."}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["If you're using a package manager, it's highly recommended to set the ",(0,s.jsx)(n.code,{children:"-dd, --datadir"})," flag to specify the data directory. Otherwise, Nethermind will use the default data directory where the package is installed, which may not be preserved on further updates or uninstall."]})}),"\n",(0,s.jsxs)(i.A,{groupId:"os",children:[(0,s.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,s.jsx)(n.p,{children:"On Ubuntu and other Linux distros supporting PPA, Nethermind can be installed via Launchpad PPA."}),(0,s.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo add-apt-repository ppa:nethermindeth/nethermind\n"})}),(0,s.jsxs)(n.admonition,{type:"note",children:[(0,s.jsx)(n.p,{children:"If the command is not found, run:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install software-properties-common\n"})})]}),(0,s.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo apt-get update\nsudo apt-get install nethermind\n"})})]}),(0,s.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,s.jsx)(n.p,{children:"On Windows, Nethermind can be installed via Windows Package Manager as follows:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-powershell",children:"winget install nethermind\n"})})]}),(0,s.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,s.jsx)(n.p,{children:"On macOS, Nethermind can be installed via Homebrew."}),(0,s.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"brew tap nethermindeth/nethermind\n"})}),(0,s.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"brew install nethermind\n"})})]})]}),"\n",(0,s.jsxs)(n.p,{children:["For further instructions, see ",(0,s.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"standalone-downloads",children:"Standalone downloads"}),"\n",(0,s.jsx)(n.p,{children:"Standalone downloads give users more flexibility by allowing them to install a specific version of Nethermind, choose the installation location, and prevent automatic updates."}),"\n",(0,s.jsxs)(n.p,{children:["Standalone downloads are available on ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub Releases"})," and at ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads.nethermind.io"})," as ZIP archives for x64 and AArch64 (ARM64) CPU architectures for Linux, Windows, and macOS."]}),"\n",(0,s.jsx)(n.h3,{id:"configuring-as-a-linux-service",children:"Configuring as a Linux service"}),"\n",(0,s.jsxs)(n.p,{children:["To install Nethermind as a Linux service, see the ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/scripts/nethermind.service",children:"nethermind.service"})," unit file as an example.\nAs it's configured to run Nethermind as the specific user and group and looks for the executable in a predefined location, the following steps need to be fulfilled:"]}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["Any of these steps can be omitted by replacing them with corresponding changes in the unit file.\nFor instance, if you want to run Nethermind as a different user, change the ",(0,s.jsx)(n.code,{children:"User"})," and ",(0,s.jsx)(n.code,{children:"Group"})," options in the unit file."]})}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Create a new user and group:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:" # Create a new user and group\n sudo useradd -m -s /bin/bash nethermind\n\n # Increase the maximum number of open files\n sudo bash -c 'echo \"nethermind soft nofile 100000\" > /etc/security/limits.d/nethermind.conf'\n sudo bash -c 'echo \"nethermind hard nofile 100000\" >> /etc/security/limits.d/nethermind.conf'\n\n # Switch to the nethermind user\n sudo su -l nethermind\n\n # Create required directories\n # Note that the home directory (~) is now /home/nethermind\n mkdir ~/build\n mkdir ~/data\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"#standalone-downloads",children:"Download Nethermind"})," and extract the package contents to the ",(0,s.jsx)(n.code,{children:"~/build"})," directory."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Configure options in the ",(0,s.jsx)(n.code,{children:"~/.env"})," file:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",metastring:'title="~/.env"',children:'# Required\nNETHERMIND_CONFIG="mainnet"\n\n# Optional\nNETHERMIND_HEALTHCHECKSCONFIG_ENABLED="true"\n'})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Now, let's set up the Linux service:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"# Download the unit file\ncurl -L https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/nethermind.service -o nethermind.service\n\n# Move the unit file to the systemd directory\nsudo mv nethermind.service /etc/systemd/system\n\n# Reload the systemd daemon\nsudo systemctl daemon-reload\n\n# Start the service\nsudo systemctl start nethermind\n\n# Optionally, enable the service to start on boot\nsudo systemctl enable nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"To ensure the service is up and running, check its status as follows:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo systemctl status nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"To monitor the Nethermind output, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"journalctl -u nethermind -f\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For further instructions, see ",(0,s.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"docker-container",children:"Docker container"}),"\n",(0,s.jsxs)(n.p,{children:["The Docker images of Nethermind are available on ",(0,s.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind",children:"Docker Hub"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"This registry provides production versions of Nethermind with 3 types of tags:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nethermind/nethermind:latest"})," is the latest version of Nethermind (the default tag)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nethermind/nethermind:"})," is the specific version of Nethermind where ",(0,s.jsx)(n.code,{children:""})," is the actual version of Nethermind."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nethermind/nethermind:-chiseled"})," is a ",(0,s.jsx)(n.em,{children:"rootless"})," and ",(0,s.jsx)(n.a,{href:"https://ubuntu.com/engage/chiselled-ubuntu-images-for-containers",children:"chiseled"})," image with the specific version of Nethermind where ",(0,s.jsx)(n.code,{children:""})," is either ",(0,s.jsx)(n.code,{children:"latest"})," or the actual version of Nethermind.",(0,s.jsx)(n.br,{}),"\n","For security reasons, this image contains only the absolutely necessary components and is intended to run as a non-root ",(0,s.jsx)(n.code,{children:"app"})," user with UID/GID of ",(0,s.jsx)(n.code,{children:"64198"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"To download the image from the registry, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker pull nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"Starting a node is achieved by:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker run -it nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"The following ports are exposed by default:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"8545"}),": TCP, for the JSON-RPC interface"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"8551"}),": TCP, for the consensus client JSON-RPC interface"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"30303"}),": TCP and UDP, for P2P networking"]}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsx)(n.p,{children:"It's highly recommended to mount data volumes as the Nethermind's data directories to ensure the synced data is preserved between the container restarts."})}),"\n",(0,s.jsx)(n.p,{children:"The following volume mount points are available by default:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"/nethermind/nethermind_db"}),": used to store the database"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"/nethermind/logs"}),": used to store the logs"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"/nethermind/keystore"}),": used to store the keys"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"To mount separate volumes for each directory listed above, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/db,target=/nethermind/nethermind_db \\\n --mount type=bind,source=path/to/logs,target=/nethermind/logs \\\n --mount type=bind,source=path/to/keystore,target=/nethermind/keystore \\\n nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"Alternatively, a single volume can be specified as the Nethermind data directory as follows:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/data_dir,target=/nethermind/data_dir \\\n nethermind/nethermind -dd /nethermind/data_dir\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Note that any Nethermind-specific configuration option can be specified at the end. For instance, the ",(0,s.jsx)(n.code,{children:"-dd"})," option in this case. For further instructions, see ",(0,s.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["To build the Docker image yourself, see ",(0,s.jsx)(n.a,{href:"/1.27.0/developers/building-from-source#bulding-docker-image",children:"Building Docker image"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running",children:"Running Nethermind"}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["A ",(0,s.jsx)(n.a,{href:"/1.27.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]}),"\n",(0,s.jsxs)(n.li,{children:["Please check out the ",(0,s.jsx)(n.a,{href:"/1.27.0/fundamentals/security",children:"security considerations"})," before using Nethermind for critical operations."]}),"\n"]})}),"\n",(0,s.jsx)(n.p,{children:"Nethermind is mainly controlled by command line options (aka arguments or flags)."}),"\n",(0,s.jsx)(n.p,{children:"The full list of options can be displayed by running:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,s.jsx)(n.p,{children:"For instance, to launch the client with the default configuration for the Mainnet and custom data directory, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet -dd path/to/data/dir\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For detailed info about the available configuration options, see ",(0,s.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration",children:"Configuration"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"supported-networks",children:"Supported networks"}),"\n",(0,s.jsxs)(n.p,{children:["To run Nethermind on a specific network, use the ",(0,s.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#basic-options",children:(0,s.jsx)(n.code,{children:"-c, --config"})})," command line option. Currently, the following networks are supported out of the box:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Ethereum"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#ethereum-mainnet",children:"Mainnet"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://github.com/eth-clients/holesky",children:"Holesky"})," (testnet)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#sepolia",children:"Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Base"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-mainnet",children:"Base Mainnet"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-testnet-sepolia",children:"Base Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Energy Web Chain"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain",children:"Energy Web"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/testnet-and-mainnet#developing-on-volta-test-network",children:"Volta"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Gnosis Chain"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.gnosischain.com/concepts/networks/mainnet",children:"Gnosis"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://docs.gnosischain.com/concepts/networks/chiado",children:"Chiado"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Optimism"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://community.optimism.io/docs/useful-tools/networks/#op-mainnet",children:"OP Mainnet"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://community.optimism.io/docs/useful-tools/networks/#op-sepolia",children:"OP Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>a});t(6540);var s=t(4164);const r={tabItem:"tabItem_Ymn6"};var i=t(4848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,s.A)(r.tabItem,a),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var s=t(6540),r=t(4164),i=t(3104),a=t(6347),o=t(205),l=t(7485),d=t(1682),c=t(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:t,attributes:s,default:r}}=e;return{value:n,label:t,attributes:s,default:r}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const r=(0,a.W6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(i),(0,s.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:r}=e,i=u(e),[a,l]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=t.find((e=>e.default))??t[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:i}))),[d,h]=p({queryString:t,groupId:r}),[x,g]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,c.Dv)(t);return[r,(0,s.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:r}),f=(()=>{const e=d??x;return m({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&l(f)}),[f]);return{selectedValue:a,selectValue:(0,s.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);l(e),h(e),g(e)}),[h,g,i]),tabValues:i}}var g=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function b(e){let{className:n,block:t,selectedValue:s,selectValue:a,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,i.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),r=o[t].value;r!==s&&(d(n),a(r))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>l.push(e),onKeyDown:h,onClick:c,...i,className:(0,r.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":s===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:i}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===i));return e?(0,s.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=x(e);return(0,j.jsxs)("div",{className:(0,r.A)("tabs-container",f.tabList),children:[(0,j.jsx)(b,{...n,...e}),(0,j.jsx)(v,{...n,...e})]})}function w(e){const n=(0,g.A)();return(0,j.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var s=t(6540);const r={},i=s.createContext(r);function a(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/793bd5df.440c94af.js b/assets/js/793bd5df.c6b5a5d1.js similarity index 98% rename from assets/js/793bd5df.440c94af.js rename to assets/js/793bd5df.c6b5a5d1.js index 90c15923d..525087055 100644 --- a/assets/js/793bd5df.440c94af.js +++ b/assets/js/793bd5df.c6b5a5d1.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8331],{2922:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var i=n(4848),r=n(8453);const o={title:"Security",sidebar_position:3},s=void 0,c={id:"fundamentals/security",title:"Security",description:"General security considerations",source:"@site/docs/fundamentals/security.md",sourceDirName:"fundamentals",slug:"/fundamentals/security",permalink:"/next/fundamentals/security",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/security.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"Security",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Sync",permalink:"/next/fundamentals/sync"},next:{title:"Logs",permalink:"/next/fundamentals/logs"}},a={},d=[{value:"General security considerations",id:"general-security-considerations",level:2},{value:"Networking security",id:"networking-security",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{id:"general-security-considerations",children:"General security considerations"}),"\n",(0,i.jsx)(t.admonition,{type:"tip",children:(0,i.jsx)(t.p,{children:"Although Nethermind is thoroughly tested, the more popular it becomes, the more likely it will be a target of client-specific attacks. Generally, we recommend you always consider running backup client nodes from another developer for any critical operations."})}),"\n",(0,i.jsx)(t.admonition,{type:"warning",children:(0,i.jsxs)(t.p,{children:["Enable only the ",(0,i.jsx)(t.a,{href:"/next/interacting/json-rpc-server",children:"JSON-RPC namespaces"})," you absolutely need. This is particularly important for namespaces like ",(0,i.jsx)(t.code,{children:"admin"})," and ",(0,i.jsx)(t.code,{children:"debug"}),", as they can be exploited to get elevated access to your node or for DOS attacks."]})}),"\n",(0,i.jsx)(t.admonition,{type:"danger",children:(0,i.jsx)(t.p,{children:"The private key the node id is derived from is stored on the disk as plaintext."})}),"\n",(0,i.jsx)(t.h2,{id:"networking-security",children:"Networking security"}),"\n",(0,i.jsxs)(t.p,{children:["These rules are ",(0,i.jsx)(t.strong,{children:"highly recommended"})," to be applied to your firewall:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Block all traffic to the port ",(0,i.jsx)(t.code,{children:"8545"}),", or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the TCP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port is defined for P2P communication. This allows the node to connect to peers."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the UDP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port ia defined for P2P communication. This allows node discovery."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var i=n(6540);const r={},o=i.createContext(r);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8331],{2922:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var i=n(4848),r=n(8453);const o={title:"Security",sidebar_position:3},s=void 0,c={id:"fundamentals/security",title:"Security",description:"General security considerations",source:"@site/docs/fundamentals/security.md",sourceDirName:"fundamentals",slug:"/fundamentals/security",permalink:"/next/fundamentals/security",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/security.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"Security",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Sync",permalink:"/next/fundamentals/sync"},next:{title:"Logs",permalink:"/next/fundamentals/logs"}},a={},d=[{value:"General security considerations",id:"general-security-considerations",level:2},{value:"Networking security",id:"networking-security",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{id:"general-security-considerations",children:"General security considerations"}),"\n",(0,i.jsx)(t.admonition,{type:"tip",children:(0,i.jsx)(t.p,{children:"Although Nethermind is thoroughly tested, the more popular it becomes, the more likely it will be a target of client-specific attacks. Generally, we recommend you always consider running backup client nodes from another developer for any critical operations."})}),"\n",(0,i.jsx)(t.admonition,{type:"warning",children:(0,i.jsxs)(t.p,{children:["Enable only the ",(0,i.jsx)(t.a,{href:"/next/interacting/json-rpc-server",children:"JSON-RPC namespaces"})," you absolutely need. This is particularly important for namespaces like ",(0,i.jsx)(t.code,{children:"admin"})," and ",(0,i.jsx)(t.code,{children:"debug"}),", as they can be exploited to get elevated access to your node or for DOS attacks."]})}),"\n",(0,i.jsx)(t.admonition,{type:"danger",children:(0,i.jsx)(t.p,{children:"The private key the node id is derived from is stored on the disk as plaintext."})}),"\n",(0,i.jsx)(t.h2,{id:"networking-security",children:"Networking security"}),"\n",(0,i.jsxs)(t.p,{children:["These rules are ",(0,i.jsx)(t.strong,{children:"highly recommended"})," to be applied to your firewall:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Block all traffic to the port ",(0,i.jsx)(t.code,{children:"8545"}),", or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the TCP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port is defined for P2P communication. This allows the node to connect to peers."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the UDP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port ia defined for P2P communication. This allows node discovery."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var i=n(6540);const r={},o=i.createContext(r);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/794cd842.4c913dfd.js b/assets/js/794cd842.16a292c5.js similarity index 99% rename from assets/js/794cd842.4c913dfd.js rename to assets/js/794cd842.16a292c5.js index ef1ec84d1..ed754c3a8 100644 --- a/assets/js/794cd842.4c913dfd.js +++ b/assets/js/794cd842.16a292c5.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2],{2635:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var i=s(4848),t=s(8453),r=s(1470),l=s(9365);const d={title:"Sync",sidebar_position:2},o=void 0,a={id:"fundamentals/sync",title:"Sync",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.27.0/fundamentals/sync.md",sourceDirName:"fundamentals",slug:"/fundamentals/sync",permalink:"/1.27.0/fundamentals/sync",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/sync.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Sync",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/1.27.0/fundamentals/configuration"},next:{title:"Security",permalink:"/1.27.0/fundamentals/security"}},c={},h=[{value:"There are three main synchronization modes",id:"there-are-three-main-synchronization-modes",level:2},{value:"Snap Sync",id:"snap-sync",level:2},{value:"How to Enable",id:"how-to-enable",level:4},{value:"Snap Sync vs Other Sync Modes",id:"snap-sync-vs-other-sync-modes",level:4},{value:"Current limitations and future development",id:"current-limitations-and-future-development",level:4},{value:"Fast Sync",id:"fast-sync",level:2},{value:"Archive Sync",id:"archive-sync",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Resync a node from scratch",id:"resync-a-node-from-scratch",level:2},{value:"Steps to Resync a Nethermind Node",id:"steps-to-resync-a-nethermind-node",level:3}];function u(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"there-are-three-main-synchronization-modes",children:"There are three main synchronization modes"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["snap sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"the fastest way to sync to the network (syncs to mainnet in ~3 hours)"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["fast sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"slower than snap sync"}),"\n",(0,i.jsx)(n.li,{children:"useful on nethermind-only chains (like Gnosis), where snap sync is not available for now"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["archive sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"heavy historical sync verifying all the transactions and keeping all the historical state"}),"\n",(0,i.jsxs)(n.li,{children:["you can run it like this ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Sync Mode"}),(0,i.jsx)(n.th,{children:"Disk Space needed"}),(0,i.jsx)(n.th,{children:"Full current state"}),(0,i.jsx)(n.th,{children:"Full current and all historical states"}),(0,i.jsx)(n.th,{children:"Can sync a full archive node from this"}),(0,i.jsx)(n.th,{children:"Time to sync"}),(0,i.jsx)(n.th,{children:"Time to RPC"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"archive"}),(0,i.jsx)(n.td,{children:"~12TB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~3 weeks"}),(0,i.jsx)(n.td,{children:"~3 weeks"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync with all bodies and receipts"}),(0,i.jsx)(n.td,{children:"~800GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~20 hours"}),(0,i.jsx)(n.td,{children:"~20 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"default snap/fast sync (with barriers set to support Eth2)"}),(0,i.jsx)(n.td,{children:"~500GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~11 hours"}),(0,i.jsx)(n.td,{children:"~11 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without receipts"}),(0,i.jsx)(n.td,{children:"~450GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~12 hours"}),(0,i.jsx)(n.td,{children:"~12 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without bodies and receipts"}),(0,i.jsx)(n.td,{children:"~200GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~9 hours"}),(0,i.jsx)(n.td,{children:"~9 hours"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"snap-sync",children:"Snap Sync"}),"\n",(0,i.jsx)(n.p,{children:"Snap sync allows a node to perform the initial synchronization and download of Ethereum\u2019s state up to 10 times faster\nthan using fast sync."}),"\n",(0,i.jsx)(n.h4,{id:"how-to-enable",children:"How to Enable"}),"\n",(0,i.jsxs)(n.p,{children:["Snap sync is enabled by default for majority of networks. To make sure, check if",(0,i.jsx)(n.code,{children:"SnapSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"})," in the Sync\nmodule of your ",(0,i.jsx)(n.code,{children:".cfg"})," file"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true\n}\n'})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not enable snap sync on a previously synced node. Only use when syncing to the network for the first\ntime."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not remove other configurations from Sync module. Just add ",(0,i.jsx)(n.code,{children:'"SnapSync": true'}),", e.g."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true,\n\t"PivotNumber": 15011000,\n "PivotHash": "0x46c838d02d5fa5bc070080ed7965da1d888f6eb1797045365407c7011280af56",\n \t"PivotTotalDifficulty": "52367203434576253689712",\n \t"FastBlocks": true\n}\n'})}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"snap-sync-vs-other-sync-modes",children:"Snap Sync vs Other Sync Modes"}),"\n",(0,i.jsx)(n.p,{children:"More than 12TB of storage is needed today to run a full archive node \u2014 one that stores all the state since genesis.\nBecause of that, setting up an archive node can take days or even weeks. Fast Sync can still take more than 24 hours on\nthe fast machine and download about 90GB state data. With Snap Sync, sync time is reduced to 2-3h with a download of\nabout 30GB."}),"\n",(0,i.jsx)(n.p,{children:"This reduction in sync time and download size has to do with the specific way in which Ethereum\u2019s state is stored in a\nnode: Merkle trees."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(5330).A+"",width:"1168",height:"939"})}),"\n",(0,i.jsx)(n.p,{children:"With Fast Sync, a node downloads the headers of each block and retrieves all the nodes beneath it until it reaches the\nleaves. By contrast, Snap Sync only downloads the leaf nodes, generating the remaining nodes locally which saves time\nand packets downloaded."}),"\n",(0,i.jsx)(n.h4,{id:"current-limitations-and-future-development",children:"Current limitations and future development"}),"\n",(0,i.jsx)(n.p,{children:"For now Snap Sync on the Nethermind client can only download the Ethereum state but not serve it to other clients - snap\nserving development is in progress, expected late 2023/early 2024."}),"\n",(0,i.jsx)(n.p,{children:"The only Ethereum client that supports serving Snap Sync requests is Geth, so only networks supported by Geth can be\nsynced using that method: Mainnet, Goerli, Sepolia."}),"\n",(0,i.jsx)(n.h2,{id:"fast-sync",children:"Fast Sync"}),"\n",(0,i.jsxs)(n.p,{children:["After completing the fast sync your node will have the ability to answer questions like ",(0,i.jsxs)(n.em,{children:["'what is my account\nbalance ",(0,i.jsx)(n.strong,{children:"now"}),"'"]}),", ",(0,i.jsxs)(n.em,{children:["'how many XYZ tokens SomeExchange holds ",(0,i.jsx)(n.strong,{children:"at the moment"}),"'"]}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Fast sync has multiple stages. Nethermind uses a ",(0,i.jsx)(n.code,{children:"pivot block"})," number to improve fast sync performance.\nThe ",(0,i.jsx)(n.code,{children:"pivot block"})," data is automatically updated after initialization of the client and consists of\nthe ",(0,i.jsx)(n.code,{children:"block number"}),", ",(0,i.jsx)(n.code,{children:"block hash"})," and ",(0,i.jsx)(n.code,{children:"block total difficulty"})," (please note that ",(0,i.jsx)(n.code,{children:"total difficulty"})," is different\nthan ",(0,i.jsx)(n.code,{children:"difficulty"}),"). Before synchronizing state data Nethermind synchronizes in two directions - backwards\nfrom ",(0,i.jsx)(n.code,{children:"pivot block"})," to 0 for headers and forward to the head of the chain for headers, blocks and receipts. Forward sync\nmight be very slow (5 - 50 bps) so having fresh pivot block is very important - it is guaranteed by recently implemented\nauto-update."]}),"\n",(0,i.jsx)(n.p,{children:"After downloading the block data Nethermind will start state sync (downloading the latest state trie nodes). We are\nproviding an estimate for the download size and progress but the real value may be different than the estimate (\nespecially if you are using an old version of Nethermind as we sometimes manually adjust the estimator based on our\nobservations of the chain growth rate). Because of this sometimes your sync may continue even when it shows ~100%\nfinished. The other important component is the speed of your sync - if your IO / network / file system causes the state\nsync to go much slower than around 1.5MB per second on average then you will start downloading some parts of the trie\nover and over again. In such cases you may be surprised to see something like 58000MB / 53000MB (100%). It means that\nyou downloaded around 5GB of data that is no longer needed. If your sync is very slow (extended beyond two days) then\nvery likely your setup cannot catch up with the chain progress."}),"\n",(0,i.jsxs)(n.p,{children:["After the state sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," messages like in archive sync - it means that your node\nis in sync and is processing the latest blocks."]}),"\n",(0,i.jsx)(n.p,{children:"Mainnet sync, at the time of writing (December 2020), takes around 8 hours on an UpCloud 16GB RAM 8 CPU $40 VM (and then\nsyncs receipts and bodies in the background if you enabled them in the configuration). Goerli sync should take around 40\nminutes."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast sync logs example for mainnet.",src:s(7017).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsxs)(n.p,{children:["State sync log messages have multiple values displayed. First ",(0,i.jsx)(n.code,{children:"dd.HH:mm:ss"})," total state sync time is displayed, followed\nby an estimated sync progress (percentage of total database data synced), then the current download speed is displayed (\nthere will be times when it will slow down to 0 or single digit numbers, especially towards the end of the sync). In\ngeneral 6 hours sync times shown on screenshots are with around 2000 kB/s (kilobytes per second) average sync rate. You\ncan calculate it in the example as ~45GB / (2MB/s) ~ 22500 seconds ~6.25 hours. We also display the number of state\naccounts synced, number of trie nodes synced and a diagnostic message in the format of ",(0,i.jsx)(n.em,{children:"[number_of_pending_requests]\n.[average time spent in response handler displayed as milliseconds]"}),". So ",(0,i.jsx)(n.code,{children:"5.6.20ms"})," means that we are awaiting for\nresponses to 5 requests that have been sent to peers and the average time it takes us to process a single response is\n6.20ms. The response handling times will differ depending on how many trie nodes are already cached (so they will be\nsignificantly slower for a while after the node restart when cache has to be rebuilt) and based on how fast the database\nIO is (SSD vs NVMe vs cloud drives). For a reasonable sync time you probably should expect these values to be below\n15ms (but they may be as high as 700ms for a while after restarting the node)."]}),"\n",(0,i.jsx)(n.p,{children:"A single restart of the node during the fast sync may extend the sync time by up to two hours because the node has to\nrebuild the caches by reading millions of values from the database."}),"\n",(0,i.jsx)(n.p,{children:"At the last stages of the sync the node will be repeatedly displaying the branch sync progress and changing the block\nnumber to which it tries to catch up. This stage should take between 30 minutes and two hours. If it lasts much more\nthen it is possible that you will not be able to catch up with the network progress."}),"\n",(0,i.jsx)(n.p,{children:"One of the best indicators that you are close to be synced is combined ~100% state size progress and nearly 100% branch\nsync progress."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(2725).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(3203).A+"",width:"1895",height:"795"})}),"\n",(0,i.jsx)(n.h2,{id:"archive-sync",children:"Archive Sync"}),"\n",(0,i.jsxs)(n.p,{children:["Archive sync is the 'heaviest' and slowest sync mode but allows to ask questions like ",(0,i.jsx)(n.em,{children:"'what was the balance of my\naccount 2 years ago?'"}),", ",(0,i.jsx)(n.em,{children:"'how many XYZ token were held in SomeExchange custody in 2017?'"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["We have prepared default archive sync configurations and they can be launched from Nethermind Launcher (just choose the\narchive options) or by simply loading appropriate config when launching ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config goerli_archive"})}),"\n",(0,i.jsx)(n.p,{children:"While for some smaller networks archive sync can complete very quickly (in minutes or hours) mainnet sync would take 2 -\n6 weeks depending on the speed of your IO (whether you use SSD or NVMe or depending on the cloud provider IOPS).\nDatabase size in archive sync is the biggest from all modes as you will store all the historical data."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Example of the archive sync logs",src:s(4466).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(9175).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:"Explanation of some data in the logs:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["at the beginning you may see a ",(0,i.jsx)(n.em,{children:"'Waiting for peers...'"})," message while the node is trying to discover nodes that it can\nsync with."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Downloaded 1234/8000000'"})," shows the number of unprocessed blocks (with transactions) downloaded from the network.\nFor ",(0,i.jsx)(n.code,{children:"mainnet"}),"this value may be slower than processing at first but very quickly you will see blocks being downloaded\nmuch faster than processed. Empty blocks can be as small as 512 bytes (just headers without transactions) and full\nblocks with heavy transactions can reach a few hundred kilobytes. We display both current download speed (calculated\nin the last second) and average (total) speed since starting the node."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Processed ...'"})," displays the blocks that have been processed by the EVM. The first number shows the current head\nblock number, then you can see ",(0,i.jsx)(n.code,{children:"mgasps"})," (million gas per second) - current and total, then ",(0,i.jsx)(n.code,{children:"tps"})," (transactions per\nsecond) - current and total, ",(0,i.jsx)(n.code,{children:"bps"})," (blocks per second). Then ",(0,i.jsx)(n.code,{children:"recv queue"})," (transactions signature public key recovery\nqueue), ",(0,i.jsx)(n.code,{children:"proc queue"})," (processor queue). Both recovery queue and processor queue are designed so when too many blocks\nare waiting for processing then only their hashes are kept in memory and remaining data are stored in the database.\nThus, the queues numbers that you can see will be capped by some number."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Cache for epoch...'"})," informs about ",(0,i.jsx)(n.code,{children:"ethash"})," cache needed for block seal verification (only on ",(0,i.jsx)(n.code,{children:"mainnet"}),"\nand ",(0,i.jsx)(n.code,{children:"ropsten"}),"). Caches will be calculated every 30000 blocks (length of an epoch) but can also be calculated for the\nlatest blocks that are being broadcast on the network."]}),"\n",(0,i.jsxs)(n.li,{children:["After the archive sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," message appearing on average every 15 seconds when\nthe new block is processed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mgasps"}),", ",(0,i.jsx)(n.code,{children:"tps"}),", ",(0,i.jsx)(n.code,{children:"bps"})," values should not be treated as comparable as they may differ massively on different parts of\nthe chain. For example when blocks are empty you may see very high ",(0,i.jsx)(n.code,{children:"bps"})," values with very low (or even zero) ",(0,i.jsx)(n.code,{children:"tps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," values as there are no transactions and no gas for EVM processing and blocks are very light. On the other\nhand when blocks are filled with very heavy transactions then ",(0,i.jsx)(n.code,{children:"bps"})," might be very low while ",(0,i.jsx)(n.code,{children:"mgasps"})," will be very\nhigh. It is even possible that you will see a lot of very light transactions where ",(0,i.jsx)(n.code,{children:"tps"})," will be high while ",(0,i.jsx)(n.code,{children:"bps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," will be average."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,i.jsx)(n.p,{children:"Sync time heavily depends on the hardware used for the node, network speed, and peering. We are constantly pursuing to make it as fast as possible. Below is a brief on how the sync time looks on different machines and various chains (tested with Nethermind v1.21.0)."}),"\n",(0,i.jsxs)(r.A,{children:[(0,i.jsxs)(l.A,{value:"highend-vm",label:"High-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Akamai (formerly Linode)"}),"\n",(0,i.jsx)(n.li,{children:"CPU: AMD EPYC 7601, 16 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 64 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1.2 TB, ~40k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 7h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 58m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 2m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 5m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 21m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 22m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 17m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 46m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 31m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 10m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"midend-vm",label:"Mid-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: AWS"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/c7g/",children:"c7g.2xlarge"}),": 8 vCPU, 16 GiB memory"]}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~10k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 12h 37m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 35m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1h 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 43m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 2h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 4h 28m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 10m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 23m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 35m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 17m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 29m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 18h 28m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 52m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 25m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 5m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"oldspec-vm",label:"Old-spec VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Scaleway"}),"\n",(0,i.jsx)(n.li,{children:"CPU: Intel Xeon Processor E5-2620 v2, 2 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 192 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~44k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 1m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 29m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 25m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 3h 39m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 8h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 5h 55m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 34m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 14m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 16m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 2h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 26m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 45m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 56m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 30m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 3h 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 25m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"energyweb",label:"Energy Web",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 7m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 15h 20m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"volta",label:"Volta",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 14h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 42m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 16h 10m"]}),"\n"]})]})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"resync-a-node-from-scratch",children:"Resync a node from scratch"}),"\n",(0,i.jsx)(n.p,{children:"This guide explains how to resync a Nethermind node using the existing Pivot block or updating it to a more recent one."}),"\n",(0,i.jsx)(n.h3,{id:"steps-to-resync-a-nethermind-node",children:"Steps to Resync a Nethermind Node"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Stop the Nethermind node"}),": If your Nethermind node is currently running, stop it to ensure that no new data is\nbeing written to the database during the resync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Delete the existing database"}),": Navigate to the Nethermind data directory. The location of this directory depends\non how Nethermind was installed and your configuration settings. Inside the data directory, find the ",(0,i.jsx)(n.code,{children:"nethermind_db"}),"\nfolder and delete the ",(0,i.jsx)(n.code,{children:"mainnet"})," subfolder to remove the existing database for the mainnet."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the configuration file (optional)"}),": If you want to change any configuration settings before resyncing the\nnode, edit the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file located in the Nethermind directory. For example, you might want to adjust the\npruning settings or specify a different network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the Pivot block (optional)"}),"\\","\n",(0,i.jsx)(n.admonition,{type:"danger",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Only for versions before 1.19.0 where Auto-Pivot approach was introduced"})})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Etherscan"}),": If you want to speed up the syncing process, you can update the Pivot block to a more recent\none. To do this, find the ",(0,i.jsx)(n.code,{children:"Sync"})," section in the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file and update the ",(0,i.jsx)(n.code,{children:"PivotNumber"})," and ",(0,i.jsx)(n.code,{children:"PivotHash"}),'\nfields to match a recent "finalized" block number and its corresponding hash. You can obtain this information from\na block explorer such as ',(0,i.jsx)(n.a,{href:"https://etherscan.io/",children:"Etherscan"}),".",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.br,{}),"\n","Using block number 17165278 from ",(0,i.jsx)(n.a,{href:"https://etherscan.io/block/17165278",children:"Etherscan"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:' { \n \t "PivotNumber": 17165278,\n \t "PivotHash": "0xa665315efd923f3b11215feee09a9d3e13c5e6ee602fa19b642824682ec0a752"\n }\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Nethermind's GitHub"}),": Alternatively, you can update the Pivot block by referring to\nthe ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:"Nethermind's mainnet.cfg file on GitHub"}),".\nThe Pivot block is periodically bumped to the HEAD-8192 block of the mainnet chain. Copy the ",(0,i.jsx)(n.code,{children:"PivotNumber"}),"\nand ",(0,i.jsx)(n.code,{children:"PivotHash"})," values from the GitHub file and update your local ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file accordingly."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Restart the Nethermind node"}),": Start the Nethermind node again to initiate the resync process. The node will begin\nsyncing from the existing Pivot block or the specified updated Pivot block, downloading and processing all the blocks\nin the blockchain."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To ensure that your Nethermind node is resyncing, you can monitor the logs for the node's progress. The logs will\ndisplay information about the block processing, synchronization status and ",(0,i.jsx)(n.code,{children:"OldHeaders"})," being processed. By observing\nthe increasing block numbers and synchronization messages in the logs, you can confirm that the resync process is active\nand working as expected."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Old Headers 0 / 17154000 | queue 0 | current 0.00bps | total 0.00bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 768 / 17154000 | queue 0 | current 766.07bps | total 762.49bps"}),"\n",(0,i.jsx)(n.p,{children:"Beacon Headers from block 17154001 to block 17169722 | 960 / 15722 | queue 4992 | current 0.00bps | total\n40622848.83bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 9024 / 17154000 | queue 0 | current 576.40bps | total 1286.40bps"}),"\n",(0,i.jsxs)(n.p,{children:["Beacon Headers from block 17154001 to block 17169723 | 9024 / 15723 | queue 6698 | current 2694.81bps | total\n3882943.63bps",(0,i.jsx)(n.br,{}),"\n","Downloaded 17154031 / 17172359 | current 0.00bps | total 0.00bps"]}),"\n",(0,i.jsx)(n.p,{children:"Downloaded 17154062 / 17169724 | current 0.00bps | total 2.88bps"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Keep in mind that resyncing a Nethermind node can take a considerable amount of time. It depends on your hardware,\ninternet connection, and the size of the blockchain."})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var i=s(4164);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>w});var i=s(6540),t=s(4164),r=s(3104),l=s(6347),d=s(205),o=s(7485),a=s(1682),c=s(679);function h(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:i,default:t}}=e;return{value:n,label:s,attributes:i,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,o.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=u(e),[l,o]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=s.find((e=>e.default))??s[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[a,h]=j({queryString:s,groupId:t}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,c.Dv)(s);return[t,(0,i.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),g=(()=>{const e=a??m;return x({value:e,tabValues:r})?e:null})();(0,d.A)((()=>{g&&o(g)}),[g]);return{selectedValue:l,selectValue:(0,i.useCallback)((e=>{if(!x({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),h(e),p(e)}),[h,p,r]),tabValues:r}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function b(e){let{className:n,block:s,selectedValue:i,selectValue:l,tabValues:d}=e;const o=[],{blockElementScrollPositionUntilNextRender:a}=(0,r.a_)(),c=e=>{const n=e.currentTarget,s=o.indexOf(n),t=d[s].value;t!==i&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const s=o.indexOf(e.currentTarget)+1;n=o[s]??o[0];break}case"ArrowLeft":{const s=o.indexOf(e.currentTarget)-1;n=o[s]??o[o.length-1];break}}n?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>o.push(e),onKeyDown:h,onClick:c,...r,className:(0,t.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":i===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:r}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=m(e);return(0,y.jsxs)("div",{className:(0,t.A)("tabs-container",g.tabList),children:[(0,y.jsx)(b,{...n,...e}),(0,y.jsx)(f,{...n,...e})]})}function w(e){const n=(0,p.A)();return(0,y.jsx)(v,{...e,children:h(e.children)},String(n))}},5330:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png"},9175:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png"},4466:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png"},7017:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png"},3203:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png"},2725:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png"},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var i=s(6540);const t={},r=i.createContext(t);function l(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2],{2635:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var i=s(4848),t=s(8453),r=s(1470),l=s(9365);const d={title:"Sync",sidebar_position:2},o=void 0,a={id:"fundamentals/sync",title:"Sync",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.27.0/fundamentals/sync.md",sourceDirName:"fundamentals",slug:"/fundamentals/sync",permalink:"/1.27.0/fundamentals/sync",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/sync.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Sync",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/1.27.0/fundamentals/configuration"},next:{title:"Security",permalink:"/1.27.0/fundamentals/security"}},c={},h=[{value:"There are three main synchronization modes",id:"there-are-three-main-synchronization-modes",level:2},{value:"Snap Sync",id:"snap-sync",level:2},{value:"How to Enable",id:"how-to-enable",level:4},{value:"Snap Sync vs Other Sync Modes",id:"snap-sync-vs-other-sync-modes",level:4},{value:"Current limitations and future development",id:"current-limitations-and-future-development",level:4},{value:"Fast Sync",id:"fast-sync",level:2},{value:"Archive Sync",id:"archive-sync",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Resync a node from scratch",id:"resync-a-node-from-scratch",level:2},{value:"Steps to Resync a Nethermind Node",id:"steps-to-resync-a-nethermind-node",level:3}];function u(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"there-are-three-main-synchronization-modes",children:"There are three main synchronization modes"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["snap sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"the fastest way to sync to the network (syncs to mainnet in ~3 hours)"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["fast sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"slower than snap sync"}),"\n",(0,i.jsx)(n.li,{children:"useful on nethermind-only chains (like Gnosis), where snap sync is not available for now"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["archive sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"heavy historical sync verifying all the transactions and keeping all the historical state"}),"\n",(0,i.jsxs)(n.li,{children:["you can run it like this ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Sync Mode"}),(0,i.jsx)(n.th,{children:"Disk Space needed"}),(0,i.jsx)(n.th,{children:"Full current state"}),(0,i.jsx)(n.th,{children:"Full current and all historical states"}),(0,i.jsx)(n.th,{children:"Can sync a full archive node from this"}),(0,i.jsx)(n.th,{children:"Time to sync"}),(0,i.jsx)(n.th,{children:"Time to RPC"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"archive"}),(0,i.jsx)(n.td,{children:"~12TB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~3 weeks"}),(0,i.jsx)(n.td,{children:"~3 weeks"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync with all bodies and receipts"}),(0,i.jsx)(n.td,{children:"~800GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~20 hours"}),(0,i.jsx)(n.td,{children:"~20 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"default snap/fast sync (with barriers set to support Eth2)"}),(0,i.jsx)(n.td,{children:"~500GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~11 hours"}),(0,i.jsx)(n.td,{children:"~11 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without receipts"}),(0,i.jsx)(n.td,{children:"~450GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~12 hours"}),(0,i.jsx)(n.td,{children:"~12 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without bodies and receipts"}),(0,i.jsx)(n.td,{children:"~200GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~9 hours"}),(0,i.jsx)(n.td,{children:"~9 hours"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"snap-sync",children:"Snap Sync"}),"\n",(0,i.jsx)(n.p,{children:"Snap sync allows a node to perform the initial synchronization and download of Ethereum\u2019s state up to 10 times faster\nthan using fast sync."}),"\n",(0,i.jsx)(n.h4,{id:"how-to-enable",children:"How to Enable"}),"\n",(0,i.jsxs)(n.p,{children:["Snap sync is enabled by default for majority of networks. To make sure, check if",(0,i.jsx)(n.code,{children:"SnapSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"})," in the Sync\nmodule of your ",(0,i.jsx)(n.code,{children:".cfg"})," file"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true\n}\n'})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not enable snap sync on a previously synced node. Only use when syncing to the network for the first\ntime."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not remove other configurations from Sync module. Just add ",(0,i.jsx)(n.code,{children:'"SnapSync": true'}),", e.g."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true,\n\t"PivotNumber": 15011000,\n "PivotHash": "0x46c838d02d5fa5bc070080ed7965da1d888f6eb1797045365407c7011280af56",\n \t"PivotTotalDifficulty": "52367203434576253689712",\n \t"FastBlocks": true\n}\n'})}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"snap-sync-vs-other-sync-modes",children:"Snap Sync vs Other Sync Modes"}),"\n",(0,i.jsx)(n.p,{children:"More than 12TB of storage is needed today to run a full archive node \u2014 one that stores all the state since genesis.\nBecause of that, setting up an archive node can take days or even weeks. Fast Sync can still take more than 24 hours on\nthe fast machine and download about 90GB state data. With Snap Sync, sync time is reduced to 2-3h with a download of\nabout 30GB."}),"\n",(0,i.jsx)(n.p,{children:"This reduction in sync time and download size has to do with the specific way in which Ethereum\u2019s state is stored in a\nnode: Merkle trees."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(5330).A+"",width:"1168",height:"939"})}),"\n",(0,i.jsx)(n.p,{children:"With Fast Sync, a node downloads the headers of each block and retrieves all the nodes beneath it until it reaches the\nleaves. By contrast, Snap Sync only downloads the leaf nodes, generating the remaining nodes locally which saves time\nand packets downloaded."}),"\n",(0,i.jsx)(n.h4,{id:"current-limitations-and-future-development",children:"Current limitations and future development"}),"\n",(0,i.jsx)(n.p,{children:"For now Snap Sync on the Nethermind client can only download the Ethereum state but not serve it to other clients - snap\nserving development is in progress, expected late 2023/early 2024."}),"\n",(0,i.jsx)(n.p,{children:"The only Ethereum client that supports serving Snap Sync requests is Geth, so only networks supported by Geth can be\nsynced using that method: Mainnet, Goerli, Sepolia."}),"\n",(0,i.jsx)(n.h2,{id:"fast-sync",children:"Fast Sync"}),"\n",(0,i.jsxs)(n.p,{children:["After completing the fast sync your node will have the ability to answer questions like ",(0,i.jsxs)(n.em,{children:["'what is my account\nbalance ",(0,i.jsx)(n.strong,{children:"now"}),"'"]}),", ",(0,i.jsxs)(n.em,{children:["'how many XYZ tokens SomeExchange holds ",(0,i.jsx)(n.strong,{children:"at the moment"}),"'"]}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Fast sync has multiple stages. Nethermind uses a ",(0,i.jsx)(n.code,{children:"pivot block"})," number to improve fast sync performance.\nThe ",(0,i.jsx)(n.code,{children:"pivot block"})," data is automatically updated after initialization of the client and consists of\nthe ",(0,i.jsx)(n.code,{children:"block number"}),", ",(0,i.jsx)(n.code,{children:"block hash"})," and ",(0,i.jsx)(n.code,{children:"block total difficulty"})," (please note that ",(0,i.jsx)(n.code,{children:"total difficulty"})," is different\nthan ",(0,i.jsx)(n.code,{children:"difficulty"}),"). Before synchronizing state data Nethermind synchronizes in two directions - backwards\nfrom ",(0,i.jsx)(n.code,{children:"pivot block"})," to 0 for headers and forward to the head of the chain for headers, blocks and receipts. Forward sync\nmight be very slow (5 - 50 bps) so having fresh pivot block is very important - it is guaranteed by recently implemented\nauto-update."]}),"\n",(0,i.jsx)(n.p,{children:"After downloading the block data Nethermind will start state sync (downloading the latest state trie nodes). We are\nproviding an estimate for the download size and progress but the real value may be different than the estimate (\nespecially if you are using an old version of Nethermind as we sometimes manually adjust the estimator based on our\nobservations of the chain growth rate). Because of this sometimes your sync may continue even when it shows ~100%\nfinished. The other important component is the speed of your sync - if your IO / network / file system causes the state\nsync to go much slower than around 1.5MB per second on average then you will start downloading some parts of the trie\nover and over again. In such cases you may be surprised to see something like 58000MB / 53000MB (100%). It means that\nyou downloaded around 5GB of data that is no longer needed. If your sync is very slow (extended beyond two days) then\nvery likely your setup cannot catch up with the chain progress."}),"\n",(0,i.jsxs)(n.p,{children:["After the state sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," messages like in archive sync - it means that your node\nis in sync and is processing the latest blocks."]}),"\n",(0,i.jsx)(n.p,{children:"Mainnet sync, at the time of writing (December 2020), takes around 8 hours on an UpCloud 16GB RAM 8 CPU $40 VM (and then\nsyncs receipts and bodies in the background if you enabled them in the configuration). Goerli sync should take around 40\nminutes."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast sync logs example for mainnet.",src:s(7017).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsxs)(n.p,{children:["State sync log messages have multiple values displayed. First ",(0,i.jsx)(n.code,{children:"dd.HH:mm:ss"})," total state sync time is displayed, followed\nby an estimated sync progress (percentage of total database data synced), then the current download speed is displayed (\nthere will be times when it will slow down to 0 or single digit numbers, especially towards the end of the sync). In\ngeneral 6 hours sync times shown on screenshots are with around 2000 kB/s (kilobytes per second) average sync rate. You\ncan calculate it in the example as ~45GB / (2MB/s) ~ 22500 seconds ~6.25 hours. We also display the number of state\naccounts synced, number of trie nodes synced and a diagnostic message in the format of ",(0,i.jsx)(n.em,{children:"[number_of_pending_requests]\n.[average time spent in response handler displayed as milliseconds]"}),". So ",(0,i.jsx)(n.code,{children:"5.6.20ms"})," means that we are awaiting for\nresponses to 5 requests that have been sent to peers and the average time it takes us to process a single response is\n6.20ms. The response handling times will differ depending on how many trie nodes are already cached (so they will be\nsignificantly slower for a while after the node restart when cache has to be rebuilt) and based on how fast the database\nIO is (SSD vs NVMe vs cloud drives). For a reasonable sync time you probably should expect these values to be below\n15ms (but they may be as high as 700ms for a while after restarting the node)."]}),"\n",(0,i.jsx)(n.p,{children:"A single restart of the node during the fast sync may extend the sync time by up to two hours because the node has to\nrebuild the caches by reading millions of values from the database."}),"\n",(0,i.jsx)(n.p,{children:"At the last stages of the sync the node will be repeatedly displaying the branch sync progress and changing the block\nnumber to which it tries to catch up. This stage should take between 30 minutes and two hours. If it lasts much more\nthen it is possible that you will not be able to catch up with the network progress."}),"\n",(0,i.jsx)(n.p,{children:"One of the best indicators that you are close to be synced is combined ~100% state size progress and nearly 100% branch\nsync progress."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(2725).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(3203).A+"",width:"1895",height:"795"})}),"\n",(0,i.jsx)(n.h2,{id:"archive-sync",children:"Archive Sync"}),"\n",(0,i.jsxs)(n.p,{children:["Archive sync is the 'heaviest' and slowest sync mode but allows to ask questions like ",(0,i.jsx)(n.em,{children:"'what was the balance of my\naccount 2 years ago?'"}),", ",(0,i.jsx)(n.em,{children:"'how many XYZ token were held in SomeExchange custody in 2017?'"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["We have prepared default archive sync configurations and they can be launched from Nethermind Launcher (just choose the\narchive options) or by simply loading appropriate config when launching ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config goerli_archive"})}),"\n",(0,i.jsx)(n.p,{children:"While for some smaller networks archive sync can complete very quickly (in minutes or hours) mainnet sync would take 2 -\n6 weeks depending on the speed of your IO (whether you use SSD or NVMe or depending on the cloud provider IOPS).\nDatabase size in archive sync is the biggest from all modes as you will store all the historical data."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Example of the archive sync logs",src:s(4466).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(9175).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:"Explanation of some data in the logs:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["at the beginning you may see a ",(0,i.jsx)(n.em,{children:"'Waiting for peers...'"})," message while the node is trying to discover nodes that it can\nsync with."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Downloaded 1234/8000000'"})," shows the number of unprocessed blocks (with transactions) downloaded from the network.\nFor ",(0,i.jsx)(n.code,{children:"mainnet"}),"this value may be slower than processing at first but very quickly you will see blocks being downloaded\nmuch faster than processed. Empty blocks can be as small as 512 bytes (just headers without transactions) and full\nblocks with heavy transactions can reach a few hundred kilobytes. We display both current download speed (calculated\nin the last second) and average (total) speed since starting the node."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Processed ...'"})," displays the blocks that have been processed by the EVM. The first number shows the current head\nblock number, then you can see ",(0,i.jsx)(n.code,{children:"mgasps"})," (million gas per second) - current and total, then ",(0,i.jsx)(n.code,{children:"tps"})," (transactions per\nsecond) - current and total, ",(0,i.jsx)(n.code,{children:"bps"})," (blocks per second). Then ",(0,i.jsx)(n.code,{children:"recv queue"})," (transactions signature public key recovery\nqueue), ",(0,i.jsx)(n.code,{children:"proc queue"})," (processor queue). Both recovery queue and processor queue are designed so when too many blocks\nare waiting for processing then only their hashes are kept in memory and remaining data are stored in the database.\nThus, the queues numbers that you can see will be capped by some number."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Cache for epoch...'"})," informs about ",(0,i.jsx)(n.code,{children:"ethash"})," cache needed for block seal verification (only on ",(0,i.jsx)(n.code,{children:"mainnet"}),"\nand ",(0,i.jsx)(n.code,{children:"ropsten"}),"). Caches will be calculated every 30000 blocks (length of an epoch) but can also be calculated for the\nlatest blocks that are being broadcast on the network."]}),"\n",(0,i.jsxs)(n.li,{children:["After the archive sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," message appearing on average every 15 seconds when\nthe new block is processed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mgasps"}),", ",(0,i.jsx)(n.code,{children:"tps"}),", ",(0,i.jsx)(n.code,{children:"bps"})," values should not be treated as comparable as they may differ massively on different parts of\nthe chain. For example when blocks are empty you may see very high ",(0,i.jsx)(n.code,{children:"bps"})," values with very low (or even zero) ",(0,i.jsx)(n.code,{children:"tps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," values as there are no transactions and no gas for EVM processing and blocks are very light. On the other\nhand when blocks are filled with very heavy transactions then ",(0,i.jsx)(n.code,{children:"bps"})," might be very low while ",(0,i.jsx)(n.code,{children:"mgasps"})," will be very\nhigh. It is even possible that you will see a lot of very light transactions where ",(0,i.jsx)(n.code,{children:"tps"})," will be high while ",(0,i.jsx)(n.code,{children:"bps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," will be average."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,i.jsx)(n.p,{children:"Sync time heavily depends on the hardware used for the node, network speed, and peering. We are constantly pursuing to make it as fast as possible. Below is a brief on how the sync time looks on different machines and various chains (tested with Nethermind v1.21.0)."}),"\n",(0,i.jsxs)(r.A,{children:[(0,i.jsxs)(l.A,{value:"highend-vm",label:"High-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Akamai (formerly Linode)"}),"\n",(0,i.jsx)(n.li,{children:"CPU: AMD EPYC 7601, 16 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 64 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1.2 TB, ~40k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 7h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 58m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 2m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 5m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 21m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 22m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 17m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 46m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 31m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 10m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"midend-vm",label:"Mid-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: AWS"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/c7g/",children:"c7g.2xlarge"}),": 8 vCPU, 16 GiB memory"]}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~10k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 12h 37m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 35m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1h 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 43m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 2h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 4h 28m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 10m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 23m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 35m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 17m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 29m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 18h 28m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 52m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 25m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 5m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"oldspec-vm",label:"Old-spec VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Scaleway"}),"\n",(0,i.jsx)(n.li,{children:"CPU: Intel Xeon Processor E5-2620 v2, 2 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 192 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~44k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 1m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 29m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 25m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 3h 39m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 8h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 5h 55m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 34m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 14m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 16m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 2h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 26m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 45m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 56m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 30m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 3h 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 25m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"energyweb",label:"Energy Web",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 7m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 15h 20m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"volta",label:"Volta",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 14h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 42m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 16h 10m"]}),"\n"]})]})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"resync-a-node-from-scratch",children:"Resync a node from scratch"}),"\n",(0,i.jsx)(n.p,{children:"This guide explains how to resync a Nethermind node using the existing Pivot block or updating it to a more recent one."}),"\n",(0,i.jsx)(n.h3,{id:"steps-to-resync-a-nethermind-node",children:"Steps to Resync a Nethermind Node"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Stop the Nethermind node"}),": If your Nethermind node is currently running, stop it to ensure that no new data is\nbeing written to the database during the resync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Delete the existing database"}),": Navigate to the Nethermind data directory. The location of this directory depends\non how Nethermind was installed and your configuration settings. Inside the data directory, find the ",(0,i.jsx)(n.code,{children:"nethermind_db"}),"\nfolder and delete the ",(0,i.jsx)(n.code,{children:"mainnet"})," subfolder to remove the existing database for the mainnet."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the configuration file (optional)"}),": If you want to change any configuration settings before resyncing the\nnode, edit the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file located in the Nethermind directory. For example, you might want to adjust the\npruning settings or specify a different network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the Pivot block (optional)"}),"\\","\n",(0,i.jsx)(n.admonition,{type:"danger",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Only for versions before 1.19.0 where Auto-Pivot approach was introduced"})})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Etherscan"}),": If you want to speed up the syncing process, you can update the Pivot block to a more recent\none. To do this, find the ",(0,i.jsx)(n.code,{children:"Sync"})," section in the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file and update the ",(0,i.jsx)(n.code,{children:"PivotNumber"})," and ",(0,i.jsx)(n.code,{children:"PivotHash"}),'\nfields to match a recent "finalized" block number and its corresponding hash. You can obtain this information from\na block explorer such as ',(0,i.jsx)(n.a,{href:"https://etherscan.io/",children:"Etherscan"}),".",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.br,{}),"\n","Using block number 17165278 from ",(0,i.jsx)(n.a,{href:"https://etherscan.io/block/17165278",children:"Etherscan"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:' { \n \t "PivotNumber": 17165278,\n \t "PivotHash": "0xa665315efd923f3b11215feee09a9d3e13c5e6ee602fa19b642824682ec0a752"\n }\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Nethermind's GitHub"}),": Alternatively, you can update the Pivot block by referring to\nthe ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:"Nethermind's mainnet.cfg file on GitHub"}),".\nThe Pivot block is periodically bumped to the HEAD-8192 block of the mainnet chain. Copy the ",(0,i.jsx)(n.code,{children:"PivotNumber"}),"\nand ",(0,i.jsx)(n.code,{children:"PivotHash"})," values from the GitHub file and update your local ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file accordingly."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Restart the Nethermind node"}),": Start the Nethermind node again to initiate the resync process. The node will begin\nsyncing from the existing Pivot block or the specified updated Pivot block, downloading and processing all the blocks\nin the blockchain."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To ensure that your Nethermind node is resyncing, you can monitor the logs for the node's progress. The logs will\ndisplay information about the block processing, synchronization status and ",(0,i.jsx)(n.code,{children:"OldHeaders"})," being processed. By observing\nthe increasing block numbers and synchronization messages in the logs, you can confirm that the resync process is active\nand working as expected."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Old Headers 0 / 17154000 | queue 0 | current 0.00bps | total 0.00bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 768 / 17154000 | queue 0 | current 766.07bps | total 762.49bps"}),"\n",(0,i.jsx)(n.p,{children:"Beacon Headers from block 17154001 to block 17169722 | 960 / 15722 | queue 4992 | current 0.00bps | total\n40622848.83bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 9024 / 17154000 | queue 0 | current 576.40bps | total 1286.40bps"}),"\n",(0,i.jsxs)(n.p,{children:["Beacon Headers from block 17154001 to block 17169723 | 9024 / 15723 | queue 6698 | current 2694.81bps | total\n3882943.63bps",(0,i.jsx)(n.br,{}),"\n","Downloaded 17154031 / 17172359 | current 0.00bps | total 0.00bps"]}),"\n",(0,i.jsx)(n.p,{children:"Downloaded 17154062 / 17169724 | current 0.00bps | total 2.88bps"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Keep in mind that resyncing a Nethermind node can take a considerable amount of time. It depends on your hardware,\ninternet connection, and the size of the blockchain."})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var i=s(4164);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>w});var i=s(6540),t=s(4164),r=s(3104),l=s(6347),d=s(205),o=s(7485),a=s(1682),c=s(679);function h(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:i,default:t}}=e;return{value:n,label:s,attributes:i,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,o.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=u(e),[l,o]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=s.find((e=>e.default))??s[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[a,h]=j({queryString:s,groupId:t}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,c.Dv)(s);return[t,(0,i.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),g=(()=>{const e=a??m;return x({value:e,tabValues:r})?e:null})();(0,d.A)((()=>{g&&o(g)}),[g]);return{selectedValue:l,selectValue:(0,i.useCallback)((e=>{if(!x({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),h(e),p(e)}),[h,p,r]),tabValues:r}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function b(e){let{className:n,block:s,selectedValue:i,selectValue:l,tabValues:d}=e;const o=[],{blockElementScrollPositionUntilNextRender:a}=(0,r.a_)(),c=e=>{const n=e.currentTarget,s=o.indexOf(n),t=d[s].value;t!==i&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const s=o.indexOf(e.currentTarget)+1;n=o[s]??o[0];break}case"ArrowLeft":{const s=o.indexOf(e.currentTarget)-1;n=o[s]??o[o.length-1];break}}n?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>o.push(e),onKeyDown:h,onClick:c,...r,className:(0,t.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":i===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:r}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=m(e);return(0,y.jsxs)("div",{className:(0,t.A)("tabs-container",g.tabList),children:[(0,y.jsx)(b,{...n,...e}),(0,y.jsx)(f,{...n,...e})]})}function w(e){const n=(0,p.A)();return(0,y.jsx)(v,{...e,children:h(e.children)},String(n))}},5330:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png"},9175:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png"},4466:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png"},7017:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png"},3203:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png"},2725:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png"},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var i=s(6540);const t={},r=i.createContext(t);function l(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7a41f229.d174ccdd.js b/assets/js/7a41f229.37ed76b3.js similarity index 99% rename from assets/js/7a41f229.d174ccdd.js rename to assets/js/7a41f229.37ed76b3.js index c68531e17..0126c3a50 100644 --- a/assets/js/7a41f229.d174ccdd.js +++ b/assets/js/7a41f229.37ed76b3.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9613],{4392:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>l,frontMatter:()=>o,metadata:()=>c,toc:()=>h});var s=t(4848),i=t(8453);const o={title:"Consensus clients",sidebar_position:3},r=void 0,c={id:"get-started/consensus-clients",title:"Consensus clients",description:"Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.",source:"@site/versioned_docs/version-1.27.0/get-started/consensus-clients.md",sourceDirName:"get-started",slug:"/get-started/consensus-clients",permalink:"/1.27.0/get-started/consensus-clients",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/get-started/consensus-clients.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"Consensus clients",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Installing Nethermind",permalink:"/1.27.0/get-started/installing-nethermind"},next:{title:"Migrating from Geth",permalink:"/1.27.0/get-started/migrating-from-geth"}},a={},h=[{value:"Choosing a consensus client",id:"choosing-a-consensus-client",level:2},{value:"Configuring JSON-RPC interface",id:"configuring-json-rpc-interface",level:2},{value:"Running the consensus client",id:"running-the-consensus-client",level:2},{value:"Grandine",id:"grandine",level:3},{value:"Lighthouse",id:"lighthouse",level:3},{value:"Lodestar",id:"lodestar",level:3},{value:"Nimbus",id:"nimbus",level:3},{value:"Prysm",id:"prysm",level:3},{value:"Teku",id:"teku",level:3},{value:"Running Nethermind",id:"running-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.\nThe Merge changed how operators run nodes on the Ethereum blockchain. A node now needs two clients that work together as a pair. In addition to the ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#execution-client",children:"execution client"})," (e.g., Nethermind), you need a ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#consensus-client",children:"consensus client"})," that connects to the consensus layer and runs the PoS algorithm. This guide shows how to run an Ethereum node with Nethermind and a consensus client of your choice."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["An easy way to run both consensus and execution clients is with ",(0,s.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"}),". Sedge is a setup tool for PoS validators and nodes that runs on Linux and macOS."]})}),"\n",(0,s.jsx)(n.h2,{id:"choosing-a-consensus-client",children:"Choosing a consensus client"}),"\n",(0,s.jsx)(n.p,{children:"On the consensus layer, there are 5 client implementations to choose from. Though all consensus clients are great, check them out yourself to find the one best suited to your needs."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku"})}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.p,{children:["We urge you to take ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/client-diversity",children:"client diversity"})," into consideration when choosing your consensus client and avoid the majority clients."]})}),"\n",(0,s.jsx)(n.h2,{id:"configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"\n",(0,s.jsxs)(n.p,{children:["Execution and consensus clients communicate via an authenticated endpoint specified in Engine JSON-RPC API. In order to connect to a consensus client, the execution client must generate a ",(0,s.jsx)(n.a,{href:"https://jwt.io",children:"JWT"})," secret at a known path. Although the secret is generated automatically by Nethermind on startup at ",(0,s.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory, in some cases, you might need to do it yourself. You can generate one using ",(0,s.jsx)(n.a,{href:"https://www.openssl.org",children:"OpenSSL"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"openssl rand -hex 32 > path/to/jwt.hex\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"Since the JWT secret is simply a 64-character hex value, there are many other ways of generating it, including online resources. However, for security reasons, we recommend using OpenSSL."})}),"\n",(0,s.jsxs)(n.p,{children:["The generated JWT secret can be specified with the ",(0,s.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option. For more configuration options, see ",(0,s.jsx)(n.a,{href:"/1.27.0/interacting/json-rpc-server#engine-api",children:"Engine API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-the-consensus-client",children:"Running the consensus client"}),"\n",(0,s.jsxs)(n.p,{children:["This step assumes that you have already ",(0,s.jsx)(n.a,{href:"/1.27.0/get-started/installing-nethermind",children:"installed"})," Nethermind, the ",(0,s.jsx)(n.a,{href:"#choosing-a-consensus-client",children:"consensus client"})," of your choice, and, optionally, created the ",(0,s.jsx)(n.a,{href:"#configuring-json-rpc-interface",children:"JWT secret"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["As syncing from the scratch can take a very long time on some networks (up to several days), the commands below optionally use ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/#checkpoint-sync",children:"checkpoint sync"})," to speed up the process."]})}),"\n",(0,s.jsx)(n.h3,{id:"grandine",children:"Grandine"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"grandine \\\n --network mainnet \\\n --eth1-rpc-urls http://localhost:8551 \\\n --jwt-secret path/to/jwt.hex \\\n --checkpoint-sync-url https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Grandine on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lighthouse",children:"Lighthouse"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lighthouse bn \\\n --network mainnet \\\n --execution-endpoint http://localhost:8551 \\\n --execution-jwt path/to/jwt.hex \\\n --checkpoint-sync-url https://mainnet.checkpoint.sigp.io \\\n --http\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lighthouse on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lodestar",children:"Lodestar"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lodestar beacon \\\n --network mainnet \\\n --jwt-secret path/to/jwt.hex \\\n --checkpointSyncUrl https://beaconstate-mainnet.chainsafe.io\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lodestar on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpointSyncUrl"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"nimbus",children:"Nimbus"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./run-mainnet-beacon-node.sh \\\n --web3-url=http://127.0.0.1:8551 \\\n --jwt-secret=path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Numbus on Mainnet without checkpoint sync. For checkpoint sync, see ",(0,s.jsx)(n.a,{href:"https://nimbus.guide/trusted-node-sync.html",children:"Sync from a trusted node"}),". For other networks, see the ",(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus documentation"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"prysm",children:"Prysm"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./prysm.sh beacon-chain \\\n --mainnet \\\n --execution-endpoint=http://localhost:8551 \\\n --jwt-secret=path/to/jwt.hex \\\n --checkpoint-sync-url=https://beaconstate.ethstaker.cc \\\n --genesis-beacon-api-url=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Prysm on Mainnet. For other networks, replace the ",(0,s.jsx)(n.code,{children:"--mainnet"})," and set ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," and ",(0,s.jsx)(n.code,{children:"--genesis-beacon-api-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"teku",children:"Teku"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"teku \\\n --network=mainnet \\\n --ee-endpoint=http://localhost:8551 \\\n --ee-jwt-secret-file=path/to/jwt.hex \\\n --metrics-enabled=true \\\n --rest-api-enabled=true \\\n --initial-state=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Teku on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--initial-state"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-nethermind",children:"Running Nethermind"}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsx)(n.p,{children:"The consensus client must be running before you start Nethermind."})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Nethermind on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"-c"})," option accordingly. For more info, see ",(0,s.jsx)(n.a,{href:"/1.27.0/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9613],{4392:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>l,frontMatter:()=>o,metadata:()=>c,toc:()=>h});var s=t(4848),i=t(8453);const o={title:"Consensus clients",sidebar_position:3},r=void 0,c={id:"get-started/consensus-clients",title:"Consensus clients",description:"Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.",source:"@site/versioned_docs/version-1.27.0/get-started/consensus-clients.md",sourceDirName:"get-started",slug:"/get-started/consensus-clients",permalink:"/1.27.0/get-started/consensus-clients",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/get-started/consensus-clients.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"Consensus clients",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Installing Nethermind",permalink:"/1.27.0/get-started/installing-nethermind"},next:{title:"Migrating from Geth",permalink:"/1.27.0/get-started/migrating-from-geth"}},a={},h=[{value:"Choosing a consensus client",id:"choosing-a-consensus-client",level:2},{value:"Configuring JSON-RPC interface",id:"configuring-json-rpc-interface",level:2},{value:"Running the consensus client",id:"running-the-consensus-client",level:2},{value:"Grandine",id:"grandine",level:3},{value:"Lighthouse",id:"lighthouse",level:3},{value:"Lodestar",id:"lodestar",level:3},{value:"Nimbus",id:"nimbus",level:3},{value:"Prysm",id:"prysm",level:3},{value:"Teku",id:"teku",level:3},{value:"Running Nethermind",id:"running-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.\nThe Merge changed how operators run nodes on the Ethereum blockchain. A node now needs two clients that work together as a pair. In addition to the ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#execution-client",children:"execution client"})," (e.g., Nethermind), you need a ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#consensus-client",children:"consensus client"})," that connects to the consensus layer and runs the PoS algorithm. This guide shows how to run an Ethereum node with Nethermind and a consensus client of your choice."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["An easy way to run both consensus and execution clients is with ",(0,s.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"}),". Sedge is a setup tool for PoS validators and nodes that runs on Linux and macOS."]})}),"\n",(0,s.jsx)(n.h2,{id:"choosing-a-consensus-client",children:"Choosing a consensus client"}),"\n",(0,s.jsx)(n.p,{children:"On the consensus layer, there are 5 client implementations to choose from. Though all consensus clients are great, check them out yourself to find the one best suited to your needs."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku"})}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.p,{children:["We urge you to take ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/client-diversity",children:"client diversity"})," into consideration when choosing your consensus client and avoid the majority clients."]})}),"\n",(0,s.jsx)(n.h2,{id:"configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"\n",(0,s.jsxs)(n.p,{children:["Execution and consensus clients communicate via an authenticated endpoint specified in Engine JSON-RPC API. In order to connect to a consensus client, the execution client must generate a ",(0,s.jsx)(n.a,{href:"https://jwt.io",children:"JWT"})," secret at a known path. Although the secret is generated automatically by Nethermind on startup at ",(0,s.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory, in some cases, you might need to do it yourself. You can generate one using ",(0,s.jsx)(n.a,{href:"https://www.openssl.org",children:"OpenSSL"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"openssl rand -hex 32 > path/to/jwt.hex\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"Since the JWT secret is simply a 64-character hex value, there are many other ways of generating it, including online resources. However, for security reasons, we recommend using OpenSSL."})}),"\n",(0,s.jsxs)(n.p,{children:["The generated JWT secret can be specified with the ",(0,s.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option. For more configuration options, see ",(0,s.jsx)(n.a,{href:"/1.27.0/interacting/json-rpc-server#engine-api",children:"Engine API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-the-consensus-client",children:"Running the consensus client"}),"\n",(0,s.jsxs)(n.p,{children:["This step assumes that you have already ",(0,s.jsx)(n.a,{href:"/1.27.0/get-started/installing-nethermind",children:"installed"})," Nethermind, the ",(0,s.jsx)(n.a,{href:"#choosing-a-consensus-client",children:"consensus client"})," of your choice, and, optionally, created the ",(0,s.jsx)(n.a,{href:"#configuring-json-rpc-interface",children:"JWT secret"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["As syncing from the scratch can take a very long time on some networks (up to several days), the commands below optionally use ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/#checkpoint-sync",children:"checkpoint sync"})," to speed up the process."]})}),"\n",(0,s.jsx)(n.h3,{id:"grandine",children:"Grandine"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"grandine \\\n --network mainnet \\\n --eth1-rpc-urls http://localhost:8551 \\\n --jwt-secret path/to/jwt.hex \\\n --checkpoint-sync-url https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Grandine on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lighthouse",children:"Lighthouse"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lighthouse bn \\\n --network mainnet \\\n --execution-endpoint http://localhost:8551 \\\n --execution-jwt path/to/jwt.hex \\\n --checkpoint-sync-url https://mainnet.checkpoint.sigp.io \\\n --http\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lighthouse on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lodestar",children:"Lodestar"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lodestar beacon \\\n --network mainnet \\\n --jwt-secret path/to/jwt.hex \\\n --checkpointSyncUrl https://beaconstate-mainnet.chainsafe.io\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lodestar on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpointSyncUrl"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"nimbus",children:"Nimbus"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./run-mainnet-beacon-node.sh \\\n --web3-url=http://127.0.0.1:8551 \\\n --jwt-secret=path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Numbus on Mainnet without checkpoint sync. For checkpoint sync, see ",(0,s.jsx)(n.a,{href:"https://nimbus.guide/trusted-node-sync.html",children:"Sync from a trusted node"}),". For other networks, see the ",(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus documentation"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"prysm",children:"Prysm"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./prysm.sh beacon-chain \\\n --mainnet \\\n --execution-endpoint=http://localhost:8551 \\\n --jwt-secret=path/to/jwt.hex \\\n --checkpoint-sync-url=https://beaconstate.ethstaker.cc \\\n --genesis-beacon-api-url=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Prysm on Mainnet. For other networks, replace the ",(0,s.jsx)(n.code,{children:"--mainnet"})," and set ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," and ",(0,s.jsx)(n.code,{children:"--genesis-beacon-api-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"teku",children:"Teku"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"teku \\\n --network=mainnet \\\n --ee-endpoint=http://localhost:8551 \\\n --ee-jwt-secret-file=path/to/jwt.hex \\\n --metrics-enabled=true \\\n --rest-api-enabled=true \\\n --initial-state=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Teku on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--initial-state"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-nethermind",children:"Running Nethermind"}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsx)(n.p,{children:"The consensus client must be running before you start Nethermind."})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Nethermind on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"-c"})," option accordingly. For more info, see ",(0,s.jsx)(n.a,{href:"/1.27.0/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7b964f9b.35dc71f0.js b/assets/js/7b964f9b.f030a29c.js similarity index 99% rename from assets/js/7b964f9b.35dc71f0.js rename to assets/js/7b964f9b.f030a29c.js index bc5a2fed5..3c185a9b7 100644 --- a/assets/js/7b964f9b.35dc71f0.js +++ b/assets/js/7b964f9b.f030a29c.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4714],{8981:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>l,frontMatter:()=>o,metadata:()=>c,toc:()=>h});var s=t(4848),i=t(8453);const o={title:"Consensus clients",sidebar_position:3},r=void 0,c={id:"get-started/consensus-clients",title:"Consensus clients",description:"Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.",source:"@site/versioned_docs/version-1.28.0/get-started/consensus-clients.md",sourceDirName:"get-started",slug:"/get-started/consensus-clients",permalink:"/1.28.0/get-started/consensus-clients",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/get-started/consensus-clients.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"Consensus clients",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Installing Nethermind",permalink:"/1.28.0/get-started/installing-nethermind"},next:{title:"Migrating from Geth",permalink:"/1.28.0/get-started/migrating-from-geth"}},a={},h=[{value:"Choosing a consensus client",id:"choosing-a-consensus-client",level:2},{value:"Configuring JSON-RPC interface",id:"configuring-json-rpc-interface",level:2},{value:"Running the consensus client",id:"running-the-consensus-client",level:2},{value:"Grandine",id:"grandine",level:3},{value:"Lighthouse",id:"lighthouse",level:3},{value:"Lodestar",id:"lodestar",level:3},{value:"Nimbus",id:"nimbus",level:3},{value:"Prysm",id:"prysm",level:3},{value:"Teku",id:"teku",level:3},{value:"Running Nethermind",id:"running-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.\nThe Merge changed how operators run nodes on the Ethereum blockchain. A node now needs two clients that work together as a pair. In addition to the ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#execution-client",children:"execution client"})," (e.g., Nethermind), you need a ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#consensus-client",children:"consensus client"})," that connects to the consensus layer and runs the PoS algorithm. This guide shows how to run an Ethereum node with Nethermind and a consensus client of your choice."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["An easy way to run both consensus and execution clients is with ",(0,s.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"}),". Sedge is a setup tool for PoS validators and nodes that runs on Linux and macOS."]})}),"\n",(0,s.jsx)(n.h2,{id:"choosing-a-consensus-client",children:"Choosing a consensus client"}),"\n",(0,s.jsx)(n.p,{children:"On the consensus layer, there are 5 client implementations to choose from. Though all consensus clients are great, check them out yourself to find the one best suited to your needs."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku"})}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.p,{children:["We urge you to take ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/client-diversity",children:"client diversity"})," into consideration when choosing your consensus client and avoid the majority clients."]})}),"\n",(0,s.jsx)(n.h2,{id:"configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"\n",(0,s.jsxs)(n.p,{children:["Execution and consensus clients communicate via an authenticated endpoint specified in Engine JSON-RPC API. In order to connect to a consensus client, the execution client must generate a ",(0,s.jsx)(n.a,{href:"https://jwt.io",children:"JWT"})," secret at a known path. Although the secret is generated automatically by Nethermind on startup at ",(0,s.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory, in some cases, you might need to do it yourself. You can generate one using ",(0,s.jsx)(n.a,{href:"https://www.openssl.org",children:"OpenSSL"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"openssl rand -hex 32 > path/to/jwt.hex\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"Since the JWT secret is simply a 64-character hex value, there are many other ways of generating it, including online resources. However, for security reasons, we recommend using OpenSSL."})}),"\n",(0,s.jsxs)(n.p,{children:["The generated JWT secret can be specified with the ",(0,s.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option. For more configuration options, see ",(0,s.jsx)(n.a,{href:"/1.28.0/interacting/json-rpc-server#engine-api",children:"Engine API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-the-consensus-client",children:"Running the consensus client"}),"\n",(0,s.jsxs)(n.p,{children:["This step assumes that you have already ",(0,s.jsx)(n.a,{href:"/1.28.0/get-started/installing-nethermind",children:"installed"})," Nethermind, the ",(0,s.jsx)(n.a,{href:"#choosing-a-consensus-client",children:"consensus client"})," of your choice, and, optionally, created the ",(0,s.jsx)(n.a,{href:"#configuring-json-rpc-interface",children:"JWT secret"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["As syncing from the scratch can take a very long time on some networks (up to several days), the commands below optionally use ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/#checkpoint-sync",children:"checkpoint sync"})," to speed up the process."]})}),"\n",(0,s.jsx)(n.h3,{id:"grandine",children:"Grandine"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"grandine \\\n --network mainnet \\\n --eth1-rpc-urls http://localhost:8551 \\\n --jwt-secret path/to/jwt.hex \\\n --checkpoint-sync-url https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Grandine on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lighthouse",children:"Lighthouse"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lighthouse bn \\\n --network mainnet \\\n --execution-endpoint http://localhost:8551 \\\n --execution-jwt path/to/jwt.hex \\\n --checkpoint-sync-url https://mainnet.checkpoint.sigp.io \\\n --http\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lighthouse on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lodestar",children:"Lodestar"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lodestar beacon \\\n --network mainnet \\\n --jwt-secret path/to/jwt.hex \\\n --checkpointSyncUrl https://beaconstate-mainnet.chainsafe.io\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lodestar on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpointSyncUrl"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"nimbus",children:"Nimbus"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./run-mainnet-beacon-node.sh \\\n --web3-url=http://127.0.0.1:8551 \\\n --jwt-secret=path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Numbus on Mainnet without checkpoint sync. For checkpoint sync, see ",(0,s.jsx)(n.a,{href:"https://nimbus.guide/trusted-node-sync.html",children:"Sync from a trusted node"}),". For other networks, see the ",(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus documentation"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"prysm",children:"Prysm"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./prysm.sh beacon-chain \\\n --mainnet \\\n --execution-endpoint=http://localhost:8551 \\\n --jwt-secret=path/to/jwt.hex \\\n --checkpoint-sync-url=https://beaconstate.ethstaker.cc \\\n --genesis-beacon-api-url=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Prysm on Mainnet. For other networks, replace the ",(0,s.jsx)(n.code,{children:"--mainnet"})," and set ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," and ",(0,s.jsx)(n.code,{children:"--genesis-beacon-api-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"teku",children:"Teku"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"teku \\\n --network=mainnet \\\n --ee-endpoint=http://localhost:8551 \\\n --ee-jwt-secret-file=path/to/jwt.hex \\\n --metrics-enabled=true \\\n --rest-api-enabled=true \\\n --initial-state=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Teku on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--initial-state"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-nethermind",children:"Running Nethermind"}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsx)(n.p,{children:"The consensus client must be running before you start Nethermind."})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Nethermind on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"-c"})," option accordingly. For more info, see ",(0,s.jsx)(n.a,{href:"/1.28.0/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4714],{8981:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>l,frontMatter:()=>o,metadata:()=>c,toc:()=>h});var s=t(4848),i=t(8453);const o={title:"Consensus clients",sidebar_position:3},r=void 0,c={id:"get-started/consensus-clients",title:"Consensus clients",description:"Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.",source:"@site/versioned_docs/version-1.28.0/get-started/consensus-clients.md",sourceDirName:"get-started",slug:"/get-started/consensus-clients",permalink:"/1.28.0/get-started/consensus-clients",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/get-started/consensus-clients.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"Consensus clients",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Installing Nethermind",permalink:"/1.28.0/get-started/installing-nethermind"},next:{title:"Migrating from Geth",permalink:"/1.28.0/get-started/migrating-from-geth"}},a={},h=[{value:"Choosing a consensus client",id:"choosing-a-consensus-client",level:2},{value:"Configuring JSON-RPC interface",id:"configuring-json-rpc-interface",level:2},{value:"Running the consensus client",id:"running-the-consensus-client",level:2},{value:"Grandine",id:"grandine",level:3},{value:"Lighthouse",id:"lighthouse",level:3},{value:"Lodestar",id:"lodestar",level:3},{value:"Nimbus",id:"nimbus",level:3},{value:"Prysm",id:"prysm",level:3},{value:"Teku",id:"teku",level:3},{value:"Running Nethermind",id:"running-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.\nThe Merge changed how operators run nodes on the Ethereum blockchain. A node now needs two clients that work together as a pair. In addition to the ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#execution-client",children:"execution client"})," (e.g., Nethermind), you need a ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#consensus-client",children:"consensus client"})," that connects to the consensus layer and runs the PoS algorithm. This guide shows how to run an Ethereum node with Nethermind and a consensus client of your choice."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["An easy way to run both consensus and execution clients is with ",(0,s.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"}),". Sedge is a setup tool for PoS validators and nodes that runs on Linux and macOS."]})}),"\n",(0,s.jsx)(n.h2,{id:"choosing-a-consensus-client",children:"Choosing a consensus client"}),"\n",(0,s.jsx)(n.p,{children:"On the consensus layer, there are 5 client implementations to choose from. Though all consensus clients are great, check them out yourself to find the one best suited to your needs."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku"})}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.p,{children:["We urge you to take ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/client-diversity",children:"client diversity"})," into consideration when choosing your consensus client and avoid the majority clients."]})}),"\n",(0,s.jsx)(n.h2,{id:"configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"\n",(0,s.jsxs)(n.p,{children:["Execution and consensus clients communicate via an authenticated endpoint specified in Engine JSON-RPC API. In order to connect to a consensus client, the execution client must generate a ",(0,s.jsx)(n.a,{href:"https://jwt.io",children:"JWT"})," secret at a known path. Although the secret is generated automatically by Nethermind on startup at ",(0,s.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory, in some cases, you might need to do it yourself. You can generate one using ",(0,s.jsx)(n.a,{href:"https://www.openssl.org",children:"OpenSSL"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"openssl rand -hex 32 > path/to/jwt.hex\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"Since the JWT secret is simply a 64-character hex value, there are many other ways of generating it, including online resources. However, for security reasons, we recommend using OpenSSL."})}),"\n",(0,s.jsxs)(n.p,{children:["The generated JWT secret can be specified with the ",(0,s.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option. For more configuration options, see ",(0,s.jsx)(n.a,{href:"/1.28.0/interacting/json-rpc-server#engine-api",children:"Engine API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-the-consensus-client",children:"Running the consensus client"}),"\n",(0,s.jsxs)(n.p,{children:["This step assumes that you have already ",(0,s.jsx)(n.a,{href:"/1.28.0/get-started/installing-nethermind",children:"installed"})," Nethermind, the ",(0,s.jsx)(n.a,{href:"#choosing-a-consensus-client",children:"consensus client"})," of your choice, and, optionally, created the ",(0,s.jsx)(n.a,{href:"#configuring-json-rpc-interface",children:"JWT secret"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["As syncing from the scratch can take a very long time on some networks (up to several days), the commands below optionally use ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/#checkpoint-sync",children:"checkpoint sync"})," to speed up the process."]})}),"\n",(0,s.jsx)(n.h3,{id:"grandine",children:"Grandine"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"grandine \\\n --network mainnet \\\n --eth1-rpc-urls http://localhost:8551 \\\n --jwt-secret path/to/jwt.hex \\\n --checkpoint-sync-url https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Grandine on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lighthouse",children:"Lighthouse"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lighthouse bn \\\n --network mainnet \\\n --execution-endpoint http://localhost:8551 \\\n --execution-jwt path/to/jwt.hex \\\n --checkpoint-sync-url https://mainnet.checkpoint.sigp.io \\\n --http\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lighthouse on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lodestar",children:"Lodestar"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lodestar beacon \\\n --network mainnet \\\n --jwt-secret path/to/jwt.hex \\\n --checkpointSyncUrl https://beaconstate-mainnet.chainsafe.io\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lodestar on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpointSyncUrl"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"nimbus",children:"Nimbus"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./run-mainnet-beacon-node.sh \\\n --web3-url=http://127.0.0.1:8551 \\\n --jwt-secret=path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Numbus on Mainnet without checkpoint sync. For checkpoint sync, see ",(0,s.jsx)(n.a,{href:"https://nimbus.guide/trusted-node-sync.html",children:"Sync from a trusted node"}),". For other networks, see the ",(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus documentation"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"prysm",children:"Prysm"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./prysm.sh beacon-chain \\\n --mainnet \\\n --execution-endpoint=http://localhost:8551 \\\n --jwt-secret=path/to/jwt.hex \\\n --checkpoint-sync-url=https://beaconstate.ethstaker.cc \\\n --genesis-beacon-api-url=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Prysm on Mainnet. For other networks, replace the ",(0,s.jsx)(n.code,{children:"--mainnet"})," and set ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," and ",(0,s.jsx)(n.code,{children:"--genesis-beacon-api-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"teku",children:"Teku"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"teku \\\n --network=mainnet \\\n --ee-endpoint=http://localhost:8551 \\\n --ee-jwt-secret-file=path/to/jwt.hex \\\n --metrics-enabled=true \\\n --rest-api-enabled=true \\\n --initial-state=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Teku on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--initial-state"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-nethermind",children:"Running Nethermind"}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsx)(n.p,{children:"The consensus client must be running before you start Nethermind."})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Nethermind on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"-c"})," option accordingly. For more info, see ",(0,s.jsx)(n.a,{href:"/1.28.0/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7bdbbf02.712f2995.js b/assets/js/7bdbbf02.fe1586f6.js similarity index 99% rename from assets/js/7bdbbf02.712f2995.js rename to assets/js/7bdbbf02.fe1586f6.js index 54c5057f5..91169fd8a 100644 --- a/assets/js/7bdbbf02.712f2995.js +++ b/assets/js/7bdbbf02.fe1586f6.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2944],{5093:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var t=i(4848),l=i(8453);const s={title:"Plugins",sidebar_position:1},o=void 0,r={id:"developers/plugins",title:"Plugins",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.27.0/developers/plugins.md",sourceDirName:"developers",slug:"/developers/plugins",permalink:"/1.27.0/developers/plugins",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/developers/plugins.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Plugins",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Building from source",permalink:"/1.27.0/developers/building-from-source"},next:{title:"Custom analytic tools",permalink:"/1.27.0/developers/custom-analytic-tools"}},a={},c=[{value:"RPC Plugin example:",id:"rpc-plugin-example",level:2},{value:"CLI Plugin example:",id:"cli-plugin-example",level:2},{value:"Block Tree Visitor Plugin example:",id:"block-tree-visitor-plugin-example",level:2},{value:"Config plugin example:",id:"config-plugin-example",level:2},{value:"State Tree Visitor example:",id:"state-tree-visitor-example",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,t.jsx)(n.p,{children:"Nethermind plugins is a powerful way of extending your local node capabilities."}),"\n",(0,t.jsxs)(n.p,{children:["(see also an article\nhere: ",(0,t.jsx)(n.a,{href:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59",children:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59"}),")"]}),"\n",(0,t.jsx)(n.p,{children:"Plugins that you can write:"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"Plugin Type"}),(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"What can it be used for?"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"RPC"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Adding additional RPC modules to the client that have full access to the internal Nethermind APIs and can extend capabilities of the node when integrating with your infrastructure / systems."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Block Tree Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Code allowing you to analyze entire block tree from genesis to the head block and execute aggregated calculations and checks."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Devp2p"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allows you to create additional devp2p network protocol for your nodes to communicate over TCP/IP. You can also build custom products that will run attached to Nethermind nodes."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"State Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allow you to run aggregated analysis on the entire raw format state (or just some accounts storages)."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Config"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"You can add additional configuration categories to our config files and then use them in env variables, json files or command line to configure behaviour of your plugins."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool behaviours and listeners."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Tracers"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Custom, powerful EVM tracers capable of extracting elements of EVM execution in real time."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"CLI"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Additional modules for Nethermind CLI that can allow you build some quick scratchpad style JavaScript based behaviors."})]})]})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," When writing a plugin be carefull about exceptions you throw. Especially if you are hooking up event handlers\non some core objects like BlockProcessor or BlockTree. Those exceptions can bring the node down. This is by design. Its\nresponsibility of plugin writer to correctly handle those exceptions."]}),"\n",(0,t.jsx)(n.p,{children:"How to build a plugin? We included an example inside the Nethermind.Analytics plugin:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:i(7200).A+"",width:"547",height:"417"})}),"\n",(0,t.jsx)(n.h2,{id:"rpc-plugin-example",children:"RPC Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' [RpcModule(ModuleType.Clique)]\n public interface IAnalyticsModule : IModule\n {\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from state.", IsImplemented = true)]\n ResultWrapper analytics_verifySupply();\n\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from rewards.", IsImplemented = true)]\n ResultWrapper analytics_verifyRewards();\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"cli-plugin-example",children:"CLI Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'[CliModule("analytics")]\npublic class AnalyticsCliModule : CliModuleBase\n{\n [CliFunction("analytics", "verifySupply")]\n public string VerifySupply()\n {\n return NodeManager.Post("analytics_verifySupply").Result;\n }\n\n [CliFunction("analytics", "verifyRewards")]\n public string VerifyRewards()\n {\n return NodeManager.Post("analytics_verifyRewards").Result;\n }\n\n public AnalyticsCliModule(ICliEngine cliEngine, INodeManager nodeManager)\n : base(cliEngine, nodeManager) { }\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"block-tree-visitor-plugin-example",children:"Block Tree Visitor Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive { get; }\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n\n public UInt256 BlockRewards { get; private set; }\n\n public RewardsVerifier(ILogManager logManager, long endLevelExclusive)\n {\n _logger = logManager.GetClassLogger();\n EndLevelExclusive = endLevelExclusive;\n BlockRewards = _genesisAllocations;\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n BlockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {BlockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(HeaderVisitOutcome.None);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"config-plugin-example",children:"Config plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:"public class AnalyticsConfig : IAnalyticsConfig\n{\n public bool PluginsEnabled { get; set; }\n public bool StreamTransactions { get; set; }\n public bool StreamBlocks { get; set; }\n public bool LogPublishedData { get; set; }\n}\n"})}),"\n",(0,t.jsx)(n.h2,{id:"state-tree-visitor-example",children:"State Tree Visitor example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'public class SupplyVerifier : ITreeVisitor\n{\n private readonly ILogger _logger;\n private HashSet _ignoreThisOne = new HashSet();\n private int _accountsVisited;\n private int _nodesVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public UInt256 Balance { get; set; } = UInt256.Zero;\n\n public bool ShouldVisit(Keccak nextNode)\n {\n if (_ignoreThisOne.Count > 16)\n {\n _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");\n }\n\n if (_ignoreThisOne.Contains(nextNode))\n {\n _ignoreThisOne.Remove(nextNode);\n return false;\n }\n\n return true;\n }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)\n {\n }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)\n {\n _logger.Warn($"Missing node {nodeHash}");\n }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n for (int i = 0; i < 16; i++)\n {\n Keccak childHash = node.GetChildHash(i);\n if (childHash != null)\n {\n _ignoreThisOne.Add(childHash);\n }\n }\n }\n }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n if (trieVisitContext.IsStorage)\n {\n _ignoreThisOne.Add(node.GetChildHash(0));\n }\n }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n Balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n }\n}\n'})})]})}function u(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},7200:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png"},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var t=i(6540);const l={},s=t.createContext(l);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2944],{5093:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var t=i(4848),l=i(8453);const s={title:"Plugins",sidebar_position:1},o=void 0,r={id:"developers/plugins",title:"Plugins",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.27.0/developers/plugins.md",sourceDirName:"developers",slug:"/developers/plugins",permalink:"/1.27.0/developers/plugins",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/developers/plugins.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Plugins",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Building from source",permalink:"/1.27.0/developers/building-from-source"},next:{title:"Custom analytic tools",permalink:"/1.27.0/developers/custom-analytic-tools"}},a={},c=[{value:"RPC Plugin example:",id:"rpc-plugin-example",level:2},{value:"CLI Plugin example:",id:"cli-plugin-example",level:2},{value:"Block Tree Visitor Plugin example:",id:"block-tree-visitor-plugin-example",level:2},{value:"Config plugin example:",id:"config-plugin-example",level:2},{value:"State Tree Visitor example:",id:"state-tree-visitor-example",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,t.jsx)(n.p,{children:"Nethermind plugins is a powerful way of extending your local node capabilities."}),"\n",(0,t.jsxs)(n.p,{children:["(see also an article\nhere: ",(0,t.jsx)(n.a,{href:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59",children:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59"}),")"]}),"\n",(0,t.jsx)(n.p,{children:"Plugins that you can write:"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"Plugin Type"}),(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"What can it be used for?"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"RPC"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Adding additional RPC modules to the client that have full access to the internal Nethermind APIs and can extend capabilities of the node when integrating with your infrastructure / systems."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Block Tree Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Code allowing you to analyze entire block tree from genesis to the head block and execute aggregated calculations and checks."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Devp2p"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allows you to create additional devp2p network protocol for your nodes to communicate over TCP/IP. You can also build custom products that will run attached to Nethermind nodes."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"State Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allow you to run aggregated analysis on the entire raw format state (or just some accounts storages)."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Config"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"You can add additional configuration categories to our config files and then use them in env variables, json files or command line to configure behaviour of your plugins."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool behaviours and listeners."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Tracers"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Custom, powerful EVM tracers capable of extracting elements of EVM execution in real time."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"CLI"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Additional modules for Nethermind CLI that can allow you build some quick scratchpad style JavaScript based behaviors."})]})]})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," When writing a plugin be carefull about exceptions you throw. Especially if you are hooking up event handlers\non some core objects like BlockProcessor or BlockTree. Those exceptions can bring the node down. This is by design. Its\nresponsibility of plugin writer to correctly handle those exceptions."]}),"\n",(0,t.jsx)(n.p,{children:"How to build a plugin? We included an example inside the Nethermind.Analytics plugin:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:i(7200).A+"",width:"547",height:"417"})}),"\n",(0,t.jsx)(n.h2,{id:"rpc-plugin-example",children:"RPC Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' [RpcModule(ModuleType.Clique)]\n public interface IAnalyticsModule : IModule\n {\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from state.", IsImplemented = true)]\n ResultWrapper analytics_verifySupply();\n\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from rewards.", IsImplemented = true)]\n ResultWrapper analytics_verifyRewards();\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"cli-plugin-example",children:"CLI Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'[CliModule("analytics")]\npublic class AnalyticsCliModule : CliModuleBase\n{\n [CliFunction("analytics", "verifySupply")]\n public string VerifySupply()\n {\n return NodeManager.Post("analytics_verifySupply").Result;\n }\n\n [CliFunction("analytics", "verifyRewards")]\n public string VerifyRewards()\n {\n return NodeManager.Post("analytics_verifyRewards").Result;\n }\n\n public AnalyticsCliModule(ICliEngine cliEngine, INodeManager nodeManager)\n : base(cliEngine, nodeManager) { }\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"block-tree-visitor-plugin-example",children:"Block Tree Visitor Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive { get; }\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n\n public UInt256 BlockRewards { get; private set; }\n\n public RewardsVerifier(ILogManager logManager, long endLevelExclusive)\n {\n _logger = logManager.GetClassLogger();\n EndLevelExclusive = endLevelExclusive;\n BlockRewards = _genesisAllocations;\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n BlockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {BlockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(HeaderVisitOutcome.None);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"config-plugin-example",children:"Config plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:"public class AnalyticsConfig : IAnalyticsConfig\n{\n public bool PluginsEnabled { get; set; }\n public bool StreamTransactions { get; set; }\n public bool StreamBlocks { get; set; }\n public bool LogPublishedData { get; set; }\n}\n"})}),"\n",(0,t.jsx)(n.h2,{id:"state-tree-visitor-example",children:"State Tree Visitor example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'public class SupplyVerifier : ITreeVisitor\n{\n private readonly ILogger _logger;\n private HashSet _ignoreThisOne = new HashSet();\n private int _accountsVisited;\n private int _nodesVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public UInt256 Balance { get; set; } = UInt256.Zero;\n\n public bool ShouldVisit(Keccak nextNode)\n {\n if (_ignoreThisOne.Count > 16)\n {\n _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");\n }\n\n if (_ignoreThisOne.Contains(nextNode))\n {\n _ignoreThisOne.Remove(nextNode);\n return false;\n }\n\n return true;\n }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)\n {\n }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)\n {\n _logger.Warn($"Missing node {nodeHash}");\n }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n for (int i = 0; i < 16; i++)\n {\n Keccak childHash = node.GetChildHash(i);\n if (childHash != null)\n {\n _ignoreThisOne.Add(childHash);\n }\n }\n }\n }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n if (trieVisitContext.IsStorage)\n {\n _ignoreThisOne.Add(node.GetChildHash(0));\n }\n }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n Balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n }\n}\n'})})]})}function u(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},7200:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png"},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var t=i(6540);const l={},s=t.createContext(l);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7bddab45.3db5fcc0.js b/assets/js/7bddab45.4fbe36de.js similarity index 99% rename from assets/js/7bddab45.3db5fcc0.js rename to assets/js/7bddab45.4fbe36de.js index 736f5f72d..2bbe38282 100644 --- a/assets/js/7bddab45.3db5fcc0.js +++ b/assets/js/7bddab45.4fbe36de.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8076],{1110:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>j,frontMatter:()=>t,metadata:()=>d,toc:()=>u});var r=s(4848),l=s(8453),a=s(1470),i=s(9365);const t={title:"clique namespace",sidebar_label:"clique",sidebar_position:1},c=void 0,d={id:"interacting/json-rpc-ns/clique",title:"clique namespace",description:"clique_discard",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/clique.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/clique",permalink:"/1.25.4/interacting/json-rpc-ns/clique",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/clique.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"clique namespace",sidebar_label:"clique",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"admin",permalink:"/1.25.4/interacting/json-rpc-ns/admin"},next:{title:"debug",permalink:"/1.25.4/interacting/json-rpc-ns/debug"}},o={},u=[{value:"clique_discard",id:"clique_discard",level:3},{value:"clique_getBlockSigner",id:"clique_getblocksigner",level:3},{value:"clique_getSigners",id:"clique_getsigners",level:3},{value:"clique_getSignersAnnotated",id:"clique_getsignersannotated",level:3},{value:"clique_getSignersAtHash",id:"clique_getsignersathash",level:3},{value:"clique_getSignersAtHashAnnotated",id:"clique_getsignersathashannotated",level:3},{value:"clique_getSignersAtNumber",id:"clique_getsignersatnumber",level:3},{value:"clique_getSnapshot",id:"clique_getsnapshot",level:3},{value:"clique_getSnapshotAtHash",id:"clique_getsnapshotathash",level:3},{value:"clique_produceBlock",id:"clique_produceblock",level:3},{value:"clique_propose",id:"clique_propose",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"clique_discard",children:"clique_discard"}),"\n",(0,r.jsx)(n.p,{children:"This method drops a currently running proposal. The signer will not cast further votes (either for or against) the address."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_discard",\n "params": [signer]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getblocksigner",children:"clique_getBlockSigner"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getBlockSigner",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsigners",children:"clique_getSigners"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSigners",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersannotated",children:"clique_getSignersAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAnnotated",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathash",children:"clique_getSignersAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathashannotated",children:"clique_getSignersAtHashAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHashAnnotated",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersatnumber",children:"clique_getSignersAtNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by block number."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtNumber",\n "params": [number]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshot",children:"clique_getSnapshot"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a snapshot of all clique state at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshot",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshotathash",children:"clique_getSnapshotAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the state snapshot at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshotAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_produceblock",children:"clique_produceBlock"}),"\n",(0,r.jsx)(n.p,{children:"Forces Clique block producer to produce a new block"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_produceBlock",\n "params": [parentHash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_propose",children:"clique_propose"}),"\n",(0,r.jsxs)(n.p,{children:["Adds a new authorization proposal that the signer will attempt to push through. If the ",(0,r.jsx)(n.code,{children:"vote"})," parameter is true, the local signer votes for the given address to be included in the set of authorized signers. With ",(0,r.jsx)(n.code,{children:"vote"})," set to false, the signer is against the address."]}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"vote"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_propose",\n "params": [signer, vote]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>i});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var a=s(4848);function i(e){let{children:n,hidden:s,className:i}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,i),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>A});var r=s(6540),l=s(4164),a=s(3104),i=s(6347),t=s(205),c=s(7485),d=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const l=(0,i.W6)(),a=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(l.location.search);n.set(a,e),l.replace({...l.location,search:n.toString()})}),[a,l])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,a=h(e),[i,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[d,u]=p({queryString:s,groupId:l}),[x,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,a]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&a.set(e)}),[s,a])]}({groupId:l}),m=(()=>{const e=d??x;return j({value:e,tabValues:a})?e:null})();(0,t.A)((()=>{m&&c(m)}),[m]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),g(e)}),[u,g,a]),tabValues:a}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:i,tabValues:t}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),l=t[s].value;l!==r&&(d(n),i(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:a}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:u,onClick:o,...a,className:(0,l.A)("tabs__item",m.tabItem,a?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:a}=e;const i=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=i.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function q(e){const n=x(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",m.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(f,{...n,...e})]})}function A(e){const n=(0,g.A)();return(0,b.jsx)(q,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>t});var r=s(6540);const l={},a=r.createContext(l);function i(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:i(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8076],{1110:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>j,frontMatter:()=>t,metadata:()=>d,toc:()=>u});var r=s(4848),l=s(8453),a=s(1470),i=s(9365);const t={title:"clique namespace",sidebar_label:"clique",sidebar_position:1},c=void 0,d={id:"interacting/json-rpc-ns/clique",title:"clique namespace",description:"clique_discard",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/clique.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/clique",permalink:"/1.25.4/interacting/json-rpc-ns/clique",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/clique.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"clique namespace",sidebar_label:"clique",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"admin",permalink:"/1.25.4/interacting/json-rpc-ns/admin"},next:{title:"debug",permalink:"/1.25.4/interacting/json-rpc-ns/debug"}},o={},u=[{value:"clique_discard",id:"clique_discard",level:3},{value:"clique_getBlockSigner",id:"clique_getblocksigner",level:3},{value:"clique_getSigners",id:"clique_getsigners",level:3},{value:"clique_getSignersAnnotated",id:"clique_getsignersannotated",level:3},{value:"clique_getSignersAtHash",id:"clique_getsignersathash",level:3},{value:"clique_getSignersAtHashAnnotated",id:"clique_getsignersathashannotated",level:3},{value:"clique_getSignersAtNumber",id:"clique_getsignersatnumber",level:3},{value:"clique_getSnapshot",id:"clique_getsnapshot",level:3},{value:"clique_getSnapshotAtHash",id:"clique_getsnapshotathash",level:3},{value:"clique_produceBlock",id:"clique_produceblock",level:3},{value:"clique_propose",id:"clique_propose",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"clique_discard",children:"clique_discard"}),"\n",(0,r.jsx)(n.p,{children:"This method drops a currently running proposal. The signer will not cast further votes (either for or against) the address."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_discard",\n "params": [signer]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getblocksigner",children:"clique_getBlockSigner"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getBlockSigner",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsigners",children:"clique_getSigners"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSigners",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersannotated",children:"clique_getSignersAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAnnotated",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathash",children:"clique_getSignersAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathashannotated",children:"clique_getSignersAtHashAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHashAnnotated",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersatnumber",children:"clique_getSignersAtNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by block number."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtNumber",\n "params": [number]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshot",children:"clique_getSnapshot"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a snapshot of all clique state at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshot",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshotathash",children:"clique_getSnapshotAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the state snapshot at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshotAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_produceblock",children:"clique_produceBlock"}),"\n",(0,r.jsx)(n.p,{children:"Forces Clique block producer to produce a new block"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_produceBlock",\n "params": [parentHash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_propose",children:"clique_propose"}),"\n",(0,r.jsxs)(n.p,{children:["Adds a new authorization proposal that the signer will attempt to push through. If the ",(0,r.jsx)(n.code,{children:"vote"})," parameter is true, the local signer votes for the given address to be included in the set of authorized signers. With ",(0,r.jsx)(n.code,{children:"vote"})," set to false, the signer is against the address."]}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"vote"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_propose",\n "params": [signer, vote]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>i});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var a=s(4848);function i(e){let{children:n,hidden:s,className:i}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,i),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>A});var r=s(6540),l=s(4164),a=s(3104),i=s(6347),t=s(205),c=s(7485),d=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const l=(0,i.W6)(),a=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(l.location.search);n.set(a,e),l.replace({...l.location,search:n.toString()})}),[a,l])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,a=h(e),[i,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[d,u]=p({queryString:s,groupId:l}),[x,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,a]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&a.set(e)}),[s,a])]}({groupId:l}),m=(()=>{const e=d??x;return j({value:e,tabValues:a})?e:null})();(0,t.A)((()=>{m&&c(m)}),[m]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),g(e)}),[u,g,a]),tabValues:a}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:i,tabValues:t}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),l=t[s].value;l!==r&&(d(n),i(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:a}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:u,onClick:o,...a,className:(0,l.A)("tabs__item",m.tabItem,a?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:a}=e;const i=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=i.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function q(e){const n=x(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",m.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(f,{...n,...e})]})}function A(e){const n=(0,g.A)();return(0,b.jsx)(q,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>t});var r=s(6540);const l={},a=r.createContext(l);function i(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:i(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7da7c9dd.cc499ea0.js b/assets/js/7da7c9dd.d5813bf0.js similarity index 99% rename from assets/js/7da7c9dd.cc499ea0.js rename to assets/js/7da7c9dd.d5813bf0.js index 1246124dc..35b49a7e3 100644 --- a/assets/js/7da7c9dd.cc499ea0.js +++ b/assets/js/7da7c9dd.d5813bf0.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9574],{5683:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>a,frontMatter:()=>i,metadata:()=>r,toc:()=>h});var l=s(4848),c=s(8453);const i={title:"Configuration",sidebar_position:1,toc_max_heading_level:4},d=void 0,r={id:"fundamentals/configuration",title:"Configuration",description:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:",source:"@site/versioned_docs/version-1.28.0/fundamentals/configuration.md",sourceDirName:"fundamentals",slug:"/fundamentals/configuration",permalink:"/1.28.0/fundamentals/configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/configuration.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Configuration",sidebar_position:1,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"Migrating from Geth",permalink:"/1.28.0/get-started/migrating-from-geth"},next:{title:"Sync",permalink:"/1.28.0/fundamentals/sync"}},o={},h=[{value:"Command line options",id:"command-line-options",level:2},{value:"Basic options",id:"basic-options",level:3},{value:"Options by namespaces",id:"options-by-namespaces",level:3},{value:"Aura",id:"aura",level:4},{value:"Blocks",id:"blocks",level:4},{value:"Bloom",id:"bloom",level:4},{value:"EthStats",id:"ethstats",level:4},{value:"HealthChecks",id:"healthchecks",level:4},{value:"Hive",id:"hive",level:4},{value:"Init",id:"init",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"KeyStore",id:"keystore",level:4},{value:"Merge",id:"merge",level:4},{value:"Metrics",id:"metrics",level:4},{value:"Mining",id:"mining",level:4},{value:"Network",id:"network",level:4},{value:"Optimism",id:"optimism",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Receipt",id:"receipt",level:4},{value:"Seq",id:"seq",level:4},{value:"Snapshot",id:"snapshot",level:4},{value:"Sync",id:"sync",level:4},{value:"TraceStore",id:"tracestore",level:4},{value:"TxPool",id:"txpool",level:4},{value:"Wallet",id:"wallet",level:4},{value:"Environment variables",id:"environment-variables",level:2},{value:"Configuration file",id:"configuration-file",level:2}];function t(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,c.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.p,{children:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"#command-line-options",children:"Command line options"})," (aka arguments or flags)"]}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#environment-variables",children:"Environment variables"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#configuration-file",children:"Configuration file"})}),"\n"]}),"\n",(0,l.jsx)(n.admonition,{type:"note",children:(0,l.jsx)(n.p,{children:"Given the above priority list, an option defined in a more priority way overrides the same option defined elsewhere if any."})}),"\n",(0,l.jsx)(n.h2,{id:"command-line-options",children:"Command line options"}),"\n",(0,l.jsx)(n.p,{children:"The full list of command line options can be displayed by running:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,l.jsx)(n.p,{children:"Below is the list of the basic options followed by an exhaustive list of options by namespace."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsx)(n.p,{children:"The command line options are case-sensitive and can be defined only once unless stated otherwise."})}),"\n",(0,l.jsx)(n.h3,{id:"basic-options",children:"Basic options"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-d, --baseDbPath "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind database directory. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-c, --config "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the ",(0,l.jsx)(n.a,{href:"#configuration-file",children:"configuration file"})," or the name (without extension) of any of the configuration files in the configuration directory. Defaults to ",(0,l.jsx)(n.code,{children:"mainnet"}),"."]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{children:"Available configurations"}),(0,l.jsxs)("p",{children:[(0,l.jsxs)(n.p,{children:["Nethermind provides the following pre-built configurations named as the networks they are for. Their respective versions for archive nodes are suffixed ",(0,l.jsx)(n.code,{children:"_archive"}),"."]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-mainnet"})," ",(0,l.jsx)(n.code,{children:"base-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-sepolia"})," ",(0,l.jsx)(n.code,{children:"base-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chiado"})," ",(0,l.jsx)(n.code,{children:"chiado_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"energyweb"})," ",(0,l.jsx)(n.code,{children:"energyweb_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gnosis"})," ",(0,l.jsx)(n.code,{children:"gnosis_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"holesky"})," ",(0,l.jsx)(n.code,{children:"holesky_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mainnet"})," ",(0,l.jsx)(n.code,{children:"mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-mainnet"})," ",(0,l.jsx)(n.code,{children:"op-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-sepolia"})," ",(0,l.jsx)(n.code,{children:"op-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sepolia"})," ",(0,l.jsx)(n.code,{children:"sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"volta"})," ",(0,l.jsx)(n.code,{children:"volta_archive"})]}),"\n"]})]})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-cd, --configsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the configuration files directory. Defaults to ",(0,l.jsx)(n.code,{children:"configs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-dd, --datadir "})})}),"\n",(0,l.jsx)(n.p,{children:"The path to the Nethermind data directory. Defaults to Nethermind's current directory."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsxs)(n.p,{children:["The absolute paths set by ",(0,l.jsx)(n.code,{children:"Init.BaseDbPath"}),", ",(0,l.jsx)(n.code,{children:"Init.LogDirectory"}),", or ",(0,l.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})," options in a configuration file are not overridden by ",(0,l.jsx)(n.code,{children:"--datadir"}),"."]})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-?, -h, --help"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the full list of available command line options."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-l, --log "})})}),"\n",(0,l.jsxs)(n.p,{children:["Log level (severity). Allowed values: ",(0,l.jsx)(n.code,{children:"TRACE"})," ",(0,l.jsx)(n.code,{children:"DEBUG"})," ",(0,l.jsx)(n.code,{children:"INFO"})," ",(0,l.jsx)(n.code,{children:"WARN"})," ",(0,l.jsx)(n.code,{children:"ERROR"})," ",(0,l.jsx)(n.code,{children:"OFF"}),". Defaults to ",(0,l.jsx)(n.code,{children:"INFO"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-lcs, --loggerConfigSource "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the NLog configuration file. Defaults to ",(0,l.jsx)(n.code,{children:"NLog.config"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-pd, --pluginsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind plugins directory. Defaults to ",(0,l.jsx)(n.code,{children:"plugins"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-v, --version"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the Nethermind version info."}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"options-by-namespaces",children:"Options by namespaces"}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"aura",children:"Aura"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.AllowAuRaPrivateChains "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_ALLOWAURAPRIVATECHAINS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to allow private Aura-based chains only. Do not use with existing Aura-based chains. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.ForceSealing "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_FORCESEALING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal empty blocks if mining. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_MINIMUM2MLNGASPERBLOCKWHENUSINGBLOCKGASLIMITCONTRACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use 2M gas if the contract returns less than that when using ",(0,l.jsx)(n.code,{children:"BlockGasLimitContractTransitions"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityConfigFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONFIGFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the transaction priority rules file to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityContractAddress "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONTRACTADDRESS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The address of the transaction priority contract to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"blocks",children:"Blocks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.ExtraData "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_EXTRADATA"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block header extra data up to 32 bytes in length. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.MinGasPrice "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_MINGASPRICE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum gas premium (or the gas price before the London hard fork) for transactions accepted by the block producer. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.PreWarmStateOnBlockProcessing "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_PREWARMSTATEONBLOCKPROCESSING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Try to pre-warm the state when processing blocks. Can lead to 2x speedup in main loop block processing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"True"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.RandomizedBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_RANDOMIZEDBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to change the difficulty of the block randomly within the constraints. Used in NethDev only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.SecondsPerSlot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_SECONDSPERSLOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block time slot, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"12"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.TargetBlockGasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_TARGETBLOCKGASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block gas limit that the block producer should try to reach in the fastest possible way based on the protocol rules. If not specified, then the block producer should follow others. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"bloom",children:"Bloom"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Index "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Bloom index. The Bloom index speeds up the RPC log searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.IndexLevelBucketSizes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEXLEVELBUCKETSIZES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of multipliers for index levels. Can be tweaked per chain to boost performance. Defaults to ",(0,l.jsx)(n.code,{children:"[4, 8, 8]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Migration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the previously downloaded blocks to the Bloom index. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.MigrationStatistics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATIONSTATISTICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether the migration statistics should be calculated and output. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"ethstats",children:"EthStats"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Contact "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_CONTACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node owner contact details displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"hello@nethermind.io"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use Ethstats publishing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Name "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_NAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node name displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Secret "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SECRET"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats secret. Defaults to ",(0,l.jsx)(n.code,{children:"secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.SendInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SENDINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The stats update interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"15"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Server "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SERVER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats server URL. Defaults to ",(0,l.jsx)(n.code,{children:"ws://localhost:3000/api"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"healthchecks",children:"HealthChecks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageCheckAwaitOnStartup "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGECHECKAWAITONSTARTUP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to check for low disk space on startup and suspend until enough space is available. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACESHUTDOWNTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which Nethermind shuts down. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACEWARNINGTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which a warning is displayed. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalClRequestTime "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALCLREQUESTTIME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max request interval, in seconds, in which the consensus client is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProcessedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPROCESSEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block processing is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProducedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPRODUCEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block production is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.PollingInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_POLLINGINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The health check updates polling interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Slug "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_SLUG"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL slug the health checks service is exposed at. Defaults to ",(0,l.jsx)(n.code,{children:"/health"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.UIEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_UIENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health checks UI. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable web hooks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksPayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on failure.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#FFCC00",\n "pretext": "Health Check Status :warning:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "Description",\n "value": "[[DESCRIPTIONS]]",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksRestorePayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSRESTOREPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on recovery.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#36a64f",\n "pretext": "Health Check Status :+1:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "description",\n "value": "The HealthCheck `[[LIVENESS]]` is recovered. Everything is up and running.",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksUri "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSURI"})]}),"\n",(0,l.jsxs)(n.p,{children:["The web hook URL. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"hive",children:"Hive"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.BlocksDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_BLOCKSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory with additional blocks. Defaults to ",(0,l.jsx)(n.code,{children:"/blocks"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.ChainFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_CHAINFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the test chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"/chain.rlp"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable Hive for debugging. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.GenesisFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_GENESISFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the genesis block file. Defaults to ",(0,l.jsx)(n.code,{children:"/genesis.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.KeysDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_KEYSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"/keys"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"init",children:"Init"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.AutoDump "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_AUTODUMP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Auto-dump on bad blocks for diagnostics. ",(0,l.jsx)(n.code,{children:"Default"})," combines ",(0,l.jsx)(n.code,{children:"Receipts"})," and ",(0,l.jsx)(n.code,{children:"Rlp"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Receipts"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Geth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rlp"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RlpLog"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Default"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BadBlocksStored "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BADBLOCKSSTORED"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum number of bad blocks observed on the network that will be stored on disk. Defaults to ",(0,l.jsx)(n.code,{children:"100"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BaseDbPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BASEDBPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The base path for all Nethermind databases. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_CHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/foundation.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiagnosticMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DIAGNOSTICMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"MemDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RpcDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ReadOnlyDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyRewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifySupply"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyTrie"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiscoveryEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DISCOVERYENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the node discovery. If disabled, Nethermind doesn't look for other nodes beyond the bootnodes specified. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.EnableUnsecuredDevWallet "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ENABLEUNSECUREDDEVWALLET"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the in-app wallet/keystore. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.GenesisHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_GENESISHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the genesis block. If not specified, the genesis block validity is not checked which is useful in the case of ad hoc test/private networks. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.HiveChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_HIVECHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file for Hive tests. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/test.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.IsMining "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ISMINING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal/mine new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KeepDevWalletInMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KEEPDEVWALLETINMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to create session-only accounts and delete them on shutdown. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KzgSetupPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KZGSETUPPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to KZG trusted setup file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind logs directory. Defaults to ",(0,l.jsx)(n.code,{children:"logs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the log file. Defaults to ",(0,l.jsx)(n.code,{children:"log.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogRules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGRULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The logs format as ",(0,l.jsx)(n.code,{children:"LogPath:LogLevel;*"})," Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.MemoryHint "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_MEMORYHINT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hint on the max memory limit, in bytes, to configure the database and networking memory allocations. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.PeerManagerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PEERMANAGERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to newly discovered peers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ProcessingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PROCESSINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download/process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.RpcDbUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_RPCDBURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the remote node used as a database source when ",(0,l.jsx)(n.code,{children:"DiagnosticMode"})," is set to ",(0,l.jsx)(n.code,{children:"RpcDb"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.StaticNodesPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_STATICNODESPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the static nodes file. Defaults to ",(0,l.jsx)(n.code,{children:"Data/static-nodes.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.WebSocketsEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_WEBSOCKETSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable WebSocket service for the default JSON-RPC port on startup. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ADDITIONALRPCURLS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list. For instance, ",(0,l.jsx)(n.code,{children:"[http://localhost:8546|http;ws|eth;web3]"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.BufferResponses "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_BUFFERRESPONSES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to buffer responses before sending them. This allows using of ",(0,l.jsx)(n.code,{children:"Content-Length"})," instead of ",(0,l.jsx)(n.code,{children:"Transfer-Encoding: chunked"}),". Note that it may degrade performance on large responses. The max buffered response length is 2GB. Chunked responses can be larger. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.CallsFilterFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_CALLSFILTERFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to a file with the list of new-line-separated JSON-RPC calls. If specified, only the calls from that file are allowed. Defaults to ",(0,l.jsx)(n.code,{children:"Data/jsonrpc.filter"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the JSON-RPC service. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of JSON-RPC namespaces to enable. For instance, ",(0,l.jsx)(n.code,{children:"[debug,eth]"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Built-in namespaces:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"admin"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"client"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"debug"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"engine"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"evm"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"health"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"net"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"personal"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"proof"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"rpc"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"subscribe"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"txpool"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"web3"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"[Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health,Rpc]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineEnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list for Engine API. Defaults to ",(0,l.jsx)(n.code,{children:"[Net,Eth,Subscribe,Web3]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnginePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API port. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EstimateErrorMargin "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ESTIMATEERRORMARGIN"})]}),"\n",(0,l.jsxs)(n.p,{children:["The error margin used in eth_estimateGas expressed in basis points. Defaults to ",(0,l.jsx)(n.code,{children:"150"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EthModuleConcurrentInstances "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ETHMODULECONCURRENTINSTANCES"})]}),"\n",(0,l.jsx)(n.p,{children:"The number of concurrent instances for non-sharable calls:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"This limits the load on the CPU and I/O to reasonable levels. If the limit is exceeded, HTTP 503 is returned along with the JSON-RPC error. Defaults to the number of logical processors."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.GasCap "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_GASCAP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The gas limit for ",(0,l.jsx)(n.code,{children:"eth_call"})," and ",(0,l.jsx)(n.code,{children:"eth_estimateGas"}),". Defaults to ",(0,l.jsx)(n.code,{children:"100000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Host "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_HOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_IPCUNIXDOMAINSOCKETPATH"})]}),"\n",(0,l.jsx)(n.p,{children:"The path to connect a UNIX domain socket over."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the JWT secret file required for the Engine API authentication. Defaults to ",(0,l.jsx)(n.code,{children:"keystore/jwt-secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchResponseBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHRESPONSEBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max batch size limit for batched JSON-RPC calls. Defaults to ",(0,l.jsx)(n.code,{children:"33554432"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of JSON-RPC requests in a batch. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxLoggedRequestParametersCharacters "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGGEDREQUESTPARAMETERSCHARACTERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of characters of a JSON-RPC request parameter printing to the log. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxLogsPerResponse "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGSPERRESPONSE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of logs per response. For method ",(0,l.jsx)(n.code,{children:"eth_getLogs"}),". If 0 then no limit. Defaults to ",(0,l.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxRequestBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXREQUESTBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max length of HTTP request body, in bytes. Defaults to ",(0,l.jsx)(n.code,{children:"30000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxSimulateBlocksCap "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXSIMULATEBLOCKSCAP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max blocks count limit for eth_simulate JSON-RPC calls. Defaults to ",(0,l.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MethodsLoggingFiltering "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_METHODSLOGGINGFILTERING"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of the method names not to log. Defaults to ",(0,l.jsx)(n.code,{children:"[engine_newPayloadV1,engine_newPayloadV2,engine_newPayloadV3,engine_forkchoiceUpdatedV1,engine_forkchoiceUpdatedV2]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Port "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_PORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service HTTP port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.ReportIntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REPORTINTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The interval, in seconds, between the JSON-RPC stats report log. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RequestQueueLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REQUESTQUEUELIMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of concurrent requests in the queue for:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"500"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderBaseFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERBASEFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the base file for diagnostic recording. Defaults to ",(0,l.jsx)(n.code,{children:"logs/rpc.{counter}.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderState "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERSTATE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic recording mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Request"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Response"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Timeout "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_TIMEOUT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The request timeout, in milliseconds. Defaults to ",(0,l.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_WEBSOCKETSPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service WebSockets port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"keystore",children:"KeyStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.BlockAuthorAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_BLOCKAUTHORACCOUNT"})]}),"\n",(0,l.jsx)(n.p,{children:"An account to use as the block author (coinbase)."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Cipher "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_CIPHER"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"aes-128-ctr"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEACCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["An account to use for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeKeyFile"})," option is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeKeyFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEKEYFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the key file to use by for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeAccount"})," is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.IVSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_IVSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Kdf "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDF"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"scrypt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsDklen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSDKLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsN "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"262144"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSP"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsR "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSR"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsSaltLen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSSALTLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"keystore"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreEncoding "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREENCODING"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"UTF-8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.PasswordFiles "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDFILES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of password files paths used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Passwords "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of passwords used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterBlockSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERBLOCKSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterKeySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERKEYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.TestNodeKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_TESTNODEKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"A plaintext private key to use for testing purposes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.UnlockAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_UNLOCKACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of accounts to unlock on startup using passwords either in ",(0,l.jsx)(n.code,{children:"PasswordFiles"})," and ",(0,l.jsx)(n.code,{children:"Passwords"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"merge",children:"Merge"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.BuilderRelayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_BUILDERRELAYURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of a builder relay. If specified, blocks are sent to the relay. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CollectionsPerDecommit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COLLECTIONSPERDECOMMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"Request the garbage collector (GC) to release the process memory."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to disable"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to release every time"]}),"\n",(0,l.jsx)(n.li,{children:"A positive number to release memory after that many Engine API calls"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"25"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CompactMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COMPACTMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory compaction mode. When set to ",(0,l.jsx)(n.code,{children:"Full"}),", compacts the large object heap (LOH) if ",(0,l.jsx)(n.code,{children:"SweepMemory"})," is set to ",(0,l.jsx)(n.code,{children:"Gen2"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"No"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Yes"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Yes"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Merge hard fork. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.FinalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_FINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the last PoW block. Must be greater than or equal to the terminal total difficulty (TTD). Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.PrioritizeBlockLatency "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_PRIORITIZEBLOCKLATENCY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to reduce block latency by disabling garbage collection during Engine API calls. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.SweepMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_SWEEPMEMORY"})]}),"\n",(0,l.jsx)(n.p,{children:"The garbage collection (GC) mode between Engine API calls."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"NoGC"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen0"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen1"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen2"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Gen1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal PoW block hash used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKNUMBER"})]}),"\n",(0,l.jsx)(n.p,{children:"The terminal PoW block number used for the transition."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal total difficulty (TTD) used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"metrics",children:"Metrics"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.CountersEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_COUNTERSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish metrics using .NET diagnostics that can be collected with dotnet-counters. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish various metrics to Prometheus Pushgateway at a given interval. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.EnableDbSizeMetrics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLEDBSIZEMETRICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish database size metrics. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposeHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The IP address to expose Prometheus metrics at. The value of ",(0,l.jsx)(n.code,{children:"+"})," means listening on all available hostnames. Setting this to ",(0,l.jsx)(n.code,{children:"localhost"})," prevents remote access. Defaults to ",(0,l.jsx)(n.code,{children:"+"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The port to expose Prometheus metrics at. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.IntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_INTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The frequency of pushing metrics to Prometheus, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.NodeName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_NODENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name to display on the Grafana dashboard. Defaults to ",(0,l.jsx)(n.code,{children:'"Nethermind"'}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.PushGatewayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_PUSHGATEWAYURL"})]}),"\n",(0,l.jsx)(n.p,{children:"The Prometheus Pushgateway instance URL."}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"mining",children:"Mining"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Mining.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to produce blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Mining.Signer "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_SIGNER"})]}),"\n",(0,l.jsxs)(n.p,{children:["Url for an external signer like clef: ",(0,l.jsx)(n.a,{href:"https://github.com/ethereum/go-ethereum/blob/master/cmd/clef/tutorial.md",children:"https://github.com/ethereum/go-ethereum/blob/master/cmd/clef/tutorial.md"})," Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"network",children:"Network"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.Bootnodes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_BOOTNODES"})]}),"\n",(0,l.jsx)(n.p,{children:"A comma-separated enode list to be used as boot nodes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiagTracerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DIAGTRACERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable a verbose diagnostic tracing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryDns "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYDNS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Use tree is available through a DNS name. For the default of ",(0,l.jsx)(n.code,{children:".ethdisco.net"}),", leave unspecified. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The UDP port number for incoming discovery connections. It's recommended to keep it the same as the TCP port (",(0,l.jsx)(n.code,{children:"P2PPort"}),") because other values have not been tested yet. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.EnableUPnP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ENABLEUPNP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable automatic port forwarding via UPnP. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.ExternalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_EXTERNALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The external IP. Use only when the external IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.LocalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_LOCALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The local IP. Use only when the local IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxActivePeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max allowed number of connected peers. Defaults to ",(0,l.jsx)(n.code,{children:"50"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxNettyArenaCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXNETTYARENACOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum DotNetty arena count. Increasing this on a high-core CPU without increasing the memory budget may reduce chunk size so much that it causes a huge memory allocation. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.NettyArenaOrder "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_NETTYARENAORDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The size of the DotNetty arena order. ",(0,l.jsx)(n.code,{children:"-1"})," to depend on the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.OnlyStaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ONLYSTATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use static peers only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.P2PPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_P2PPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The TCP port for incoming P2P connections. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.PriorityPeersMaxCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_PRIORITYPEERSMAXCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of priority peers. Can be overridden by a plugin. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.StaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_STATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["A list of peers to keep connection for. Static peers are affected by ",(0,l.jsx)(n.code,{children:"MaxActivePeers"}),". Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"optimism",children:"Optimism"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Optimism.SequencerUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_OPTIMISMCONFIG_SEQUENCERURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["Sequencer address Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"pruning",children:"Pruning"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.AvailableSpaceCheckEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_AVAILABLESPACECHECKENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enables available disk space check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.CacheMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_CACHEMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The in-memory cache size, in MB. The bigger the cache size, the bigger the disk space savings. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningCompletionBehavior "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGCOMPLETIONBEHAVIOR"})]}),"\n",(0,l.jsx)(n.p,{children:"The behavior after pruning completion:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": Do nothing."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Shut Nethermind down if pruning has succeeded but leave it running if failed."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"AlwaysShutdown"}),": Shut Nethermind down when pruning completes, regardless of its status."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AlwaysShutdown"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningDisableLowPriorityWrites "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGDISABLELOWPRIORITYWRITES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable low-priority for pruning writes. Full pruning uses low-priority write operations to prevent blocking block processing. If block processing is not high-priority, set this option to ",(0,l.jsx)(n.code,{children:"true"})," for faster pruning. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMaxDegreeOfParallelism "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMAXDEGREEOFPARALLELISM"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of parallel tasks that can be used by full pruning:"}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to use the number of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to use 25% of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"1"})," to run on single thread"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"The recommended value depends on the type of the node:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["If the node needs to be responsive (serves for RPC or validator), then the recommended value is ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have many other responsibilities but needs to be able to follow the chain reliably without any delays and produce live logs, the ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"1"})," is recommended."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have to be responsive, has very fast I/O (like NVMe) and the shortest pruning time is to be achieved, then ",(0,l.jsx)(n.code,{children:"-1"})," is recommended. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMemoryBudgetMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMEMORYBUDGETMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory budget, in MB, used for the trie visit. Increasing this value significantly reduces the IOPS requirement at the expense of memory usage. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMinimumDelayHours "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMINIMUMDELAYHOURS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum delay, in hours, between full pruning operations not to exhaust disk writes. Defaults to ",(0,l.jsx)(n.code,{children:"240"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningThresholdMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTHRESHOLDMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The threshold, in MB, to trigger full pruning. Depends on ",(0,l.jsx)(n.code,{children:"Mode"})," and ",(0,l.jsx)(n.code,{children:"FullPruningTrigger"}),". Defaults to ",(0,l.jsx)(n.code,{children:"256000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningTrigger "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTRIGGER"})]}),"\n",(0,l.jsx)(n.p,{children:"The full pruning trigger:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Manual"}),": Triggered manually."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StateDbSize"}),": Trigger when the state DB size is above the threshold."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"VolumeFreeSpace"}),": Trigger when the free disk space where the state DB is stored is below the threshold."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Manual"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDbSize"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VolumeFreeSpace"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Manual"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.Mode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_MODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The pruning mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": No pruning (full archive)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Memory"}),": In-memory pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Full"}),": Full pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Hybrid"}),": Combined in-memory and full pruning"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Memory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Hybrid"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Hybrid"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.PersistenceInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PERSISTENCEINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block persistence frequency. If set to ",(0,l.jsx)(n.code,{children:"N"}),", it caches after each ",(0,l.jsx)(n.code,{children:"Nth"})," block even if not required by cache memory usage. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.PruningBoundary "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PRUNINGBOUNDARY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Past N state before state gets pruned Used to determine how old of a state to keep from the head. Defaults to ",(0,l.jsx)(n.code,{children:"64"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.TrackedPastKeyCountMemoryRatio "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_TRACKEDPASTKEYCOUNTMEMORYRATIO"})]}),"\n",(0,l.jsxs)(n.p,{children:["[TECHNICAL] Ratio of memory out of CacheMb to allocate for LRU used to track past keys for live pruning. Defaults to ",(0,l.jsx)(n.code,{children:"0.1"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"receipt",children:"Receipt"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactReceiptStore "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTRECEIPTSTORE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactTxIndex "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTTXINDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts transaction index database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.ReceiptsMigration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_RECEIPTSMIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the receipts database to the new schema. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.StoreReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_STORERECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to store receipts after a new block is processed. This setting is independent from downloading receipts in fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.TxLookupLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_TXLOOKUPLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of recent blocks to maintain transaction index for. ",(0,l.jsx)(n.code,{children:"0"})," to never remove indices, ",(0,l.jsx)(n.code,{children:"-1"})," to never index. Defaults to ",(0,l.jsx)(n.code,{children:"2350000"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"seq",children:"Seq"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ApiKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_APIKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"The Seq API key."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.MinLevel "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_MINLEVEL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The min log level to sent to Seq. Defaults to ",(0,l.jsx)(n.code,{children:"Off"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ServerUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_SERVERURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Seq instance URL. Defaults to ",(0,l.jsx)(n.code,{children:"http://localhost:5341"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"snapshot",children:"Snapshot"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Checksum "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_CHECKSUM"})]}),"\n",(0,l.jsxs)(n.p,{children:["The SHA-256 checksum of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.DownloadUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_DOWNLOADURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Snapshot plugin. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory to store the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot.zip"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"sync",children:"Sync"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientBodiesBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The earliest body downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, AncientBodiesBarrier } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientReceiptsBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The earliest receipt downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, max{ AncientBodiesBarrier, AncientReceiptsBarrier } } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.BlocksDbTuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_BLOCKSDBTUNEDBMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"Configure the blocks database for write optimizations during sync."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"EnableBlobFiles"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the block bodies in the Fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadHeadersInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADHEADERSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the old block headers in the Fast sync mode. If ",(0,l.jsx)(n.code,{children:"false"}),", Nethermind downloads only recent blocks headers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadReceiptsInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download receipts in the Fast sync mode. This slows down the process by a few hours but allows to interact with dApps that perform extensive historical logs searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSynced "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to shut down Nethermind once sync is finished. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSyncedWaitTimeSec "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCEDWAITTIMESEC"})]}),"\n",(0,l.jsxs)(n.p,{children:["The time, in seconds, to wait before shutting down Nethermind once sync is finished. Defaults to ",(0,l.jsx)(n.code,{children:"60"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Fast sync mode (the eth/63 synchronization algorithm). Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSyncCatchUpHeightDelta "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNCCATCHUPHEIGHTDELTA"})]}),"\n",(0,l.jsxs)(n.p,{children:["In Fast sync mode, the min height threshold limit up to which the Full sync, if already on, stays on when the chain is behind the network head. If the limit is exceeded, it switches back to Fast sync. For regular usage scenarios, setting this value lower than 32 is not recommended as this can cause issues with chain reorgs. Note that the last 2 blocks are always processed in Full sync, so setting it lower than 2 has no effect. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXRECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable receipts validation that checks for receipts that might be missing because of a bug. If needed, receipts are downloaded from the network. If ",(0,l.jsx)(n.code,{children:"true"}),", the pivot number must be same one used originally as it's used as a cut-off point. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to recalculate the total difficulty from ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyStartingBlock"})," to ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyLastBlock"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyLastBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYLASTBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The last block to recalculate the total difficulty for. If not specified, the best known block is used.\nDefaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyStartingBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYSTARTINGBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The first block to recalculate the total difficulty for. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxAttemptsToUpdatePivot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXATTEMPTSTOUPDATEPIVOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of attempts to update the pivot block based on the FCU message from the consensus client. Defaults to ",(0,l.jsx)(n.code,{children:"2147483647"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxProcessingThreads "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXPROCESSINGTHREADS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of threads used for syncing. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NetworkingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NETWORKINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to peers and sync. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NonValidatorNode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NONVALIDATORNODE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to operate as a non-validator. If ",(0,l.jsx)(n.code,{children:"true"}),", the ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," and ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," can be set to ",(0,l.jsx)(n.code,{children:"false"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTNUMBER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Snap sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSyncAccountRangePartitionCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNCACCOUNTRANGEPARTITIONCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of account range partitions to create. Increases the Snap sync request concurrency. Allowed values are between between 1 and 256. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.StrictMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_STRICTMODE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable some optimizations and do a more extensive sync. Useful when sync state is corrupted. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SynchronizationEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SYNCHRONIZATIONENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download and process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.TuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_TUNEDBMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"Configure the database for write optimizations during sync. Significantly reduces the total number of writes and sync time if you are not network limited."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"HeavyWrite"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.UseGethLimitsInFastBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to make smaller requests, in Fast Blocks mode, to avoid Geth from disconnecting. On the Geth-heavy networks (e.g., Mainnet), it's a desired behavior while on Nethermind- or OpenEthereum-heavy networks (Aura), it slows down the sync by a factor of ~4. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"tracestore",children:"TraceStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.BlocksToKeep "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_BLOCKSTOKEEP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of blocks to store, counting from the head. If ",(0,l.jsx)(n.code,{children:"0"}),", all traces of the processed blocks are stored. Defaults to ",(0,l.jsx)(n.code,{children:"10000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.DeserializationParallelization "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_DESERIALIZATIONPARALLELIZATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max parallelization when deserialization requests the ",(0,l.jsx)(n.code,{children:"trace_filter"})," method. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. If you experience a resource shortage, set to a low number. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the TraceStore plugin. If enabled, traces come from the database whenever possible. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.TraceTypes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_TRACETYPES"})]}),"\n",(0,l.jsx)(n.p,{children:"The type of traces to store."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VmTrace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDiff"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Trace, Rewards"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"txpool",children:"TxPool"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions cached in memory. The default value uses max 200MB for 6 blobs where one blob is 33MB (256 * 128KB) Defaults to ",(0,l.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobsSupport "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBSSUPPORT"})]}),"\n",(0,l.jsx)(n.p,{children:"Blobs support mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Disabled"}),": No support for blob transactions"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"InMemory"}),": Blob transactions stored only in memory"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Storage"}),": Blob transactions stored in db"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),": Blob transactions stored in db with support for restoring reorganized blob transactions to blob pool"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Disabled"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"InMemory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Storage"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StorageWithReorgs"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.GasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_GASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max transaction gas allowed. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.HashCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_HASHCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of cached hashes of already known transactions. Set automatically by the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"524288"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.InMemoryBlobPoolSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_INMEMORYBLOBPOOLSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in memory. Used only if persistent storage is disabled. Defaults to ",(0,l.jsx)(n.code,{children:"512"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingBlobTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGBLOBTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending blob transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MinBaseFeeThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MINBASEFEETHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimal percentage of the current base fee that must be surpassed by the max fee (",(0,l.jsx)(n.code,{children:"max_fee_per_gas"}),") for the transaction to be broadcasted. Defaults to ",(0,l.jsx)(n.code,{children:"70"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PeerNotificationThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PEERNOTIFICATIONTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The average percentage of transaction hashes from persistent broadcast sent to a peer together with hashes of the last added transactions. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PersistentBlobStorageSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PERSISTENTBLOBSTORAGESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in the database (increasing the number of transactions in the blob pool also results in higher memory usage). The default value uses max 13GB for 6 blobs where one blob is 2GB (16386 * 128KB). Defaults to ",(0,l.jsx)(n.code,{children:"16384"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.ReportMinutes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_REPORTMINUTES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The current transaction pool state reporting interval, in minutes. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.Size "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_SIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of transactions held in the mempool (the more transactions in the mempool, the more memory used). Defaults to ",(0,l.jsx)(n.code,{children:"2048"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"wallet",children:"Wallet"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Wallet.DevAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_WALLETCONFIG_DEVACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of autogenerated developer accounts to work with. Developer accounts have private keys from ",(0,l.jsx)(n.code,{children:"00...01"})," to ",(0,l.jsx)(n.code,{children:"00...n"}),". Defaults to ",(0,l.jsx)(n.code,{children:"10"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsx)(n.h2,{id:"environment-variables",children:"Environment variables"}),"\n",(0,l.jsx)(n.p,{children:"To configure Nethermind using environment variables, the following naming convention is used in all uppercase:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-text",children:"NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}\n"})}),"\n",(0,l.jsxs)(n.p,{children:["For instance, the environment variable equivalent of the command line ",(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile"})," option is ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"}),". For the list of configuration namespaces and their options, see ",(0,l.jsx)(n.a,{href:"#options-by-namespaces",children:"Options by namespaces"}),"."]}),"\n",(0,l.jsx)(n.h2,{id:"configuration-file",children:"Configuration file"}),"\n",(0,l.jsxs)(n.p,{children:["The configuration file is a JSON file with ",(0,l.jsx)(n.code,{children:".cfg"})," extension. The bundled configuration files are located in the ",(0,l.jsx)(n.code,{children:"configs"})," directory and named after the network they are used for. For instance, see the Mainnet configuration file ",(0,l.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:(0,l.jsx)(n.code,{children:"mainnet.cfg"})}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(t,{...e})}):t(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>r});var l=s(6540);const c={},i=l.createContext(c);function d(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:d(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9574],{5683:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>a,frontMatter:()=>i,metadata:()=>r,toc:()=>h});var l=s(4848),c=s(8453);const i={title:"Configuration",sidebar_position:1,toc_max_heading_level:4},d=void 0,r={id:"fundamentals/configuration",title:"Configuration",description:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:",source:"@site/versioned_docs/version-1.28.0/fundamentals/configuration.md",sourceDirName:"fundamentals",slug:"/fundamentals/configuration",permalink:"/1.28.0/fundamentals/configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/configuration.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Configuration",sidebar_position:1,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"Migrating from Geth",permalink:"/1.28.0/get-started/migrating-from-geth"},next:{title:"Sync",permalink:"/1.28.0/fundamentals/sync"}},o={},h=[{value:"Command line options",id:"command-line-options",level:2},{value:"Basic options",id:"basic-options",level:3},{value:"Options by namespaces",id:"options-by-namespaces",level:3},{value:"Aura",id:"aura",level:4},{value:"Blocks",id:"blocks",level:4},{value:"Bloom",id:"bloom",level:4},{value:"EthStats",id:"ethstats",level:4},{value:"HealthChecks",id:"healthchecks",level:4},{value:"Hive",id:"hive",level:4},{value:"Init",id:"init",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"KeyStore",id:"keystore",level:4},{value:"Merge",id:"merge",level:4},{value:"Metrics",id:"metrics",level:4},{value:"Mining",id:"mining",level:4},{value:"Network",id:"network",level:4},{value:"Optimism",id:"optimism",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Receipt",id:"receipt",level:4},{value:"Seq",id:"seq",level:4},{value:"Snapshot",id:"snapshot",level:4},{value:"Sync",id:"sync",level:4},{value:"TraceStore",id:"tracestore",level:4},{value:"TxPool",id:"txpool",level:4},{value:"Wallet",id:"wallet",level:4},{value:"Environment variables",id:"environment-variables",level:2},{value:"Configuration file",id:"configuration-file",level:2}];function t(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,c.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.p,{children:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"#command-line-options",children:"Command line options"})," (aka arguments or flags)"]}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#environment-variables",children:"Environment variables"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#configuration-file",children:"Configuration file"})}),"\n"]}),"\n",(0,l.jsx)(n.admonition,{type:"note",children:(0,l.jsx)(n.p,{children:"Given the above priority list, an option defined in a more priority way overrides the same option defined elsewhere if any."})}),"\n",(0,l.jsx)(n.h2,{id:"command-line-options",children:"Command line options"}),"\n",(0,l.jsx)(n.p,{children:"The full list of command line options can be displayed by running:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,l.jsx)(n.p,{children:"Below is the list of the basic options followed by an exhaustive list of options by namespace."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsx)(n.p,{children:"The command line options are case-sensitive and can be defined only once unless stated otherwise."})}),"\n",(0,l.jsx)(n.h3,{id:"basic-options",children:"Basic options"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-d, --baseDbPath "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind database directory. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-c, --config "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the ",(0,l.jsx)(n.a,{href:"#configuration-file",children:"configuration file"})," or the name (without extension) of any of the configuration files in the configuration directory. Defaults to ",(0,l.jsx)(n.code,{children:"mainnet"}),"."]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{children:"Available configurations"}),(0,l.jsxs)("p",{children:[(0,l.jsxs)(n.p,{children:["Nethermind provides the following pre-built configurations named as the networks they are for. Their respective versions for archive nodes are suffixed ",(0,l.jsx)(n.code,{children:"_archive"}),"."]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-mainnet"})," ",(0,l.jsx)(n.code,{children:"base-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-sepolia"})," ",(0,l.jsx)(n.code,{children:"base-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chiado"})," ",(0,l.jsx)(n.code,{children:"chiado_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"energyweb"})," ",(0,l.jsx)(n.code,{children:"energyweb_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gnosis"})," ",(0,l.jsx)(n.code,{children:"gnosis_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"holesky"})," ",(0,l.jsx)(n.code,{children:"holesky_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mainnet"})," ",(0,l.jsx)(n.code,{children:"mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-mainnet"})," ",(0,l.jsx)(n.code,{children:"op-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-sepolia"})," ",(0,l.jsx)(n.code,{children:"op-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sepolia"})," ",(0,l.jsx)(n.code,{children:"sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"volta"})," ",(0,l.jsx)(n.code,{children:"volta_archive"})]}),"\n"]})]})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-cd, --configsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the configuration files directory. Defaults to ",(0,l.jsx)(n.code,{children:"configs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-dd, --datadir "})})}),"\n",(0,l.jsx)(n.p,{children:"The path to the Nethermind data directory. Defaults to Nethermind's current directory."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsxs)(n.p,{children:["The absolute paths set by ",(0,l.jsx)(n.code,{children:"Init.BaseDbPath"}),", ",(0,l.jsx)(n.code,{children:"Init.LogDirectory"}),", or ",(0,l.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})," options in a configuration file are not overridden by ",(0,l.jsx)(n.code,{children:"--datadir"}),"."]})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-?, -h, --help"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the full list of available command line options."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-l, --log "})})}),"\n",(0,l.jsxs)(n.p,{children:["Log level (severity). Allowed values: ",(0,l.jsx)(n.code,{children:"TRACE"})," ",(0,l.jsx)(n.code,{children:"DEBUG"})," ",(0,l.jsx)(n.code,{children:"INFO"})," ",(0,l.jsx)(n.code,{children:"WARN"})," ",(0,l.jsx)(n.code,{children:"ERROR"})," ",(0,l.jsx)(n.code,{children:"OFF"}),". Defaults to ",(0,l.jsx)(n.code,{children:"INFO"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-lcs, --loggerConfigSource "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the NLog configuration file. Defaults to ",(0,l.jsx)(n.code,{children:"NLog.config"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-pd, --pluginsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind plugins directory. Defaults to ",(0,l.jsx)(n.code,{children:"plugins"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-v, --version"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the Nethermind version info."}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"options-by-namespaces",children:"Options by namespaces"}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"aura",children:"Aura"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.AllowAuRaPrivateChains "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_ALLOWAURAPRIVATECHAINS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to allow private Aura-based chains only. Do not use with existing Aura-based chains. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.ForceSealing "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_FORCESEALING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal empty blocks if mining. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_MINIMUM2MLNGASPERBLOCKWHENUSINGBLOCKGASLIMITCONTRACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use 2M gas if the contract returns less than that when using ",(0,l.jsx)(n.code,{children:"BlockGasLimitContractTransitions"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityConfigFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONFIGFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the transaction priority rules file to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityContractAddress "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONTRACTADDRESS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The address of the transaction priority contract to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"blocks",children:"Blocks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.ExtraData "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_EXTRADATA"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block header extra data up to 32 bytes in length. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.MinGasPrice "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_MINGASPRICE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum gas premium (or the gas price before the London hard fork) for transactions accepted by the block producer. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.PreWarmStateOnBlockProcessing "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_PREWARMSTATEONBLOCKPROCESSING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Try to pre-warm the state when processing blocks. Can lead to 2x speedup in main loop block processing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"True"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.RandomizedBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_RANDOMIZEDBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to change the difficulty of the block randomly within the constraints. Used in NethDev only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.SecondsPerSlot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_SECONDSPERSLOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block time slot, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"12"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.TargetBlockGasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_TARGETBLOCKGASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block gas limit that the block producer should try to reach in the fastest possible way based on the protocol rules. If not specified, then the block producer should follow others. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"bloom",children:"Bloom"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Index "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Bloom index. The Bloom index speeds up the RPC log searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.IndexLevelBucketSizes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEXLEVELBUCKETSIZES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of multipliers for index levels. Can be tweaked per chain to boost performance. Defaults to ",(0,l.jsx)(n.code,{children:"[4, 8, 8]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Migration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the previously downloaded blocks to the Bloom index. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.MigrationStatistics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATIONSTATISTICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether the migration statistics should be calculated and output. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"ethstats",children:"EthStats"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Contact "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_CONTACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node owner contact details displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"hello@nethermind.io"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use Ethstats publishing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Name "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_NAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node name displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Secret "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SECRET"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats secret. Defaults to ",(0,l.jsx)(n.code,{children:"secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.SendInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SENDINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The stats update interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"15"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Server "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SERVER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats server URL. Defaults to ",(0,l.jsx)(n.code,{children:"ws://localhost:3000/api"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"healthchecks",children:"HealthChecks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageCheckAwaitOnStartup "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGECHECKAWAITONSTARTUP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to check for low disk space on startup and suspend until enough space is available. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACESHUTDOWNTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which Nethermind shuts down. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACEWARNINGTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which a warning is displayed. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalClRequestTime "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALCLREQUESTTIME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max request interval, in seconds, in which the consensus client is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProcessedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPROCESSEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block processing is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProducedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPRODUCEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block production is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.PollingInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_POLLINGINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The health check updates polling interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Slug "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_SLUG"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL slug the health checks service is exposed at. Defaults to ",(0,l.jsx)(n.code,{children:"/health"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.UIEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_UIENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health checks UI. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable web hooks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksPayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on failure.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#FFCC00",\n "pretext": "Health Check Status :warning:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "Description",\n "value": "[[DESCRIPTIONS]]",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksRestorePayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSRESTOREPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on recovery.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#36a64f",\n "pretext": "Health Check Status :+1:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "description",\n "value": "The HealthCheck `[[LIVENESS]]` is recovered. Everything is up and running.",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksUri "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSURI"})]}),"\n",(0,l.jsxs)(n.p,{children:["The web hook URL. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"hive",children:"Hive"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.BlocksDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_BLOCKSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory with additional blocks. Defaults to ",(0,l.jsx)(n.code,{children:"/blocks"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.ChainFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_CHAINFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the test chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"/chain.rlp"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable Hive for debugging. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.GenesisFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_GENESISFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the genesis block file. Defaults to ",(0,l.jsx)(n.code,{children:"/genesis.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.KeysDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_KEYSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"/keys"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"init",children:"Init"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.AutoDump "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_AUTODUMP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Auto-dump on bad blocks for diagnostics. ",(0,l.jsx)(n.code,{children:"Default"})," combines ",(0,l.jsx)(n.code,{children:"Receipts"})," and ",(0,l.jsx)(n.code,{children:"Rlp"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Receipts"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Geth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rlp"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RlpLog"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Default"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BadBlocksStored "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BADBLOCKSSTORED"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum number of bad blocks observed on the network that will be stored on disk. Defaults to ",(0,l.jsx)(n.code,{children:"100"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BaseDbPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BASEDBPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The base path for all Nethermind databases. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_CHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/foundation.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiagnosticMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DIAGNOSTICMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"MemDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RpcDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ReadOnlyDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyRewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifySupply"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyTrie"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiscoveryEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DISCOVERYENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the node discovery. If disabled, Nethermind doesn't look for other nodes beyond the bootnodes specified. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.EnableUnsecuredDevWallet "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ENABLEUNSECUREDDEVWALLET"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the in-app wallet/keystore. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.GenesisHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_GENESISHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the genesis block. If not specified, the genesis block validity is not checked which is useful in the case of ad hoc test/private networks. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.HiveChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_HIVECHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file for Hive tests. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/test.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.IsMining "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ISMINING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal/mine new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KeepDevWalletInMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KEEPDEVWALLETINMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to create session-only accounts and delete them on shutdown. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KzgSetupPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KZGSETUPPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to KZG trusted setup file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind logs directory. Defaults to ",(0,l.jsx)(n.code,{children:"logs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the log file. Defaults to ",(0,l.jsx)(n.code,{children:"log.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogRules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGRULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The logs format as ",(0,l.jsx)(n.code,{children:"LogPath:LogLevel;*"})," Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.MemoryHint "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_MEMORYHINT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hint on the max memory limit, in bytes, to configure the database and networking memory allocations. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.PeerManagerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PEERMANAGERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to newly discovered peers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ProcessingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PROCESSINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download/process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.RpcDbUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_RPCDBURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the remote node used as a database source when ",(0,l.jsx)(n.code,{children:"DiagnosticMode"})," is set to ",(0,l.jsx)(n.code,{children:"RpcDb"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.StaticNodesPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_STATICNODESPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the static nodes file. Defaults to ",(0,l.jsx)(n.code,{children:"Data/static-nodes.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.WebSocketsEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_WEBSOCKETSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable WebSocket service for the default JSON-RPC port on startup. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ADDITIONALRPCURLS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list. For instance, ",(0,l.jsx)(n.code,{children:"[http://localhost:8546|http;ws|eth;web3]"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.BufferResponses "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_BUFFERRESPONSES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to buffer responses before sending them. This allows using of ",(0,l.jsx)(n.code,{children:"Content-Length"})," instead of ",(0,l.jsx)(n.code,{children:"Transfer-Encoding: chunked"}),". Note that it may degrade performance on large responses. The max buffered response length is 2GB. Chunked responses can be larger. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.CallsFilterFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_CALLSFILTERFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to a file with the list of new-line-separated JSON-RPC calls. If specified, only the calls from that file are allowed. Defaults to ",(0,l.jsx)(n.code,{children:"Data/jsonrpc.filter"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the JSON-RPC service. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of JSON-RPC namespaces to enable. For instance, ",(0,l.jsx)(n.code,{children:"[debug,eth]"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Built-in namespaces:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"admin"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"client"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"debug"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"engine"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"evm"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"health"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"net"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"personal"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"proof"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"rpc"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"subscribe"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"txpool"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"web3"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"[Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health,Rpc]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineEnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list for Engine API. Defaults to ",(0,l.jsx)(n.code,{children:"[Net,Eth,Subscribe,Web3]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnginePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API port. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EstimateErrorMargin "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ESTIMATEERRORMARGIN"})]}),"\n",(0,l.jsxs)(n.p,{children:["The error margin used in eth_estimateGas expressed in basis points. Defaults to ",(0,l.jsx)(n.code,{children:"150"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EthModuleConcurrentInstances "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ETHMODULECONCURRENTINSTANCES"})]}),"\n",(0,l.jsx)(n.p,{children:"The number of concurrent instances for non-sharable calls:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"This limits the load on the CPU and I/O to reasonable levels. If the limit is exceeded, HTTP 503 is returned along with the JSON-RPC error. Defaults to the number of logical processors."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.GasCap "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_GASCAP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The gas limit for ",(0,l.jsx)(n.code,{children:"eth_call"})," and ",(0,l.jsx)(n.code,{children:"eth_estimateGas"}),". Defaults to ",(0,l.jsx)(n.code,{children:"100000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Host "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_HOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_IPCUNIXDOMAINSOCKETPATH"})]}),"\n",(0,l.jsx)(n.p,{children:"The path to connect a UNIX domain socket over."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the JWT secret file required for the Engine API authentication. Defaults to ",(0,l.jsx)(n.code,{children:"keystore/jwt-secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchResponseBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHRESPONSEBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max batch size limit for batched JSON-RPC calls. Defaults to ",(0,l.jsx)(n.code,{children:"33554432"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of JSON-RPC requests in a batch. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxLoggedRequestParametersCharacters "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGGEDREQUESTPARAMETERSCHARACTERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of characters of a JSON-RPC request parameter printing to the log. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxLogsPerResponse "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGSPERRESPONSE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of logs per response. For method ",(0,l.jsx)(n.code,{children:"eth_getLogs"}),". If 0 then no limit. Defaults to ",(0,l.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxRequestBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXREQUESTBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max length of HTTP request body, in bytes. Defaults to ",(0,l.jsx)(n.code,{children:"30000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxSimulateBlocksCap "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXSIMULATEBLOCKSCAP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max blocks count limit for eth_simulate JSON-RPC calls. Defaults to ",(0,l.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MethodsLoggingFiltering "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_METHODSLOGGINGFILTERING"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of the method names not to log. Defaults to ",(0,l.jsx)(n.code,{children:"[engine_newPayloadV1,engine_newPayloadV2,engine_newPayloadV3,engine_forkchoiceUpdatedV1,engine_forkchoiceUpdatedV2]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Port "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_PORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service HTTP port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.ReportIntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REPORTINTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The interval, in seconds, between the JSON-RPC stats report log. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RequestQueueLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REQUESTQUEUELIMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of concurrent requests in the queue for:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"500"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderBaseFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERBASEFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the base file for diagnostic recording. Defaults to ",(0,l.jsx)(n.code,{children:"logs/rpc.{counter}.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderState "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERSTATE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic recording mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Request"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Response"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Timeout "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_TIMEOUT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The request timeout, in milliseconds. Defaults to ",(0,l.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_WEBSOCKETSPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service WebSockets port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"keystore",children:"KeyStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.BlockAuthorAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_BLOCKAUTHORACCOUNT"})]}),"\n",(0,l.jsx)(n.p,{children:"An account to use as the block author (coinbase)."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Cipher "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_CIPHER"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"aes-128-ctr"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEACCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["An account to use for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeKeyFile"})," option is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeKeyFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEKEYFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the key file to use by for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeAccount"})," is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.IVSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_IVSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Kdf "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDF"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"scrypt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsDklen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSDKLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsN "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"262144"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSP"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsR "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSR"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsSaltLen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSSALTLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"keystore"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreEncoding "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREENCODING"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"UTF-8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.PasswordFiles "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDFILES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of password files paths used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Passwords "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of passwords used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterBlockSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERBLOCKSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterKeySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERKEYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.TestNodeKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_TESTNODEKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"A plaintext private key to use for testing purposes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.UnlockAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_UNLOCKACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of accounts to unlock on startup using passwords either in ",(0,l.jsx)(n.code,{children:"PasswordFiles"})," and ",(0,l.jsx)(n.code,{children:"Passwords"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"merge",children:"Merge"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.BuilderRelayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_BUILDERRELAYURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of a builder relay. If specified, blocks are sent to the relay. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CollectionsPerDecommit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COLLECTIONSPERDECOMMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"Request the garbage collector (GC) to release the process memory."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to disable"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to release every time"]}),"\n",(0,l.jsx)(n.li,{children:"A positive number to release memory after that many Engine API calls"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"25"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CompactMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COMPACTMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory compaction mode. When set to ",(0,l.jsx)(n.code,{children:"Full"}),", compacts the large object heap (LOH) if ",(0,l.jsx)(n.code,{children:"SweepMemory"})," is set to ",(0,l.jsx)(n.code,{children:"Gen2"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"No"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Yes"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Yes"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Merge hard fork. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.FinalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_FINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the last PoW block. Must be greater than or equal to the terminal total difficulty (TTD). Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.PrioritizeBlockLatency "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_PRIORITIZEBLOCKLATENCY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to reduce block latency by disabling garbage collection during Engine API calls. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.SweepMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_SWEEPMEMORY"})]}),"\n",(0,l.jsx)(n.p,{children:"The garbage collection (GC) mode between Engine API calls."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"NoGC"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen0"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen1"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen2"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Gen1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal PoW block hash used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKNUMBER"})]}),"\n",(0,l.jsx)(n.p,{children:"The terminal PoW block number used for the transition."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal total difficulty (TTD) used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"metrics",children:"Metrics"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.CountersEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_COUNTERSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish metrics using .NET diagnostics that can be collected with dotnet-counters. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish various metrics to Prometheus Pushgateway at a given interval. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.EnableDbSizeMetrics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLEDBSIZEMETRICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish database size metrics. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposeHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The IP address to expose Prometheus metrics at. The value of ",(0,l.jsx)(n.code,{children:"+"})," means listening on all available hostnames. Setting this to ",(0,l.jsx)(n.code,{children:"localhost"})," prevents remote access. Defaults to ",(0,l.jsx)(n.code,{children:"+"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The port to expose Prometheus metrics at. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.IntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_INTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The frequency of pushing metrics to Prometheus, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.NodeName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_NODENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name to display on the Grafana dashboard. Defaults to ",(0,l.jsx)(n.code,{children:'"Nethermind"'}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.PushGatewayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_PUSHGATEWAYURL"})]}),"\n",(0,l.jsx)(n.p,{children:"The Prometheus Pushgateway instance URL."}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"mining",children:"Mining"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Mining.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to produce blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Mining.Signer "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_SIGNER"})]}),"\n",(0,l.jsxs)(n.p,{children:["Url for an external signer like clef: ",(0,l.jsx)(n.a,{href:"https://github.com/ethereum/go-ethereum/blob/master/cmd/clef/tutorial.md",children:"https://github.com/ethereum/go-ethereum/blob/master/cmd/clef/tutorial.md"})," Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"network",children:"Network"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.Bootnodes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_BOOTNODES"})]}),"\n",(0,l.jsx)(n.p,{children:"A comma-separated enode list to be used as boot nodes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiagTracerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DIAGTRACERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable a verbose diagnostic tracing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryDns "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYDNS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Use tree is available through a DNS name. For the default of ",(0,l.jsx)(n.code,{children:".ethdisco.net"}),", leave unspecified. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The UDP port number for incoming discovery connections. It's recommended to keep it the same as the TCP port (",(0,l.jsx)(n.code,{children:"P2PPort"}),") because other values have not been tested yet. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.EnableUPnP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ENABLEUPNP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable automatic port forwarding via UPnP. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.ExternalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_EXTERNALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The external IP. Use only when the external IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.LocalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_LOCALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The local IP. Use only when the local IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxActivePeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max allowed number of connected peers. Defaults to ",(0,l.jsx)(n.code,{children:"50"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxNettyArenaCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXNETTYARENACOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum DotNetty arena count. Increasing this on a high-core CPU without increasing the memory budget may reduce chunk size so much that it causes a huge memory allocation. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.NettyArenaOrder "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_NETTYARENAORDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The size of the DotNetty arena order. ",(0,l.jsx)(n.code,{children:"-1"})," to depend on the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.OnlyStaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ONLYSTATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use static peers only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.P2PPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_P2PPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The TCP port for incoming P2P connections. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.PriorityPeersMaxCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_PRIORITYPEERSMAXCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of priority peers. Can be overridden by a plugin. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.StaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_STATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["A list of peers to keep connection for. Static peers are affected by ",(0,l.jsx)(n.code,{children:"MaxActivePeers"}),". Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"optimism",children:"Optimism"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Optimism.SequencerUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_OPTIMISMCONFIG_SEQUENCERURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["Sequencer address Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"pruning",children:"Pruning"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.AvailableSpaceCheckEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_AVAILABLESPACECHECKENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enables available disk space check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.CacheMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_CACHEMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The in-memory cache size, in MB. The bigger the cache size, the bigger the disk space savings. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningCompletionBehavior "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGCOMPLETIONBEHAVIOR"})]}),"\n",(0,l.jsx)(n.p,{children:"The behavior after pruning completion:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": Do nothing."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Shut Nethermind down if pruning has succeeded but leave it running if failed."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"AlwaysShutdown"}),": Shut Nethermind down when pruning completes, regardless of its status."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AlwaysShutdown"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningDisableLowPriorityWrites "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGDISABLELOWPRIORITYWRITES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable low-priority for pruning writes. Full pruning uses low-priority write operations to prevent blocking block processing. If block processing is not high-priority, set this option to ",(0,l.jsx)(n.code,{children:"true"})," for faster pruning. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMaxDegreeOfParallelism "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMAXDEGREEOFPARALLELISM"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of parallel tasks that can be used by full pruning:"}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to use the number of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to use 25% of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"1"})," to run on single thread"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"The recommended value depends on the type of the node:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["If the node needs to be responsive (serves for RPC or validator), then the recommended value is ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have many other responsibilities but needs to be able to follow the chain reliably without any delays and produce live logs, the ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"1"})," is recommended."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have to be responsive, has very fast I/O (like NVMe) and the shortest pruning time is to be achieved, then ",(0,l.jsx)(n.code,{children:"-1"})," is recommended. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMemoryBudgetMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMEMORYBUDGETMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory budget, in MB, used for the trie visit. Increasing this value significantly reduces the IOPS requirement at the expense of memory usage. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMinimumDelayHours "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMINIMUMDELAYHOURS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum delay, in hours, between full pruning operations not to exhaust disk writes. Defaults to ",(0,l.jsx)(n.code,{children:"240"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningThresholdMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTHRESHOLDMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The threshold, in MB, to trigger full pruning. Depends on ",(0,l.jsx)(n.code,{children:"Mode"})," and ",(0,l.jsx)(n.code,{children:"FullPruningTrigger"}),". Defaults to ",(0,l.jsx)(n.code,{children:"256000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningTrigger "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTRIGGER"})]}),"\n",(0,l.jsx)(n.p,{children:"The full pruning trigger:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Manual"}),": Triggered manually."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StateDbSize"}),": Trigger when the state DB size is above the threshold."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"VolumeFreeSpace"}),": Trigger when the free disk space where the state DB is stored is below the threshold."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Manual"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDbSize"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VolumeFreeSpace"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Manual"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.Mode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_MODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The pruning mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": No pruning (full archive)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Memory"}),": In-memory pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Full"}),": Full pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Hybrid"}),": Combined in-memory and full pruning"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Memory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Hybrid"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Hybrid"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.PersistenceInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PERSISTENCEINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block persistence frequency. If set to ",(0,l.jsx)(n.code,{children:"N"}),", it caches after each ",(0,l.jsx)(n.code,{children:"Nth"})," block even if not required by cache memory usage. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.PruningBoundary "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PRUNINGBOUNDARY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Past N state before state gets pruned Used to determine how old of a state to keep from the head. Defaults to ",(0,l.jsx)(n.code,{children:"64"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.TrackedPastKeyCountMemoryRatio "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_TRACKEDPASTKEYCOUNTMEMORYRATIO"})]}),"\n",(0,l.jsxs)(n.p,{children:["[TECHNICAL] Ratio of memory out of CacheMb to allocate for LRU used to track past keys for live pruning. Defaults to ",(0,l.jsx)(n.code,{children:"0.1"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"receipt",children:"Receipt"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactReceiptStore "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTRECEIPTSTORE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactTxIndex "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTTXINDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts transaction index database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.ReceiptsMigration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_RECEIPTSMIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the receipts database to the new schema. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.StoreReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_STORERECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to store receipts after a new block is processed. This setting is independent from downloading receipts in fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.TxLookupLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_TXLOOKUPLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of recent blocks to maintain transaction index for. ",(0,l.jsx)(n.code,{children:"0"})," to never remove indices, ",(0,l.jsx)(n.code,{children:"-1"})," to never index. Defaults to ",(0,l.jsx)(n.code,{children:"2350000"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"seq",children:"Seq"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ApiKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_APIKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"The Seq API key."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.MinLevel "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_MINLEVEL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The min log level to sent to Seq. Defaults to ",(0,l.jsx)(n.code,{children:"Off"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ServerUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_SERVERURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Seq instance URL. Defaults to ",(0,l.jsx)(n.code,{children:"http://localhost:5341"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"snapshot",children:"Snapshot"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Checksum "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_CHECKSUM"})]}),"\n",(0,l.jsxs)(n.p,{children:["The SHA-256 checksum of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.DownloadUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_DOWNLOADURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Snapshot plugin. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory to store the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot.zip"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"sync",children:"Sync"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientBodiesBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The earliest body downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, AncientBodiesBarrier } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientReceiptsBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The earliest receipt downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, max{ AncientBodiesBarrier, AncientReceiptsBarrier } } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.BlocksDbTuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_BLOCKSDBTUNEDBMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"Configure the blocks database for write optimizations during sync."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"EnableBlobFiles"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the block bodies in the Fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadHeadersInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADHEADERSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the old block headers in the Fast sync mode. If ",(0,l.jsx)(n.code,{children:"false"}),", Nethermind downloads only recent blocks headers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadReceiptsInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download receipts in the Fast sync mode. This slows down the process by a few hours but allows to interact with dApps that perform extensive historical logs searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSynced "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to shut down Nethermind once sync is finished. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSyncedWaitTimeSec "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCEDWAITTIMESEC"})]}),"\n",(0,l.jsxs)(n.p,{children:["The time, in seconds, to wait before shutting down Nethermind once sync is finished. Defaults to ",(0,l.jsx)(n.code,{children:"60"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Fast sync mode (the eth/63 synchronization algorithm). Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSyncCatchUpHeightDelta "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNCCATCHUPHEIGHTDELTA"})]}),"\n",(0,l.jsxs)(n.p,{children:["In Fast sync mode, the min height threshold limit up to which the Full sync, if already on, stays on when the chain is behind the network head. If the limit is exceeded, it switches back to Fast sync. For regular usage scenarios, setting this value lower than 32 is not recommended as this can cause issues with chain reorgs. Note that the last 2 blocks are always processed in Full sync, so setting it lower than 2 has no effect. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXRECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable receipts validation that checks for receipts that might be missing because of a bug. If needed, receipts are downloaded from the network. If ",(0,l.jsx)(n.code,{children:"true"}),", the pivot number must be same one used originally as it's used as a cut-off point. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to recalculate the total difficulty from ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyStartingBlock"})," to ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyLastBlock"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyLastBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYLASTBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The last block to recalculate the total difficulty for. If not specified, the best known block is used.\nDefaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyStartingBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYSTARTINGBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The first block to recalculate the total difficulty for. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxAttemptsToUpdatePivot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXATTEMPTSTOUPDATEPIVOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of attempts to update the pivot block based on the FCU message from the consensus client. Defaults to ",(0,l.jsx)(n.code,{children:"2147483647"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxProcessingThreads "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXPROCESSINGTHREADS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of threads used for syncing. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NetworkingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NETWORKINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to peers and sync. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NonValidatorNode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NONVALIDATORNODE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to operate as a non-validator. If ",(0,l.jsx)(n.code,{children:"true"}),", the ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," and ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," can be set to ",(0,l.jsx)(n.code,{children:"false"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTNUMBER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Snap sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSyncAccountRangePartitionCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNCACCOUNTRANGEPARTITIONCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of account range partitions to create. Increases the Snap sync request concurrency. Allowed values are between between 1 and 256. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.StrictMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_STRICTMODE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable some optimizations and do a more extensive sync. Useful when sync state is corrupted. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SynchronizationEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SYNCHRONIZATIONENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download and process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.TuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_TUNEDBMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"Configure the database for write optimizations during sync. Significantly reduces the total number of writes and sync time if you are not network limited."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"HeavyWrite"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.UseGethLimitsInFastBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to make smaller requests, in Fast Blocks mode, to avoid Geth from disconnecting. On the Geth-heavy networks (e.g., Mainnet), it's a desired behavior while on Nethermind- or OpenEthereum-heavy networks (Aura), it slows down the sync by a factor of ~4. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"tracestore",children:"TraceStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.BlocksToKeep "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_BLOCKSTOKEEP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of blocks to store, counting from the head. If ",(0,l.jsx)(n.code,{children:"0"}),", all traces of the processed blocks are stored. Defaults to ",(0,l.jsx)(n.code,{children:"10000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.DeserializationParallelization "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_DESERIALIZATIONPARALLELIZATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max parallelization when deserialization requests the ",(0,l.jsx)(n.code,{children:"trace_filter"})," method. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. If you experience a resource shortage, set to a low number. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the TraceStore plugin. If enabled, traces come from the database whenever possible. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.TraceTypes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_TRACETYPES"})]}),"\n",(0,l.jsx)(n.p,{children:"The type of traces to store."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VmTrace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDiff"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Trace, Rewards"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"txpool",children:"TxPool"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions cached in memory. The default value uses max 200MB for 6 blobs where one blob is 33MB (256 * 128KB) Defaults to ",(0,l.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobsSupport "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBSSUPPORT"})]}),"\n",(0,l.jsx)(n.p,{children:"Blobs support mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Disabled"}),": No support for blob transactions"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"InMemory"}),": Blob transactions stored only in memory"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Storage"}),": Blob transactions stored in db"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),": Blob transactions stored in db with support for restoring reorganized blob transactions to blob pool"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Disabled"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"InMemory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Storage"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StorageWithReorgs"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.GasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_GASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max transaction gas allowed. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.HashCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_HASHCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of cached hashes of already known transactions. Set automatically by the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"524288"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.InMemoryBlobPoolSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_INMEMORYBLOBPOOLSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in memory. Used only if persistent storage is disabled. Defaults to ",(0,l.jsx)(n.code,{children:"512"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingBlobTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGBLOBTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending blob transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MinBaseFeeThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MINBASEFEETHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimal percentage of the current base fee that must be surpassed by the max fee (",(0,l.jsx)(n.code,{children:"max_fee_per_gas"}),") for the transaction to be broadcasted. Defaults to ",(0,l.jsx)(n.code,{children:"70"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PeerNotificationThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PEERNOTIFICATIONTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The average percentage of transaction hashes from persistent broadcast sent to a peer together with hashes of the last added transactions. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PersistentBlobStorageSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PERSISTENTBLOBSTORAGESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in the database (increasing the number of transactions in the blob pool also results in higher memory usage). The default value uses max 13GB for 6 blobs where one blob is 2GB (16386 * 128KB). Defaults to ",(0,l.jsx)(n.code,{children:"16384"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.ReportMinutes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_REPORTMINUTES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The current transaction pool state reporting interval, in minutes. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.Size "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_SIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of transactions held in the mempool (the more transactions in the mempool, the more memory used). Defaults to ",(0,l.jsx)(n.code,{children:"2048"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"wallet",children:"Wallet"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Wallet.DevAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_WALLETCONFIG_DEVACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of autogenerated developer accounts to work with. Developer accounts have private keys from ",(0,l.jsx)(n.code,{children:"00...01"})," to ",(0,l.jsx)(n.code,{children:"00...n"}),". Defaults to ",(0,l.jsx)(n.code,{children:"10"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsx)(n.h2,{id:"environment-variables",children:"Environment variables"}),"\n",(0,l.jsx)(n.p,{children:"To configure Nethermind using environment variables, the following naming convention is used in all uppercase:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-text",children:"NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}\n"})}),"\n",(0,l.jsxs)(n.p,{children:["For instance, the environment variable equivalent of the command line ",(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile"})," option is ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"}),". For the list of configuration namespaces and their options, see ",(0,l.jsx)(n.a,{href:"#options-by-namespaces",children:"Options by namespaces"}),"."]}),"\n",(0,l.jsx)(n.h2,{id:"configuration-file",children:"Configuration file"}),"\n",(0,l.jsxs)(n.p,{children:["The configuration file is a JSON file with ",(0,l.jsx)(n.code,{children:".cfg"})," extension. The bundled configuration files are located in the ",(0,l.jsx)(n.code,{children:"configs"})," directory and named after the network they are used for. For instance, see the Mainnet configuration file ",(0,l.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:(0,l.jsx)(n.code,{children:"mainnet.cfg"})}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(t,{...e})}):t(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>r});var l=s(6540);const c={},i=l.createContext(c);function d(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:d(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7f6fb541.5b4f5383.js b/assets/js/7f6fb541.99975910.js similarity index 99% rename from assets/js/7f6fb541.5b4f5383.js rename to assets/js/7f6fb541.99975910.js index 288cfdd1e..867c9d35c 100644 --- a/assets/js/7f6fb541.5b4f5383.js +++ b/assets/js/7f6fb541.99975910.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5978],{9253:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var i=s(4848),t=s(8453),r=s(1470),l=s(9365);const d={title:"Sync",sidebar_position:2},o=void 0,a={id:"fundamentals/sync",title:"Sync",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.29.0/fundamentals/sync.md",sourceDirName:"fundamentals",slug:"/fundamentals/sync",permalink:"/fundamentals/sync",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/sync.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Sync",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/fundamentals/configuration"},next:{title:"Security",permalink:"/fundamentals/security"}},c={},h=[{value:"There are three main synchronization modes",id:"there-are-three-main-synchronization-modes",level:2},{value:"Snap Sync",id:"snap-sync",level:2},{value:"How to Enable",id:"how-to-enable",level:4},{value:"Snap Sync vs Other Sync Modes",id:"snap-sync-vs-other-sync-modes",level:4},{value:"Current limitations and future development",id:"current-limitations-and-future-development",level:4},{value:"Fast Sync",id:"fast-sync",level:2},{value:"Archive Sync",id:"archive-sync",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Resync a node from scratch",id:"resync-a-node-from-scratch",level:2},{value:"Steps to Resync a Nethermind Node",id:"steps-to-resync-a-nethermind-node",level:3}];function u(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"there-are-three-main-synchronization-modes",children:"There are three main synchronization modes"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["snap sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"the fastest way to sync to the network (syncs to mainnet in ~3 hours)"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["fast sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"slower than snap sync"}),"\n",(0,i.jsx)(n.li,{children:"useful on nethermind-only chains (like Gnosis), where snap sync is not available for now"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["archive sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"heavy historical sync verifying all the transactions and keeping all the historical state"}),"\n",(0,i.jsxs)(n.li,{children:["you can run it like this ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Sync Mode"}),(0,i.jsx)(n.th,{children:"Disk Space needed"}),(0,i.jsx)(n.th,{children:"Full current state"}),(0,i.jsx)(n.th,{children:"Full current and all historical states"}),(0,i.jsx)(n.th,{children:"Can sync a full archive node from this"}),(0,i.jsx)(n.th,{children:"Time to sync"}),(0,i.jsx)(n.th,{children:"Time to RPC"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"archive"}),(0,i.jsx)(n.td,{children:"~12TB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~3 weeks"}),(0,i.jsx)(n.td,{children:"~3 weeks"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync with all bodies and receipts"}),(0,i.jsx)(n.td,{children:"~800GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~20 hours"}),(0,i.jsx)(n.td,{children:"~20 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"default snap/fast sync (with barriers set to support Eth2)"}),(0,i.jsx)(n.td,{children:"~500GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~11 hours"}),(0,i.jsx)(n.td,{children:"~11 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without receipts"}),(0,i.jsx)(n.td,{children:"~450GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~12 hours"}),(0,i.jsx)(n.td,{children:"~12 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without bodies and receipts"}),(0,i.jsx)(n.td,{children:"~200GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~9 hours"}),(0,i.jsx)(n.td,{children:"~9 hours"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"snap-sync",children:"Snap Sync"}),"\n",(0,i.jsx)(n.p,{children:"Snap sync allows a node to perform the initial synchronization and download of Ethereum\u2019s state up to 10 times faster\nthan using fast sync."}),"\n",(0,i.jsx)(n.h4,{id:"how-to-enable",children:"How to Enable"}),"\n",(0,i.jsxs)(n.p,{children:["Snap sync is enabled by default for majority of networks. To make sure, check if",(0,i.jsx)(n.code,{children:"SnapSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"})," in the Sync\nmodule of your ",(0,i.jsx)(n.code,{children:".cfg"})," file"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true\n}\n'})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not enable snap sync on a previously synced node. Only use when syncing to the network for the first\ntime."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not remove other configurations from Sync module. Just add ",(0,i.jsx)(n.code,{children:'"SnapSync": true'}),", e.g."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true,\n\t"PivotNumber": 15011000,\n "PivotHash": "0x46c838d02d5fa5bc070080ed7965da1d888f6eb1797045365407c7011280af56",\n \t"PivotTotalDifficulty": "52367203434576253689712",\n \t"FastBlocks": true\n}\n'})}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"snap-sync-vs-other-sync-modes",children:"Snap Sync vs Other Sync Modes"}),"\n",(0,i.jsx)(n.p,{children:"More than 12TB of storage is needed today to run a full archive node \u2014 one that stores all the state since genesis.\nBecause of that, setting up an archive node can take days or even weeks. Fast Sync can still take more than 24 hours on\nthe fast machine and download about 90GB state data. With Snap Sync, sync time is reduced to 2-3h with a download of\nabout 30GB."}),"\n",(0,i.jsx)(n.p,{children:"This reduction in sync time and download size has to do with the specific way in which Ethereum\u2019s state is stored in a\nnode: Merkle trees."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(5330).A+"",width:"1168",height:"939"})}),"\n",(0,i.jsx)(n.p,{children:"With Fast Sync, a node downloads the headers of each block and retrieves all the nodes beneath it until it reaches the\nleaves. By contrast, Snap Sync only downloads the leaf nodes, generating the remaining nodes locally which saves time\nand packets downloaded."}),"\n",(0,i.jsx)(n.h4,{id:"current-limitations-and-future-development",children:"Current limitations and future development"}),"\n",(0,i.jsx)(n.p,{children:"For now Snap Sync on the Nethermind client can only download the Ethereum state but not serve it to other clients - snap\nserving development is in progress, expected late 2023/early 2024."}),"\n",(0,i.jsx)(n.p,{children:"The only Ethereum client that supports serving Snap Sync requests is Geth, so only networks supported by Geth can be\nsynced using that method: Mainnet, Goerli, Sepolia."}),"\n",(0,i.jsx)(n.h2,{id:"fast-sync",children:"Fast Sync"}),"\n",(0,i.jsxs)(n.p,{children:["After completing the fast sync your node will have the ability to answer questions like ",(0,i.jsxs)(n.em,{children:["'what is my account\nbalance ",(0,i.jsx)(n.strong,{children:"now"}),"'"]}),", ",(0,i.jsxs)(n.em,{children:["'how many XYZ tokens SomeExchange holds ",(0,i.jsx)(n.strong,{children:"at the moment"}),"'"]}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Fast sync has multiple stages. Nethermind uses a ",(0,i.jsx)(n.code,{children:"pivot block"})," number to improve fast sync performance.\nThe ",(0,i.jsx)(n.code,{children:"pivot block"})," data is automatically updated after initialization of the client and consists of\nthe ",(0,i.jsx)(n.code,{children:"block number"}),", ",(0,i.jsx)(n.code,{children:"block hash"})," and ",(0,i.jsx)(n.code,{children:"block total difficulty"})," (please note that ",(0,i.jsx)(n.code,{children:"total difficulty"})," is different\nthan ",(0,i.jsx)(n.code,{children:"difficulty"}),"). Before synchronizing state data Nethermind synchronizes in two directions - backwards\nfrom ",(0,i.jsx)(n.code,{children:"pivot block"})," to 0 for headers and forward to the head of the chain for headers, blocks and receipts. Forward sync\nmight be very slow (5 - 50 bps) so having fresh pivot block is very important - it is guaranteed by recently implemented\nauto-update."]}),"\n",(0,i.jsx)(n.p,{children:"After downloading the block data Nethermind will start state sync (downloading the latest state trie nodes). We are\nproviding an estimate for the download size and progress but the real value may be different than the estimate (\nespecially if you are using an old version of Nethermind as we sometimes manually adjust the estimator based on our\nobservations of the chain growth rate). Because of this sometimes your sync may continue even when it shows ~100%\nfinished. The other important component is the speed of your sync - if your IO / network / file system causes the state\nsync to go much slower than around 1.5MB per second on average then you will start downloading some parts of the trie\nover and over again. In such cases you may be surprised to see something like 58000MB / 53000MB (100%). It means that\nyou downloaded around 5GB of data that is no longer needed. If your sync is very slow (extended beyond two days) then\nvery likely your setup cannot catch up with the chain progress."}),"\n",(0,i.jsxs)(n.p,{children:["After the state sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," messages like in archive sync - it means that your node\nis in sync and is processing the latest blocks."]}),"\n",(0,i.jsx)(n.p,{children:"Mainnet sync, at the time of writing (December 2020), takes around 8 hours on an UpCloud 16GB RAM 8 CPU $40 VM (and then\nsyncs receipts and bodies in the background if you enabled them in the configuration). Goerli sync should take around 40\nminutes."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast sync logs example for mainnet.",src:s(7017).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsxs)(n.p,{children:["State sync log messages have multiple values displayed. First ",(0,i.jsx)(n.code,{children:"dd.HH:mm:ss"})," total state sync time is displayed, followed\nby an estimated sync progress (percentage of total database data synced), then the current download speed is displayed (\nthere will be times when it will slow down to 0 or single digit numbers, especially towards the end of the sync). In\ngeneral 6 hours sync times shown on screenshots are with around 2000 kB/s (kilobytes per second) average sync rate. You\ncan calculate it in the example as ~45GB / (2MB/s) ~ 22500 seconds ~6.25 hours. We also display the number of state\naccounts synced, number of trie nodes synced and a diagnostic message in the format of ",(0,i.jsx)(n.em,{children:"[number_of_pending_requests]\n.[average time spent in response handler displayed as milliseconds]"}),". So ",(0,i.jsx)(n.code,{children:"5.6.20ms"})," means that we are awaiting for\nresponses to 5 requests that have been sent to peers and the average time it takes us to process a single response is\n6.20ms. The response handling times will differ depending on how many trie nodes are already cached (so they will be\nsignificantly slower for a while after the node restart when cache has to be rebuilt) and based on how fast the database\nIO is (SSD vs NVMe vs cloud drives). For a reasonable sync time you probably should expect these values to be below\n15ms (but they may be as high as 700ms for a while after restarting the node)."]}),"\n",(0,i.jsx)(n.p,{children:"A single restart of the node during the fast sync may extend the sync time by up to two hours because the node has to\nrebuild the caches by reading millions of values from the database."}),"\n",(0,i.jsx)(n.p,{children:"At the last stages of the sync the node will be repeatedly displaying the branch sync progress and changing the block\nnumber to which it tries to catch up. This stage should take between 30 minutes and two hours. If it lasts much more\nthen it is possible that you will not be able to catch up with the network progress."}),"\n",(0,i.jsx)(n.p,{children:"One of the best indicators that you are close to be synced is combined ~100% state size progress and nearly 100% branch\nsync progress."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(2725).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(3203).A+"",width:"1895",height:"795"})}),"\n",(0,i.jsx)(n.h2,{id:"archive-sync",children:"Archive Sync"}),"\n",(0,i.jsxs)(n.p,{children:["Archive sync is the 'heaviest' and slowest sync mode but allows to ask questions like ",(0,i.jsx)(n.em,{children:"'what was the balance of my\naccount 2 years ago?'"}),", ",(0,i.jsx)(n.em,{children:"'how many XYZ token were held in SomeExchange custody in 2017?'"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["We have prepared default archive sync configurations and they can be launched from Nethermind Launcher (just choose the\narchive options) or by simply loading appropriate config when launching ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config goerli_archive"})}),"\n",(0,i.jsx)(n.p,{children:"While for some smaller networks archive sync can complete very quickly (in minutes or hours) mainnet sync would take 2 -\n6 weeks depending on the speed of your IO (whether you use SSD or NVMe or depending on the cloud provider IOPS).\nDatabase size in archive sync is the biggest from all modes as you will store all the historical data."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Example of the archive sync logs",src:s(4466).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(9175).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:"Explanation of some data in the logs:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["at the beginning you may see a ",(0,i.jsx)(n.em,{children:"'Waiting for peers...'"})," message while the node is trying to discover nodes that it can\nsync with."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Downloaded 1234/8000000'"})," shows the number of unprocessed blocks (with transactions) downloaded from the network.\nFor ",(0,i.jsx)(n.code,{children:"mainnet"}),"this value may be slower than processing at first but very quickly you will see blocks being downloaded\nmuch faster than processed. Empty blocks can be as small as 512 bytes (just headers without transactions) and full\nblocks with heavy transactions can reach a few hundred kilobytes. We display both current download speed (calculated\nin the last second) and average (total) speed since starting the node."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Processed ...'"})," displays the blocks that have been processed by the EVM. The first number shows the current head\nblock number, then you can see ",(0,i.jsx)(n.code,{children:"mgasps"})," (million gas per second) - current and total, then ",(0,i.jsx)(n.code,{children:"tps"})," (transactions per\nsecond) - current and total, ",(0,i.jsx)(n.code,{children:"bps"})," (blocks per second). Then ",(0,i.jsx)(n.code,{children:"recv queue"})," (transactions signature public key recovery\nqueue), ",(0,i.jsx)(n.code,{children:"proc queue"})," (processor queue). Both recovery queue and processor queue are designed so when too many blocks\nare waiting for processing then only their hashes are kept in memory and remaining data are stored in the database.\nThus, the queues numbers that you can see will be capped by some number."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Cache for epoch...'"})," informs about ",(0,i.jsx)(n.code,{children:"ethash"})," cache needed for block seal verification (only on ",(0,i.jsx)(n.code,{children:"mainnet"}),"\nand ",(0,i.jsx)(n.code,{children:"ropsten"}),"). Caches will be calculated every 30000 blocks (length of an epoch) but can also be calculated for the\nlatest blocks that are being broadcast on the network."]}),"\n",(0,i.jsxs)(n.li,{children:["After the archive sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," message appearing on average every 15 seconds when\nthe new block is processed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mgasps"}),", ",(0,i.jsx)(n.code,{children:"tps"}),", ",(0,i.jsx)(n.code,{children:"bps"})," values should not be treated as comparable as they may differ massively on different parts of\nthe chain. For example when blocks are empty you may see very high ",(0,i.jsx)(n.code,{children:"bps"})," values with very low (or even zero) ",(0,i.jsx)(n.code,{children:"tps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," values as there are no transactions and no gas for EVM processing and blocks are very light. On the other\nhand when blocks are filled with very heavy transactions then ",(0,i.jsx)(n.code,{children:"bps"})," might be very low while ",(0,i.jsx)(n.code,{children:"mgasps"})," will be very\nhigh. It is even possible that you will see a lot of very light transactions where ",(0,i.jsx)(n.code,{children:"tps"})," will be high while ",(0,i.jsx)(n.code,{children:"bps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," will be average."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,i.jsx)(n.p,{children:"Sync time heavily depends on the hardware used for the node, network speed, and peering. We are constantly pursuing to make it as fast as possible. Below is a brief on how the sync time looks on different machines and various chains (tested with Nethermind v1.21.0)."}),"\n",(0,i.jsxs)(r.A,{children:[(0,i.jsxs)(l.A,{value:"highend-vm",label:"High-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Akamai (formerly Linode)"}),"\n",(0,i.jsx)(n.li,{children:"CPU: AMD EPYC 7601, 16 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 64 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1.2 TB, ~40k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 7h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 58m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 2m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 5m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 21m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 22m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 17m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 46m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 31m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 10m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"midend-vm",label:"Mid-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: AWS"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/c7g/",children:"c7g.2xlarge"}),": 8 vCPU, 16 GiB memory"]}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~10k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 12h 37m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 35m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1h 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 43m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 2h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 4h 28m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 10m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 23m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 35m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 17m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 29m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 18h 28m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 52m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 25m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 5m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"oldspec-vm",label:"Old-spec VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Scaleway"}),"\n",(0,i.jsx)(n.li,{children:"CPU: Intel Xeon Processor E5-2620 v2, 2 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 192 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~44k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 1m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 29m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 25m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 3h 39m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 8h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 5h 55m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 34m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 14m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 16m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 2h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 26m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 45m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 56m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 30m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 3h 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 25m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"energyweb",label:"Energy Web",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 7m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 15h 20m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"volta",label:"Volta",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 14h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 42m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 16h 10m"]}),"\n"]})]})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"resync-a-node-from-scratch",children:"Resync a node from scratch"}),"\n",(0,i.jsx)(n.p,{children:"This guide explains how to resync a Nethermind node using the existing Pivot block or updating it to a more recent one."}),"\n",(0,i.jsx)(n.h3,{id:"steps-to-resync-a-nethermind-node",children:"Steps to Resync a Nethermind Node"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Stop the Nethermind node"}),": If your Nethermind node is currently running, stop it to ensure that no new data is\nbeing written to the database during the resync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Delete the existing database"}),": Navigate to the Nethermind data directory. The location of this directory depends\non how Nethermind was installed and your configuration settings. Inside the data directory, find the ",(0,i.jsx)(n.code,{children:"nethermind_db"}),"\nfolder and delete the ",(0,i.jsx)(n.code,{children:"mainnet"})," subfolder to remove the existing database for the mainnet."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the configuration file (optional)"}),": If you want to change any configuration settings before resyncing the\nnode, edit the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file located in the Nethermind directory. For example, you might want to adjust the\npruning settings or specify a different network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the Pivot block (optional)"}),"\\","\n",(0,i.jsx)(n.admonition,{type:"danger",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Only for versions before 1.19.0 where Auto-Pivot approach was introduced"})})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Etherscan"}),": If you want to speed up the syncing process, you can update the Pivot block to a more recent\none. To do this, find the ",(0,i.jsx)(n.code,{children:"Sync"})," section in the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file and update the ",(0,i.jsx)(n.code,{children:"PivotNumber"})," and ",(0,i.jsx)(n.code,{children:"PivotHash"}),'\nfields to match a recent "finalized" block number and its corresponding hash. You can obtain this information from\na block explorer such as ',(0,i.jsx)(n.a,{href:"https://etherscan.io/",children:"Etherscan"}),".",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.br,{}),"\n","Using block number 17165278 from ",(0,i.jsx)(n.a,{href:"https://etherscan.io/block/17165278",children:"Etherscan"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:' { \n \t "PivotNumber": 17165278,\n \t "PivotHash": "0xa665315efd923f3b11215feee09a9d3e13c5e6ee602fa19b642824682ec0a752"\n }\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Nethermind's GitHub"}),": Alternatively, you can update the Pivot block by referring to\nthe ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:"Nethermind's mainnet.cfg file on GitHub"}),".\nThe Pivot block is periodically bumped to the HEAD-8192 block of the mainnet chain. Copy the ",(0,i.jsx)(n.code,{children:"PivotNumber"}),"\nand ",(0,i.jsx)(n.code,{children:"PivotHash"})," values from the GitHub file and update your local ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file accordingly."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Restart the Nethermind node"}),": Start the Nethermind node again to initiate the resync process. The node will begin\nsyncing from the existing Pivot block or the specified updated Pivot block, downloading and processing all the blocks\nin the blockchain."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To ensure that your Nethermind node is resyncing, you can monitor the logs for the node's progress. The logs will\ndisplay information about the block processing, synchronization status and ",(0,i.jsx)(n.code,{children:"OldHeaders"})," being processed. By observing\nthe increasing block numbers and synchronization messages in the logs, you can confirm that the resync process is active\nand working as expected."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Old Headers 0 / 17154000 | queue 0 | current 0.00bps | total 0.00bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 768 / 17154000 | queue 0 | current 766.07bps | total 762.49bps"}),"\n",(0,i.jsx)(n.p,{children:"Beacon Headers from block 17154001 to block 17169722 | 960 / 15722 | queue 4992 | current 0.00bps | total\n40622848.83bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 9024 / 17154000 | queue 0 | current 576.40bps | total 1286.40bps"}),"\n",(0,i.jsxs)(n.p,{children:["Beacon Headers from block 17154001 to block 17169723 | 9024 / 15723 | queue 6698 | current 2694.81bps | total\n3882943.63bps",(0,i.jsx)(n.br,{}),"\n","Downloaded 17154031 / 17172359 | current 0.00bps | total 0.00bps"]}),"\n",(0,i.jsx)(n.p,{children:"Downloaded 17154062 / 17169724 | current 0.00bps | total 2.88bps"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Keep in mind that resyncing a Nethermind node can take a considerable amount of time. It depends on your hardware,\ninternet connection, and the size of the blockchain."})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var i=s(4164);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>w});var i=s(6540),t=s(4164),r=s(3104),l=s(6347),d=s(205),o=s(7485),a=s(1682),c=s(679);function h(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:i,default:t}}=e;return{value:n,label:s,attributes:i,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,o.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=u(e),[l,o]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=s.find((e=>e.default))??s[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[a,h]=j({queryString:s,groupId:t}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,c.Dv)(s);return[t,(0,i.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),g=(()=>{const e=a??m;return x({value:e,tabValues:r})?e:null})();(0,d.A)((()=>{g&&o(g)}),[g]);return{selectedValue:l,selectValue:(0,i.useCallback)((e=>{if(!x({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),h(e),p(e)}),[h,p,r]),tabValues:r}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function b(e){let{className:n,block:s,selectedValue:i,selectValue:l,tabValues:d}=e;const o=[],{blockElementScrollPositionUntilNextRender:a}=(0,r.a_)(),c=e=>{const n=e.currentTarget,s=o.indexOf(n),t=d[s].value;t!==i&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const s=o.indexOf(e.currentTarget)+1;n=o[s]??o[0];break}case"ArrowLeft":{const s=o.indexOf(e.currentTarget)-1;n=o[s]??o[o.length-1];break}}n?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>o.push(e),onKeyDown:h,onClick:c,...r,className:(0,t.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":i===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:r}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=m(e);return(0,y.jsxs)("div",{className:(0,t.A)("tabs-container",g.tabList),children:[(0,y.jsx)(b,{...n,...e}),(0,y.jsx)(f,{...n,...e})]})}function w(e){const n=(0,p.A)();return(0,y.jsx)(v,{...e,children:h(e.children)},String(n))}},5330:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png"},9175:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png"},4466:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png"},7017:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png"},3203:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png"},2725:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png"},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var i=s(6540);const t={},r=i.createContext(t);function l(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5978],{9253:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var i=s(4848),t=s(8453),r=s(1470),l=s(9365);const d={title:"Sync",sidebar_position:2},o=void 0,a={id:"fundamentals/sync",title:"Sync",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.29.0/fundamentals/sync.md",sourceDirName:"fundamentals",slug:"/fundamentals/sync",permalink:"/fundamentals/sync",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/sync.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Sync",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/fundamentals/configuration"},next:{title:"Security",permalink:"/fundamentals/security"}},c={},h=[{value:"There are three main synchronization modes",id:"there-are-three-main-synchronization-modes",level:2},{value:"Snap Sync",id:"snap-sync",level:2},{value:"How to Enable",id:"how-to-enable",level:4},{value:"Snap Sync vs Other Sync Modes",id:"snap-sync-vs-other-sync-modes",level:4},{value:"Current limitations and future development",id:"current-limitations-and-future-development",level:4},{value:"Fast Sync",id:"fast-sync",level:2},{value:"Archive Sync",id:"archive-sync",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Resync a node from scratch",id:"resync-a-node-from-scratch",level:2},{value:"Steps to Resync a Nethermind Node",id:"steps-to-resync-a-nethermind-node",level:3}];function u(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"there-are-three-main-synchronization-modes",children:"There are three main synchronization modes"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["snap sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"the fastest way to sync to the network (syncs to mainnet in ~3 hours)"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["fast sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"slower than snap sync"}),"\n",(0,i.jsx)(n.li,{children:"useful on nethermind-only chains (like Gnosis), where snap sync is not available for now"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["archive sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"heavy historical sync verifying all the transactions and keeping all the historical state"}),"\n",(0,i.jsxs)(n.li,{children:["you can run it like this ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Sync Mode"}),(0,i.jsx)(n.th,{children:"Disk Space needed"}),(0,i.jsx)(n.th,{children:"Full current state"}),(0,i.jsx)(n.th,{children:"Full current and all historical states"}),(0,i.jsx)(n.th,{children:"Can sync a full archive node from this"}),(0,i.jsx)(n.th,{children:"Time to sync"}),(0,i.jsx)(n.th,{children:"Time to RPC"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"archive"}),(0,i.jsx)(n.td,{children:"~12TB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~3 weeks"}),(0,i.jsx)(n.td,{children:"~3 weeks"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync with all bodies and receipts"}),(0,i.jsx)(n.td,{children:"~800GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~20 hours"}),(0,i.jsx)(n.td,{children:"~20 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"default snap/fast sync (with barriers set to support Eth2)"}),(0,i.jsx)(n.td,{children:"~500GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~11 hours"}),(0,i.jsx)(n.td,{children:"~11 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without receipts"}),(0,i.jsx)(n.td,{children:"~450GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~12 hours"}),(0,i.jsx)(n.td,{children:"~12 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without bodies and receipts"}),(0,i.jsx)(n.td,{children:"~200GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~9 hours"}),(0,i.jsx)(n.td,{children:"~9 hours"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"snap-sync",children:"Snap Sync"}),"\n",(0,i.jsx)(n.p,{children:"Snap sync allows a node to perform the initial synchronization and download of Ethereum\u2019s state up to 10 times faster\nthan using fast sync."}),"\n",(0,i.jsx)(n.h4,{id:"how-to-enable",children:"How to Enable"}),"\n",(0,i.jsxs)(n.p,{children:["Snap sync is enabled by default for majority of networks. To make sure, check if",(0,i.jsx)(n.code,{children:"SnapSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"})," in the Sync\nmodule of your ",(0,i.jsx)(n.code,{children:".cfg"})," file"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true\n}\n'})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not enable snap sync on a previously synced node. Only use when syncing to the network for the first\ntime."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not remove other configurations from Sync module. Just add ",(0,i.jsx)(n.code,{children:'"SnapSync": true'}),", e.g."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true,\n\t"PivotNumber": 15011000,\n "PivotHash": "0x46c838d02d5fa5bc070080ed7965da1d888f6eb1797045365407c7011280af56",\n \t"PivotTotalDifficulty": "52367203434576253689712",\n \t"FastBlocks": true\n}\n'})}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"snap-sync-vs-other-sync-modes",children:"Snap Sync vs Other Sync Modes"}),"\n",(0,i.jsx)(n.p,{children:"More than 12TB of storage is needed today to run a full archive node \u2014 one that stores all the state since genesis.\nBecause of that, setting up an archive node can take days or even weeks. Fast Sync can still take more than 24 hours on\nthe fast machine and download about 90GB state data. With Snap Sync, sync time is reduced to 2-3h with a download of\nabout 30GB."}),"\n",(0,i.jsx)(n.p,{children:"This reduction in sync time and download size has to do with the specific way in which Ethereum\u2019s state is stored in a\nnode: Merkle trees."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(5330).A+"",width:"1168",height:"939"})}),"\n",(0,i.jsx)(n.p,{children:"With Fast Sync, a node downloads the headers of each block and retrieves all the nodes beneath it until it reaches the\nleaves. By contrast, Snap Sync only downloads the leaf nodes, generating the remaining nodes locally which saves time\nand packets downloaded."}),"\n",(0,i.jsx)(n.h4,{id:"current-limitations-and-future-development",children:"Current limitations and future development"}),"\n",(0,i.jsx)(n.p,{children:"For now Snap Sync on the Nethermind client can only download the Ethereum state but not serve it to other clients - snap\nserving development is in progress, expected late 2023/early 2024."}),"\n",(0,i.jsx)(n.p,{children:"The only Ethereum client that supports serving Snap Sync requests is Geth, so only networks supported by Geth can be\nsynced using that method: Mainnet, Goerli, Sepolia."}),"\n",(0,i.jsx)(n.h2,{id:"fast-sync",children:"Fast Sync"}),"\n",(0,i.jsxs)(n.p,{children:["After completing the fast sync your node will have the ability to answer questions like ",(0,i.jsxs)(n.em,{children:["'what is my account\nbalance ",(0,i.jsx)(n.strong,{children:"now"}),"'"]}),", ",(0,i.jsxs)(n.em,{children:["'how many XYZ tokens SomeExchange holds ",(0,i.jsx)(n.strong,{children:"at the moment"}),"'"]}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Fast sync has multiple stages. Nethermind uses a ",(0,i.jsx)(n.code,{children:"pivot block"})," number to improve fast sync performance.\nThe ",(0,i.jsx)(n.code,{children:"pivot block"})," data is automatically updated after initialization of the client and consists of\nthe ",(0,i.jsx)(n.code,{children:"block number"}),", ",(0,i.jsx)(n.code,{children:"block hash"})," and ",(0,i.jsx)(n.code,{children:"block total difficulty"})," (please note that ",(0,i.jsx)(n.code,{children:"total difficulty"})," is different\nthan ",(0,i.jsx)(n.code,{children:"difficulty"}),"). Before synchronizing state data Nethermind synchronizes in two directions - backwards\nfrom ",(0,i.jsx)(n.code,{children:"pivot block"})," to 0 for headers and forward to the head of the chain for headers, blocks and receipts. Forward sync\nmight be very slow (5 - 50 bps) so having fresh pivot block is very important - it is guaranteed by recently implemented\nauto-update."]}),"\n",(0,i.jsx)(n.p,{children:"After downloading the block data Nethermind will start state sync (downloading the latest state trie nodes). We are\nproviding an estimate for the download size and progress but the real value may be different than the estimate (\nespecially if you are using an old version of Nethermind as we sometimes manually adjust the estimator based on our\nobservations of the chain growth rate). Because of this sometimes your sync may continue even when it shows ~100%\nfinished. The other important component is the speed of your sync - if your IO / network / file system causes the state\nsync to go much slower than around 1.5MB per second on average then you will start downloading some parts of the trie\nover and over again. In such cases you may be surprised to see something like 58000MB / 53000MB (100%). It means that\nyou downloaded around 5GB of data that is no longer needed. If your sync is very slow (extended beyond two days) then\nvery likely your setup cannot catch up with the chain progress."}),"\n",(0,i.jsxs)(n.p,{children:["After the state sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," messages like in archive sync - it means that your node\nis in sync and is processing the latest blocks."]}),"\n",(0,i.jsx)(n.p,{children:"Mainnet sync, at the time of writing (December 2020), takes around 8 hours on an UpCloud 16GB RAM 8 CPU $40 VM (and then\nsyncs receipts and bodies in the background if you enabled them in the configuration). Goerli sync should take around 40\nminutes."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast sync logs example for mainnet.",src:s(7017).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsxs)(n.p,{children:["State sync log messages have multiple values displayed. First ",(0,i.jsx)(n.code,{children:"dd.HH:mm:ss"})," total state sync time is displayed, followed\nby an estimated sync progress (percentage of total database data synced), then the current download speed is displayed (\nthere will be times when it will slow down to 0 or single digit numbers, especially towards the end of the sync). In\ngeneral 6 hours sync times shown on screenshots are with around 2000 kB/s (kilobytes per second) average sync rate. You\ncan calculate it in the example as ~45GB / (2MB/s) ~ 22500 seconds ~6.25 hours. We also display the number of state\naccounts synced, number of trie nodes synced and a diagnostic message in the format of ",(0,i.jsx)(n.em,{children:"[number_of_pending_requests]\n.[average time spent in response handler displayed as milliseconds]"}),". So ",(0,i.jsx)(n.code,{children:"5.6.20ms"})," means that we are awaiting for\nresponses to 5 requests that have been sent to peers and the average time it takes us to process a single response is\n6.20ms. The response handling times will differ depending on how many trie nodes are already cached (so they will be\nsignificantly slower for a while after the node restart when cache has to be rebuilt) and based on how fast the database\nIO is (SSD vs NVMe vs cloud drives). For a reasonable sync time you probably should expect these values to be below\n15ms (but they may be as high as 700ms for a while after restarting the node)."]}),"\n",(0,i.jsx)(n.p,{children:"A single restart of the node during the fast sync may extend the sync time by up to two hours because the node has to\nrebuild the caches by reading millions of values from the database."}),"\n",(0,i.jsx)(n.p,{children:"At the last stages of the sync the node will be repeatedly displaying the branch sync progress and changing the block\nnumber to which it tries to catch up. This stage should take between 30 minutes and two hours. If it lasts much more\nthen it is possible that you will not be able to catch up with the network progress."}),"\n",(0,i.jsx)(n.p,{children:"One of the best indicators that you are close to be synced is combined ~100% state size progress and nearly 100% branch\nsync progress."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(2725).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(3203).A+"",width:"1895",height:"795"})}),"\n",(0,i.jsx)(n.h2,{id:"archive-sync",children:"Archive Sync"}),"\n",(0,i.jsxs)(n.p,{children:["Archive sync is the 'heaviest' and slowest sync mode but allows to ask questions like ",(0,i.jsx)(n.em,{children:"'what was the balance of my\naccount 2 years ago?'"}),", ",(0,i.jsx)(n.em,{children:"'how many XYZ token were held in SomeExchange custody in 2017?'"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["We have prepared default archive sync configurations and they can be launched from Nethermind Launcher (just choose the\narchive options) or by simply loading appropriate config when launching ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config goerli_archive"})}),"\n",(0,i.jsx)(n.p,{children:"While for some smaller networks archive sync can complete very quickly (in minutes or hours) mainnet sync would take 2 -\n6 weeks depending on the speed of your IO (whether you use SSD or NVMe or depending on the cloud provider IOPS).\nDatabase size in archive sync is the biggest from all modes as you will store all the historical data."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Example of the archive sync logs",src:s(4466).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(9175).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:"Explanation of some data in the logs:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["at the beginning you may see a ",(0,i.jsx)(n.em,{children:"'Waiting for peers...'"})," message while the node is trying to discover nodes that it can\nsync with."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Downloaded 1234/8000000'"})," shows the number of unprocessed blocks (with transactions) downloaded from the network.\nFor ",(0,i.jsx)(n.code,{children:"mainnet"}),"this value may be slower than processing at first but very quickly you will see blocks being downloaded\nmuch faster than processed. Empty blocks can be as small as 512 bytes (just headers without transactions) and full\nblocks with heavy transactions can reach a few hundred kilobytes. We display both current download speed (calculated\nin the last second) and average (total) speed since starting the node."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Processed ...'"})," displays the blocks that have been processed by the EVM. The first number shows the current head\nblock number, then you can see ",(0,i.jsx)(n.code,{children:"mgasps"})," (million gas per second) - current and total, then ",(0,i.jsx)(n.code,{children:"tps"})," (transactions per\nsecond) - current and total, ",(0,i.jsx)(n.code,{children:"bps"})," (blocks per second). Then ",(0,i.jsx)(n.code,{children:"recv queue"})," (transactions signature public key recovery\nqueue), ",(0,i.jsx)(n.code,{children:"proc queue"})," (processor queue). Both recovery queue and processor queue are designed so when too many blocks\nare waiting for processing then only their hashes are kept in memory and remaining data are stored in the database.\nThus, the queues numbers that you can see will be capped by some number."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Cache for epoch...'"})," informs about ",(0,i.jsx)(n.code,{children:"ethash"})," cache needed for block seal verification (only on ",(0,i.jsx)(n.code,{children:"mainnet"}),"\nand ",(0,i.jsx)(n.code,{children:"ropsten"}),"). Caches will be calculated every 30000 blocks (length of an epoch) but can also be calculated for the\nlatest blocks that are being broadcast on the network."]}),"\n",(0,i.jsxs)(n.li,{children:["After the archive sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," message appearing on average every 15 seconds when\nthe new block is processed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mgasps"}),", ",(0,i.jsx)(n.code,{children:"tps"}),", ",(0,i.jsx)(n.code,{children:"bps"})," values should not be treated as comparable as they may differ massively on different parts of\nthe chain. For example when blocks are empty you may see very high ",(0,i.jsx)(n.code,{children:"bps"})," values with very low (or even zero) ",(0,i.jsx)(n.code,{children:"tps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," values as there are no transactions and no gas for EVM processing and blocks are very light. On the other\nhand when blocks are filled with very heavy transactions then ",(0,i.jsx)(n.code,{children:"bps"})," might be very low while ",(0,i.jsx)(n.code,{children:"mgasps"})," will be very\nhigh. It is even possible that you will see a lot of very light transactions where ",(0,i.jsx)(n.code,{children:"tps"})," will be high while ",(0,i.jsx)(n.code,{children:"bps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," will be average."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,i.jsx)(n.p,{children:"Sync time heavily depends on the hardware used for the node, network speed, and peering. We are constantly pursuing to make it as fast as possible. Below is a brief on how the sync time looks on different machines and various chains (tested with Nethermind v1.21.0)."}),"\n",(0,i.jsxs)(r.A,{children:[(0,i.jsxs)(l.A,{value:"highend-vm",label:"High-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Akamai (formerly Linode)"}),"\n",(0,i.jsx)(n.li,{children:"CPU: AMD EPYC 7601, 16 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 64 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1.2 TB, ~40k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 7h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 58m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 2m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 5m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 21m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 22m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 17m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 46m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 31m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 10m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"midend-vm",label:"Mid-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: AWS"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/c7g/",children:"c7g.2xlarge"}),": 8 vCPU, 16 GiB memory"]}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~10k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 12h 37m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 35m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1h 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 43m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 2h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 4h 28m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 10m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 23m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 35m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 17m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 29m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 18h 28m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 52m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 25m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 5m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"oldspec-vm",label:"Old-spec VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Scaleway"}),"\n",(0,i.jsx)(n.li,{children:"CPU: Intel Xeon Processor E5-2620 v2, 2 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 192 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~44k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 1m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 29m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 25m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 3h 39m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 8h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 5h 55m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 34m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 14m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 16m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 2h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 26m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 45m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 56m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 30m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 3h 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 25m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"energyweb",label:"Energy Web",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 7m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 15h 20m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"volta",label:"Volta",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 14h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 42m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 16h 10m"]}),"\n"]})]})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"resync-a-node-from-scratch",children:"Resync a node from scratch"}),"\n",(0,i.jsx)(n.p,{children:"This guide explains how to resync a Nethermind node using the existing Pivot block or updating it to a more recent one."}),"\n",(0,i.jsx)(n.h3,{id:"steps-to-resync-a-nethermind-node",children:"Steps to Resync a Nethermind Node"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Stop the Nethermind node"}),": If your Nethermind node is currently running, stop it to ensure that no new data is\nbeing written to the database during the resync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Delete the existing database"}),": Navigate to the Nethermind data directory. The location of this directory depends\non how Nethermind was installed and your configuration settings. Inside the data directory, find the ",(0,i.jsx)(n.code,{children:"nethermind_db"}),"\nfolder and delete the ",(0,i.jsx)(n.code,{children:"mainnet"})," subfolder to remove the existing database for the mainnet."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the configuration file (optional)"}),": If you want to change any configuration settings before resyncing the\nnode, edit the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file located in the Nethermind directory. For example, you might want to adjust the\npruning settings or specify a different network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the Pivot block (optional)"}),"\\","\n",(0,i.jsx)(n.admonition,{type:"danger",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Only for versions before 1.19.0 where Auto-Pivot approach was introduced"})})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Etherscan"}),": If you want to speed up the syncing process, you can update the Pivot block to a more recent\none. To do this, find the ",(0,i.jsx)(n.code,{children:"Sync"})," section in the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file and update the ",(0,i.jsx)(n.code,{children:"PivotNumber"})," and ",(0,i.jsx)(n.code,{children:"PivotHash"}),'\nfields to match a recent "finalized" block number and its corresponding hash. You can obtain this information from\na block explorer such as ',(0,i.jsx)(n.a,{href:"https://etherscan.io/",children:"Etherscan"}),".",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.br,{}),"\n","Using block number 17165278 from ",(0,i.jsx)(n.a,{href:"https://etherscan.io/block/17165278",children:"Etherscan"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:' { \n \t "PivotNumber": 17165278,\n \t "PivotHash": "0xa665315efd923f3b11215feee09a9d3e13c5e6ee602fa19b642824682ec0a752"\n }\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Nethermind's GitHub"}),": Alternatively, you can update the Pivot block by referring to\nthe ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:"Nethermind's mainnet.cfg file on GitHub"}),".\nThe Pivot block is periodically bumped to the HEAD-8192 block of the mainnet chain. Copy the ",(0,i.jsx)(n.code,{children:"PivotNumber"}),"\nand ",(0,i.jsx)(n.code,{children:"PivotHash"})," values from the GitHub file and update your local ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file accordingly."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Restart the Nethermind node"}),": Start the Nethermind node again to initiate the resync process. The node will begin\nsyncing from the existing Pivot block or the specified updated Pivot block, downloading and processing all the blocks\nin the blockchain."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To ensure that your Nethermind node is resyncing, you can monitor the logs for the node's progress. The logs will\ndisplay information about the block processing, synchronization status and ",(0,i.jsx)(n.code,{children:"OldHeaders"})," being processed. By observing\nthe increasing block numbers and synchronization messages in the logs, you can confirm that the resync process is active\nand working as expected."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Old Headers 0 / 17154000 | queue 0 | current 0.00bps | total 0.00bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 768 / 17154000 | queue 0 | current 766.07bps | total 762.49bps"}),"\n",(0,i.jsx)(n.p,{children:"Beacon Headers from block 17154001 to block 17169722 | 960 / 15722 | queue 4992 | current 0.00bps | total\n40622848.83bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 9024 / 17154000 | queue 0 | current 576.40bps | total 1286.40bps"}),"\n",(0,i.jsxs)(n.p,{children:["Beacon Headers from block 17154001 to block 17169723 | 9024 / 15723 | queue 6698 | current 2694.81bps | total\n3882943.63bps",(0,i.jsx)(n.br,{}),"\n","Downloaded 17154031 / 17172359 | current 0.00bps | total 0.00bps"]}),"\n",(0,i.jsx)(n.p,{children:"Downloaded 17154062 / 17169724 | current 0.00bps | total 2.88bps"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Keep in mind that resyncing a Nethermind node can take a considerable amount of time. It depends on your hardware,\ninternet connection, and the size of the blockchain."})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var i=s(4164);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>w});var i=s(6540),t=s(4164),r=s(3104),l=s(6347),d=s(205),o=s(7485),a=s(1682),c=s(679);function h(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:i,default:t}}=e;return{value:n,label:s,attributes:i,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,o.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=u(e),[l,o]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=s.find((e=>e.default))??s[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[a,h]=j({queryString:s,groupId:t}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,c.Dv)(s);return[t,(0,i.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),g=(()=>{const e=a??m;return x({value:e,tabValues:r})?e:null})();(0,d.A)((()=>{g&&o(g)}),[g]);return{selectedValue:l,selectValue:(0,i.useCallback)((e=>{if(!x({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),h(e),p(e)}),[h,p,r]),tabValues:r}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function b(e){let{className:n,block:s,selectedValue:i,selectValue:l,tabValues:d}=e;const o=[],{blockElementScrollPositionUntilNextRender:a}=(0,r.a_)(),c=e=>{const n=e.currentTarget,s=o.indexOf(n),t=d[s].value;t!==i&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const s=o.indexOf(e.currentTarget)+1;n=o[s]??o[0];break}case"ArrowLeft":{const s=o.indexOf(e.currentTarget)-1;n=o[s]??o[o.length-1];break}}n?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>o.push(e),onKeyDown:h,onClick:c,...r,className:(0,t.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":i===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:r}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=m(e);return(0,y.jsxs)("div",{className:(0,t.A)("tabs-container",g.tabList),children:[(0,y.jsx)(b,{...n,...e}),(0,y.jsx)(f,{...n,...e})]})}function w(e){const n=(0,p.A)();return(0,y.jsx)(v,{...e,children:h(e.children)},String(n))}},5330:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png"},9175:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png"},4466:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png"},7017:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png"},3203:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png"},2725:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png"},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var i=s(6540);const t={},r=i.createContext(t);function l(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/89349935.5e11fb19.js b/assets/js/89349935.c9b389d3.js similarity index 99% rename from assets/js/89349935.5e11fb19.js rename to assets/js/89349935.c9b389d3.js index ff405144c..1ef3242b4 100644 --- a/assets/js/89349935.5e11fb19.js +++ b/assets/js/89349935.c9b389d3.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2585],{2612:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const t={title:"parity namespace",sidebar_label:"parity",sidebar_position:5},d=void 0,a={id:"interacting/json-rpc-ns/parity",title:"parity namespace",description:"parity_clearEngineSigner",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/parity.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/parity",permalink:"/interacting/json-rpc-ns/parity",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/parity.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:5,frontMatter:{title:"parity namespace",sidebar_label:"parity",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"net",permalink:"/interacting/json-rpc-ns/net"},next:{title:"personal",permalink:"/interacting/json-rpc-ns/personal"}},o={},h=[{value:"parity_clearEngineSigner",id:"parity_clearenginesigner",level:3},{value:"parity_enode",id:"parity_enode",level:3},{value:"parity_getBlockReceipts",id:"parity_getblockreceipts",level:3},{value:"parity_netPeers",id:"parity_netpeers",level:3},{value:"parity_pendingTransactions",id:"parity_pendingtransactions",level:3},{value:"parity_setEngineSigner",id:"parity_setenginesigner",level:3},{value:"parity_setEngineSignerSecret",id:"parity_setenginesignersecret",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"parity_clearenginesigner",children:"parity_clearEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_clearEngineSigner",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_enode",children:"parity_enode"}),"\n",(0,r.jsx)(n.p,{children:"Returns the node enode URI."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_enode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_getblockreceipts",children:"parity_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_netpeers",children:"parity_netPeers"}),"\n",(0,r.jsx)(n.p,{children:"Returns connected peers. Peers with non-empty protocols have completed handshake."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_netPeers",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"active"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"connected"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"max"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"peers"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"caps"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"network"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"localAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"remoteAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"version"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_pendingtransactions",children:"parity_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given sender address."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_pendingTransactions",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"condition"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creates"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"publicKey"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prefixedBytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"raw"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"standardV"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesigner",children:"parity_setEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"password"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSigner",\n "params": [address, password]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesignersecret",children:"parity_setEngineSignerSecret"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"privateKey"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSignerSecret",\n "params": [privateKey]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),t=s(205),d=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function p(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[c,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:s,groupId:i}),[p,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),m=(()=>{const e=a??p;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{m&&d(m)}),[m]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,l]),tabValues:l}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),i=t[s].value;i!==r&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",m.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=p(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",m.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,g.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>t});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2585],{2612:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const t={title:"parity namespace",sidebar_label:"parity",sidebar_position:5},d=void 0,a={id:"interacting/json-rpc-ns/parity",title:"parity namespace",description:"parity_clearEngineSigner",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/parity.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/parity",permalink:"/interacting/json-rpc-ns/parity",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/parity.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:5,frontMatter:{title:"parity namespace",sidebar_label:"parity",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"net",permalink:"/interacting/json-rpc-ns/net"},next:{title:"personal",permalink:"/interacting/json-rpc-ns/personal"}},o={},h=[{value:"parity_clearEngineSigner",id:"parity_clearenginesigner",level:3},{value:"parity_enode",id:"parity_enode",level:3},{value:"parity_getBlockReceipts",id:"parity_getblockreceipts",level:3},{value:"parity_netPeers",id:"parity_netpeers",level:3},{value:"parity_pendingTransactions",id:"parity_pendingtransactions",level:3},{value:"parity_setEngineSigner",id:"parity_setenginesigner",level:3},{value:"parity_setEngineSignerSecret",id:"parity_setenginesignersecret",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"parity_clearenginesigner",children:"parity_clearEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_clearEngineSigner",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_enode",children:"parity_enode"}),"\n",(0,r.jsx)(n.p,{children:"Returns the node enode URI."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_enode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_getblockreceipts",children:"parity_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_netpeers",children:"parity_netPeers"}),"\n",(0,r.jsx)(n.p,{children:"Returns connected peers. Peers with non-empty protocols have completed handshake."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_netPeers",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"active"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"connected"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"max"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"peers"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"caps"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"network"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"localAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"remoteAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"version"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_pendingtransactions",children:"parity_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given sender address."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_pendingTransactions",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"condition"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creates"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"publicKey"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prefixedBytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"raw"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"standardV"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesigner",children:"parity_setEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"password"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSigner",\n "params": [address, password]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesignersecret",children:"parity_setEngineSignerSecret"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"privateKey"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSignerSecret",\n "params": [privateKey]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),t=s(205),d=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function p(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[c,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:s,groupId:i}),[p,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),m=(()=>{const e=a??p;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{m&&d(m)}),[m]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,l]),tabValues:l}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),i=t[s].value;i!==r&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",m.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=p(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",m.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,g.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>t});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8a1664e8.36fb16dd.js b/assets/js/8a1664e8.4e09892d.js similarity index 99% rename from assets/js/8a1664e8.36fb16dd.js rename to assets/js/8a1664e8.4e09892d.js index f9c938c5b..f029475c3 100644 --- a/assets/js/8a1664e8.36fb16dd.js +++ b/assets/js/8a1664e8.4e09892d.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8982],{4259:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var r=n(4848),s=n(8453),a=n(1470),o=n(9365);const i={title:"Troubleshooting",sidebar_position:8},l=void 0,c={id:"troubleshooting",title:"Troubleshooting",description:"File descriptor limits",source:"@site/versioned_docs/version-1.27.0/troubleshooting.md",sourceDirName:".",slug:"/troubleshooting",permalink:"/1.27.0/troubleshooting",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/troubleshooting.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"Troubleshooting",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"FAQ",permalink:"/1.27.0/faq"}},u={},d=[{value:"File descriptor limits",id:"file-descriptor-limits",level:2},{value:"Database corruption issues",id:"database-corruption-issues",level:2},{value:"Issues with lock files",id:"issues-with-lock-files",level:2},{value:"Block checksum mismatch",id:"block-checksum-mismatch",level:2}];function h(e){const t={a:"a",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"file-descriptor-limits",children:"File descriptor limits"}),"\n",(0,r.jsx)(t.p,{children:'In some cases, file descriptor limits may cause errors like "Too many open files". To solve that, see the instructions for your platform below.'}),"\n",(0,r.jsxs)(a.A,{groupId:"os",children:[(0,r.jsxs)(o.A,{value:"linux",label:"Linux",children:[(0,r.jsxs)(t.p,{children:["To increase the limits for the user running Nethermind (given the process name of ",(0,r.jsx)(t.code,{children:"nethermind"}),"), run:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:'sudo echo "nethermind soft nofile 100000" > /etc/security/limits.d/nethermind.conf\nsudo echo "nethermind hard nofile 100000" >> /etc/security/limits.d/nethermind.conf\n'})})]}),(0,r.jsxs)(o.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(t.p,{children:"To increase the limits, run:"}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"ulimit -n 10000\n"})}),(0,r.jsxs)(t.p,{children:["If you run into issues with the above command, see the ",(0,r.jsx)(t.a,{href:"https://developer.apple.com/forums/thread/735798?answerId=762679022#762679022",children:"workaround"}),"."]}),(0,r.jsxs)(t.p,{children:["Note that the changes above are temporary and will be reset after the system reboot. To make them permanent, you can add them to your ",(0,r.jsx)(t.code,{children:"~/.bashrc"})," or ",(0,r.jsx)(t.code,{children:"~/.bash_profile"})," shell configuration file."]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"database-corruption-issues",children:"Database corruption issues"}),"\n",(0,r.jsx)(t.p,{children:"Database corruption is one of the issues that happen now and then; it has many possible causes among them:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Hardware failures: disk failures, memory errors, hardware overheating, etc."}),"\n",(0,r.jsx)(t.li,{children:"Power cuts and abrupt shutdowns"}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["There's no shortcut in such situations, and ",(0,r.jsx)(t.a,{href:"/1.27.0/fundamentals/sync#resync-a-node-from-scratch",children:"resyncing Nethermind from scratch"})," is the recommended remedy."]}),"\n",(0,r.jsx)(t.h2,{id:"issues-with-lock-files",children:"Issues with lock files"}),"\n",(0,r.jsx)(t.p,{children:"If Nethermind complains about the lock files, it perhaps because of one of the following:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Another Nethermind process is running using the same database"}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The database has not been appropriately closed on the last run.",(0,r.jsx)(t.br,{}),"\n","In this case, run the following command from the Nethermind database directory:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"find . -type f -name 'LOCK' -delete\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"block-checksum-mismatch",children:"Block checksum mismatch"}),"\n",(0,r.jsx)(t.p,{children:"Sometimes Nethermind may fail with an error similar the following:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"Corruption: block checksum mismatch: expected 2087346143, got 2983326672 in... \n"})}),"\n",(0,r.jsxs)(t.p,{children:["This tends to happen on XFS file systems under very high memory pressure. The issue can be mitigated by using the ",(0,r.jsx)(t.code,{children:"--Db.UseDirectIoForFlushAndCompactions true"})," option although at the cost of performance."]}),"\n",(0,r.jsx)(t.p,{children:"However, quite often, this is because of memory module issues."})]})}function m(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>o});n(6540);var r=n(4164);const s={tabItem:"tabItem_Ymn6"};var a=n(4848);function o(e){let{children:t,hidden:n,className:o}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,o),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(4164),a=n(3104),o=n(6347),i=n(205),l=n(7485),c=n(1682),u=n(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const s=(0,o.W6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(s.location.search);t.set(a,e),s.replace({...s.location,search:t.toString()})}),[a,s])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,a=h(e),[o,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:a}))),[c,d]=p({queryString:n,groupId:s}),[f,b]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,a]=(0,u.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:s}),v=(()=>{const e=c??f;return m({value:e,tabValues:a})?e:null})();(0,i.A)((()=>{v&&l(v)}),[v]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=n(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=n(4848);function g(e){let{className:t,block:n,selectedValue:r,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const t=e.currentTarget,n=l.indexOf(t),s=i[n].value;s!==r&&(c(t),o(s))},d=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:i.map((e=>{let{value:t,label:n,attributes:a}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>l.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",v.tabItem,a?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function j(e){let{lazy:t,children:n,selectedValue:a}=e;const o=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:o.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a})))})}function y(e){const t=f(e);return(0,x.jsxs)("div",{className:(0,s.A)("tabs-container",v.tabList),children:[(0,x.jsx)(g,{...t,...e}),(0,x.jsx)(j,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,x.jsx)(y,{...e,children:d(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>i});var r=n(6540);const s={},a=r.createContext(s);function o(e){const t=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8982],{4259:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var r=n(4848),s=n(8453),a=n(1470),o=n(9365);const i={title:"Troubleshooting",sidebar_position:8},l=void 0,c={id:"troubleshooting",title:"Troubleshooting",description:"File descriptor limits",source:"@site/versioned_docs/version-1.27.0/troubleshooting.md",sourceDirName:".",slug:"/troubleshooting",permalink:"/1.27.0/troubleshooting",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/troubleshooting.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"Troubleshooting",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"FAQ",permalink:"/1.27.0/faq"}},u={},d=[{value:"File descriptor limits",id:"file-descriptor-limits",level:2},{value:"Database corruption issues",id:"database-corruption-issues",level:2},{value:"Issues with lock files",id:"issues-with-lock-files",level:2},{value:"Block checksum mismatch",id:"block-checksum-mismatch",level:2}];function h(e){const t={a:"a",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"file-descriptor-limits",children:"File descriptor limits"}),"\n",(0,r.jsx)(t.p,{children:'In some cases, file descriptor limits may cause errors like "Too many open files". To solve that, see the instructions for your platform below.'}),"\n",(0,r.jsxs)(a.A,{groupId:"os",children:[(0,r.jsxs)(o.A,{value:"linux",label:"Linux",children:[(0,r.jsxs)(t.p,{children:["To increase the limits for the user running Nethermind (given the process name of ",(0,r.jsx)(t.code,{children:"nethermind"}),"), run:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:'sudo echo "nethermind soft nofile 100000" > /etc/security/limits.d/nethermind.conf\nsudo echo "nethermind hard nofile 100000" >> /etc/security/limits.d/nethermind.conf\n'})})]}),(0,r.jsxs)(o.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(t.p,{children:"To increase the limits, run:"}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"ulimit -n 10000\n"})}),(0,r.jsxs)(t.p,{children:["If you run into issues with the above command, see the ",(0,r.jsx)(t.a,{href:"https://developer.apple.com/forums/thread/735798?answerId=762679022#762679022",children:"workaround"}),"."]}),(0,r.jsxs)(t.p,{children:["Note that the changes above are temporary and will be reset after the system reboot. To make them permanent, you can add them to your ",(0,r.jsx)(t.code,{children:"~/.bashrc"})," or ",(0,r.jsx)(t.code,{children:"~/.bash_profile"})," shell configuration file."]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"database-corruption-issues",children:"Database corruption issues"}),"\n",(0,r.jsx)(t.p,{children:"Database corruption is one of the issues that happen now and then; it has many possible causes among them:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Hardware failures: disk failures, memory errors, hardware overheating, etc."}),"\n",(0,r.jsx)(t.li,{children:"Power cuts and abrupt shutdowns"}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["There's no shortcut in such situations, and ",(0,r.jsx)(t.a,{href:"/1.27.0/fundamentals/sync#resync-a-node-from-scratch",children:"resyncing Nethermind from scratch"})," is the recommended remedy."]}),"\n",(0,r.jsx)(t.h2,{id:"issues-with-lock-files",children:"Issues with lock files"}),"\n",(0,r.jsx)(t.p,{children:"If Nethermind complains about the lock files, it perhaps because of one of the following:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Another Nethermind process is running using the same database"}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The database has not been appropriately closed on the last run.",(0,r.jsx)(t.br,{}),"\n","In this case, run the following command from the Nethermind database directory:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"find . -type f -name 'LOCK' -delete\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"block-checksum-mismatch",children:"Block checksum mismatch"}),"\n",(0,r.jsx)(t.p,{children:"Sometimes Nethermind may fail with an error similar the following:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"Corruption: block checksum mismatch: expected 2087346143, got 2983326672 in... \n"})}),"\n",(0,r.jsxs)(t.p,{children:["This tends to happen on XFS file systems under very high memory pressure. The issue can be mitigated by using the ",(0,r.jsx)(t.code,{children:"--Db.UseDirectIoForFlushAndCompactions true"})," option although at the cost of performance."]}),"\n",(0,r.jsx)(t.p,{children:"However, quite often, this is because of memory module issues."})]})}function m(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>o});n(6540);var r=n(4164);const s={tabItem:"tabItem_Ymn6"};var a=n(4848);function o(e){let{children:t,hidden:n,className:o}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,o),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(4164),a=n(3104),o=n(6347),i=n(205),l=n(7485),c=n(1682),u=n(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const s=(0,o.W6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(s.location.search);t.set(a,e),s.replace({...s.location,search:t.toString()})}),[a,s])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,a=h(e),[o,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:a}))),[c,d]=p({queryString:n,groupId:s}),[f,b]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,a]=(0,u.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:s}),v=(()=>{const e=c??f;return m({value:e,tabValues:a})?e:null})();(0,i.A)((()=>{v&&l(v)}),[v]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=n(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=n(4848);function g(e){let{className:t,block:n,selectedValue:r,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const t=e.currentTarget,n=l.indexOf(t),s=i[n].value;s!==r&&(c(t),o(s))},d=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:i.map((e=>{let{value:t,label:n,attributes:a}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>l.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",v.tabItem,a?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function j(e){let{lazy:t,children:n,selectedValue:a}=e;const o=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:o.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a})))})}function y(e){const t=f(e);return(0,x.jsxs)("div",{className:(0,s.A)("tabs-container",v.tabList),children:[(0,x.jsx)(g,{...t,...e}),(0,x.jsx)(j,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,x.jsx)(y,{...e,children:d(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>i});var r=n(6540);const s={},a=r.createContext(s);function o(e){const t=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8ab4d091.abf7418b.js b/assets/js/8ab4d091.f94a3fa2.js similarity index 99% rename from assets/js/8ab4d091.abf7418b.js rename to assets/js/8ab4d091.f94a3fa2.js index b95e6803f..2edfe1077 100644 --- a/assets/js/8ab4d091.abf7418b.js +++ b/assets/js/8ab4d091.f94a3fa2.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6434],{1340:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>t,frontMatter:()=>d,metadata:()=>a,toc:()=>x});var l=s(4848),r=s(8453),i=s(1470),c=s(9365);const d={title:"debug namespace",sidebar_label:"debug",sidebar_position:2},h=void 0,a={id:"interacting/json-rpc-ns/debug",title:"debug namespace",description:"debug_deleteChainSlice",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/debug.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/debug",permalink:"/1.27.0/interacting/json-rpc-ns/debug",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/debug.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"debug namespace",sidebar_label:"debug",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"clique",permalink:"/1.27.0/interacting/json-rpc-ns/clique"},next:{title:"eth",permalink:"/1.27.0/interacting/json-rpc-ns/eth"}},j={},x=[{value:"debug_deleteChainSlice",id:"debug_deletechainslice",level:3},{value:"debug_getBadBlocks",id:"debug_getbadblocks",level:3},{value:"debug_getBlockRlp",id:"debug_getblockrlp",level:3},{value:"debug_getBlockRlpByHash",id:"debug_getblockrlpbyhash",level:3},{value:"debug_getChainLevel",id:"debug_getchainlevel",level:3},{value:"debug_getConfigValue",id:"debug_getconfigvalue",level:3},{value:"debug_getRawBlock",id:"debug_getrawblock",level:3},{value:"debug_getRawHeader",id:"debug_getrawheader",level:3},{value:"debug_getRawReceipts",id:"debug_getrawreceipts",level:3},{value:"debug_getRawTransaction",id:"debug_getrawtransaction",level:3},{value:"debug_getSyncStage",id:"debug_getsyncstage",level:3},{value:"debug_insertReceipts",id:"debug_insertreceipts",level:3},{value:"debug_migrateReceipts",id:"debug_migratereceipts",level:3},{value:"debug_resetHead",id:"debug_resethead",level:3},{value:"debug_standardTraceBlockToFile",id:"debug_standardtraceblocktofile",level:3},{value:"debug_traceBlock",id:"debug_traceblock",level:3},{value:"debug_traceBlockByHash",id:"debug_traceblockbyhash",level:3},{value:"debug_traceBlockByNumber",id:"debug_traceblockbynumber",level:3},{value:"debug_traceCall",id:"debug_tracecall",level:3},{value:"debug_traceTransaction",id:"debug_tracetransaction",level:3},{value:"debug_traceTransactionByBlockAndIndex",id:"debug_tracetransactionbyblockandindex",level:3},{value:"debug_traceTransactionByBlockhashAndIndex",id:"debug_tracetransactionbyblockhashandindex",level:3},{value:"debug_traceTransactionInBlockByHash",id:"debug_tracetransactioninblockbyhash",level:3},{value:"debug_traceTransactionInBlockByIndex",id:"debug_tracetransactioninblockbyindex",level:3}];function o(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h3,{id:"debug_deletechainslice",children:"debug_deleteChainSlice"}),"\n",(0,l.jsx)(n.p,{children:"Deletes a slice of a chain from the tree on all branches (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"startNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"force"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_deleteChainSlice",\n "params": [startNumber, force]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getbadblocks",children:"debug_getBadBlocks"}),"\n",(0,l.jsx)(n.p,{children:"Return list of invalid blocks."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBadBlocks",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"block"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"author"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"difficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"extraData"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasLimit"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"miner"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mixHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"signature"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"size"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stateRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"step"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timestamp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactions"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"uncles"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInGwei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInWei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"index"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"validatorIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"rlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlp",children:"debug_getBlockRlp"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlp",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlpbyhash",children:"debug_getBlockRlpByHash"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlpByHash",\n "params": [hash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getchainlevel",children:"debug_getChainLevel"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a representation of tree branches on a given chain level (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getChainLevel",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockInfos"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isFinalized"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"wasProcessed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasBlockOnMainChain"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getconfigvalue",children:"debug_getConfigValue"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves the Nethermind configuration value, e.g. JsonRpc.Enabled"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"category"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"name"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getConfigValue",\n "params": [category, name]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawblock",children:"debug_getRawBlock"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Block format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawBlock",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawheader",children:"debug_getRawHeader"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Header format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawHeader",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawreceipts",children:"debug_getRawReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Receipt format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawtransaction",children:"debug_getRawTransaction"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Transaction format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawTransaction",\n "params": [transactionHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getsyncstage",children:"debug_getSyncStage"}),"\n",(0,l.jsx)(n.p,{children:"Retrives Nethermind Sync Stage, With extra Metadata"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getSyncStage",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"currentStage"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_insertreceipts",children:"debug_insertReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Insert receipts for the block after verifying receipts root correctness."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsxs)(c.A,{value:"params",label:"Parameters",children:[(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"receiptForRpc"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"contractAddress"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logs"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"removed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"topics"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"root"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"status"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]})]}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_insertReceipts",\n "params": [blockParameter, receiptForRpc]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_migratereceipts",children:"debug_migrateReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Sets the block number up to which receipts will be migrated to (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_migrateReceipts",\n "params": [blockNumber]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_resethead",children:"debug_resetHead"}),"\n",(0,l.jsx)(n.p,{children:"Updates / resets head block - use only when the node got stuck due to DB / memory corruption (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_resetHead",\n "params": [blockHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtraceblocktofile",children:"debug_standardTraceBlockToFile"}),"\n",(0,l.jsx)(n.p,{children:"Writes to a file the full stack trace of all invoked opcodes of the transaction specified (or all transactions if not specified) that was included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblock",children:"debug_traceBlock"}),"\n",(0,l.jsx)(n.p,{children:"Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlock",\n "params": [blockRlp, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbyhash",children:"debug_traceBlockByHash"}),"\n",(0,l.jsx)(n.p,{children:"Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the database."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByHash",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbynumber",children:"debug_traceBlockByNumber"}),"\n",(0,l.jsx)(n.p,{children:'Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block that is already present in the database.'}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByNumber",\n "params": [blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracecall",children:"debug_traceCall"}),"\n",(0,l.jsx)(n.p,{children:"This method lets you run an eth_call within the context of the given block execution using the final state of parent block as the base. The block can be specified either by hash or by number. It takes the same input object as a eth_call. It returns the same output as debug_traceTransaction."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"call"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"accessList"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chainId"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"input"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isSystemTx"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mint"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"r"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"s"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sourceHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"v"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"yParity"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceCall",\n "params": [call, blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransaction",children:"debug_traceTransaction"}),"\n",(0,l.jsx)(n.p,{children:"This 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."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransaction",\n "params": [transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockandindex",children:"debug_traceTransactionByBlockAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockAndIndex",\n "params": [blockParameter, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockhashandindex",children:"debug_traceTransactionByBlockhashAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockhashAndIndex",\n "params": [blockHash, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyhash",children:"debug_traceTransactionInBlockByHash"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByHash",\n "params": [blockRlp, transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyindex",children:"debug_traceTransactionInBlockByIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByIndex",\n "params": [blockRlp, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function t(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(o,{...e})}):o(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var l=s(4164);const r={tabItem:"tabItem_Ymn6"};var i=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,l.A)(r.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var l=s(6540),r=s(4164),i=s(3104),c=s(6347),d=s(205),h=s(7485),a=s(1682),j=s(679);function x(e){return l.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,l.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function o(e){const{values:n,children:s}=e;return(0,l.useMemo)((()=>{const e=n??function(e){return x(e).map((e=>{let{props:{value:n,label:s,attributes:l,default:r}}=e;return{value:n,label:s,attributes:l,default:r}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function t(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const r=(0,c.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(i),(0,l.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,i=o(e),[c,h]=(0,l.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!t({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const l=s.find((e=>e.default))??s[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:n,tabValues:i}))),[a,x]=u({queryString:s,groupId:r}),[m,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,j.Dv)(s);return[r,(0,l.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:r}),b=(()=>{const e=a??m;return t({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{b&&h(b)}),[b]);return{selectedValue:c,selectValue:(0,l.useCallback)((e=>{if(!t({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);h(e),x(e),g(e)}),[x,g,i]),tabValues:i}}var g=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var p=s(4848);function f(e){let{className:n,block:s,selectedValue:l,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),r=d[s].value;r!==l&&(a(n),c(r))},x=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,p.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,p.jsx)("li",{role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,ref:e=>h.push(e),onKeyDown:x,onClick:j,...i,className:(0,r.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":l===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===i));return e?(0,l.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,p.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,l.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=m(e);return(0,p.jsxs)("div",{className:(0,r.A)("tabs-container",b.tabList),children:[(0,p.jsx)(f,{...n,...e}),(0,p.jsx)(v,{...n,...e})]})}function k(e){const n=(0,g.A)();return(0,p.jsx)(y,{...e,children:x(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var l=s(6540);const r={},i=l.createContext(r);function c(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6434],{1340:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>t,frontMatter:()=>d,metadata:()=>a,toc:()=>x});var l=s(4848),r=s(8453),i=s(1470),c=s(9365);const d={title:"debug namespace",sidebar_label:"debug",sidebar_position:2},h=void 0,a={id:"interacting/json-rpc-ns/debug",title:"debug namespace",description:"debug_deleteChainSlice",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/debug.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/debug",permalink:"/1.27.0/interacting/json-rpc-ns/debug",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/debug.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"debug namespace",sidebar_label:"debug",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"clique",permalink:"/1.27.0/interacting/json-rpc-ns/clique"},next:{title:"eth",permalink:"/1.27.0/interacting/json-rpc-ns/eth"}},j={},x=[{value:"debug_deleteChainSlice",id:"debug_deletechainslice",level:3},{value:"debug_getBadBlocks",id:"debug_getbadblocks",level:3},{value:"debug_getBlockRlp",id:"debug_getblockrlp",level:3},{value:"debug_getBlockRlpByHash",id:"debug_getblockrlpbyhash",level:3},{value:"debug_getChainLevel",id:"debug_getchainlevel",level:3},{value:"debug_getConfigValue",id:"debug_getconfigvalue",level:3},{value:"debug_getRawBlock",id:"debug_getrawblock",level:3},{value:"debug_getRawHeader",id:"debug_getrawheader",level:3},{value:"debug_getRawReceipts",id:"debug_getrawreceipts",level:3},{value:"debug_getRawTransaction",id:"debug_getrawtransaction",level:3},{value:"debug_getSyncStage",id:"debug_getsyncstage",level:3},{value:"debug_insertReceipts",id:"debug_insertreceipts",level:3},{value:"debug_migrateReceipts",id:"debug_migratereceipts",level:3},{value:"debug_resetHead",id:"debug_resethead",level:3},{value:"debug_standardTraceBlockToFile",id:"debug_standardtraceblocktofile",level:3},{value:"debug_traceBlock",id:"debug_traceblock",level:3},{value:"debug_traceBlockByHash",id:"debug_traceblockbyhash",level:3},{value:"debug_traceBlockByNumber",id:"debug_traceblockbynumber",level:3},{value:"debug_traceCall",id:"debug_tracecall",level:3},{value:"debug_traceTransaction",id:"debug_tracetransaction",level:3},{value:"debug_traceTransactionByBlockAndIndex",id:"debug_tracetransactionbyblockandindex",level:3},{value:"debug_traceTransactionByBlockhashAndIndex",id:"debug_tracetransactionbyblockhashandindex",level:3},{value:"debug_traceTransactionInBlockByHash",id:"debug_tracetransactioninblockbyhash",level:3},{value:"debug_traceTransactionInBlockByIndex",id:"debug_tracetransactioninblockbyindex",level:3}];function o(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h3,{id:"debug_deletechainslice",children:"debug_deleteChainSlice"}),"\n",(0,l.jsx)(n.p,{children:"Deletes a slice of a chain from the tree on all branches (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"startNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"force"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_deleteChainSlice",\n "params": [startNumber, force]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getbadblocks",children:"debug_getBadBlocks"}),"\n",(0,l.jsx)(n.p,{children:"Return list of invalid blocks."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBadBlocks",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"block"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"author"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"difficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"extraData"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasLimit"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"miner"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mixHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"signature"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"size"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stateRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"step"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timestamp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactions"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"uncles"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInGwei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInWei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"index"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"validatorIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"rlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlp",children:"debug_getBlockRlp"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlp",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlpbyhash",children:"debug_getBlockRlpByHash"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlpByHash",\n "params": [hash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getchainlevel",children:"debug_getChainLevel"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a representation of tree branches on a given chain level (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getChainLevel",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockInfos"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isFinalized"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"wasProcessed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasBlockOnMainChain"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getconfigvalue",children:"debug_getConfigValue"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves the Nethermind configuration value, e.g. JsonRpc.Enabled"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"category"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"name"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getConfigValue",\n "params": [category, name]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawblock",children:"debug_getRawBlock"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Block format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawBlock",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawheader",children:"debug_getRawHeader"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Header format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawHeader",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawreceipts",children:"debug_getRawReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Receipt format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawtransaction",children:"debug_getRawTransaction"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Transaction format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawTransaction",\n "params": [transactionHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getsyncstage",children:"debug_getSyncStage"}),"\n",(0,l.jsx)(n.p,{children:"Retrives Nethermind Sync Stage, With extra Metadata"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getSyncStage",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"currentStage"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_insertreceipts",children:"debug_insertReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Insert receipts for the block after verifying receipts root correctness."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsxs)(c.A,{value:"params",label:"Parameters",children:[(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"receiptForRpc"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"contractAddress"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logs"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"removed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"topics"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"root"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"status"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]})]}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_insertReceipts",\n "params": [blockParameter, receiptForRpc]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_migratereceipts",children:"debug_migrateReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Sets the block number up to which receipts will be migrated to (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_migrateReceipts",\n "params": [blockNumber]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_resethead",children:"debug_resetHead"}),"\n",(0,l.jsx)(n.p,{children:"Updates / resets head block - use only when the node got stuck due to DB / memory corruption (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_resetHead",\n "params": [blockHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtraceblocktofile",children:"debug_standardTraceBlockToFile"}),"\n",(0,l.jsx)(n.p,{children:"Writes to a file the full stack trace of all invoked opcodes of the transaction specified (or all transactions if not specified) that was included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblock",children:"debug_traceBlock"}),"\n",(0,l.jsx)(n.p,{children:"Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlock",\n "params": [blockRlp, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbyhash",children:"debug_traceBlockByHash"}),"\n",(0,l.jsx)(n.p,{children:"Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the database."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByHash",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbynumber",children:"debug_traceBlockByNumber"}),"\n",(0,l.jsx)(n.p,{children:'Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block that is already present in the database.'}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByNumber",\n "params": [blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracecall",children:"debug_traceCall"}),"\n",(0,l.jsx)(n.p,{children:"This method lets you run an eth_call within the context of the given block execution using the final state of parent block as the base. The block can be specified either by hash or by number. It takes the same input object as a eth_call. It returns the same output as debug_traceTransaction."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"call"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"accessList"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chainId"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"input"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isSystemTx"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mint"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"r"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"s"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sourceHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"v"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"yParity"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceCall",\n "params": [call, blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransaction",children:"debug_traceTransaction"}),"\n",(0,l.jsx)(n.p,{children:"This 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."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransaction",\n "params": [transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockandindex",children:"debug_traceTransactionByBlockAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockAndIndex",\n "params": [blockParameter, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockhashandindex",children:"debug_traceTransactionByBlockhashAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockhashAndIndex",\n "params": [blockHash, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyhash",children:"debug_traceTransactionInBlockByHash"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByHash",\n "params": [blockRlp, transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyindex",children:"debug_traceTransactionInBlockByIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByIndex",\n "params": [blockRlp, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function t(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(o,{...e})}):o(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var l=s(4164);const r={tabItem:"tabItem_Ymn6"};var i=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,l.A)(r.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var l=s(6540),r=s(4164),i=s(3104),c=s(6347),d=s(205),h=s(7485),a=s(1682),j=s(679);function x(e){return l.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,l.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function o(e){const{values:n,children:s}=e;return(0,l.useMemo)((()=>{const e=n??function(e){return x(e).map((e=>{let{props:{value:n,label:s,attributes:l,default:r}}=e;return{value:n,label:s,attributes:l,default:r}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function t(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const r=(0,c.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(i),(0,l.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,i=o(e),[c,h]=(0,l.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!t({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const l=s.find((e=>e.default))??s[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:n,tabValues:i}))),[a,x]=u({queryString:s,groupId:r}),[m,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,j.Dv)(s);return[r,(0,l.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:r}),b=(()=>{const e=a??m;return t({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{b&&h(b)}),[b]);return{selectedValue:c,selectValue:(0,l.useCallback)((e=>{if(!t({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);h(e),x(e),g(e)}),[x,g,i]),tabValues:i}}var g=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var p=s(4848);function f(e){let{className:n,block:s,selectedValue:l,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),r=d[s].value;r!==l&&(a(n),c(r))},x=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,p.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,p.jsx)("li",{role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,ref:e=>h.push(e),onKeyDown:x,onClick:j,...i,className:(0,r.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":l===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===i));return e?(0,l.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,p.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,l.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=m(e);return(0,p.jsxs)("div",{className:(0,r.A)("tabs-container",b.tabList),children:[(0,p.jsx)(f,{...n,...e}),(0,p.jsx)(v,{...n,...e})]})}function k(e){const n=(0,g.A)();return(0,p.jsx)(y,{...e,children:x(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var l=s(6540);const r={},i=l.createContext(r);function c(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8b054004.9bfd906e.js b/assets/js/8b054004.fbb4926b.js similarity index 99% rename from assets/js/8b054004.9bfd906e.js rename to assets/js/8b054004.fbb4926b.js index 9679b36eb..c2901d5b2 100644 --- a/assets/js/8b054004.9bfd906e.js +++ b/assets/js/8b054004.fbb4926b.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1856],{7884:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>a});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"eth namespace",sidebar_label:"eth",sidebar_position:3},h=void 0,x={id:"interacting/json-rpc-ns/eth",title:"eth namespace",description:"eth_blobBaseFee",source:"@site/docs/interacting/json-rpc-ns/eth.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/eth",permalink:"/next/interacting/json-rpc-ns/eth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/eth.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"eth namespace",sidebar_label:"eth",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"debug",permalink:"/next/interacting/json-rpc-ns/debug"},next:{title:"net",permalink:"/next/interacting/json-rpc-ns/net"}},t={},a=[{value:"eth_blobBaseFee",id:"eth_blobbasefee",level:3},{value:"eth_blockNumber",id:"eth_blocknumber",level:3},{value:"eth_call",id:"eth_call",level:3},{value:"eth_chainId",id:"eth_chainid",level:3},{value:"eth_createAccessList",id:"eth_createaccesslist",level:3},{value:"eth_estimateGas",id:"eth_estimategas",level:3},{value:"eth_feeHistory",id:"eth_feehistory",level:3},{value:"eth_gasPrice",id:"eth_gasprice",level:3},{value:"eth_getAccount",id:"eth_getaccount",level:3},{value:"eth_getBalance",id:"eth_getbalance",level:3},{value:"eth_getBlockByHash",id:"eth_getblockbyhash",level:3},{value:"eth_getBlockByNumber",id:"eth_getblockbynumber",level:3},{value:"eth_getBlockReceipts",id:"eth_getblockreceipts",level:3},{value:"eth_getBlockTransactionCountByHash",id:"eth_getblocktransactioncountbyhash",level:3},{value:"eth_getBlockTransactionCountByNumber",id:"eth_getblocktransactioncountbynumber",level:3},{value:"eth_getCode",id:"eth_getcode",level:3},{value:"eth_getFilterChanges",id:"eth_getfilterchanges",level:3},{value:"eth_getFilterLogs",id:"eth_getfilterlogs",level:3},{value:"eth_getLogs",id:"eth_getlogs",level:3},{value:"eth_getProof",id:"eth_getproof",level:3},{value:"eth_getRawTransactionByHash",id:"eth_getrawtransactionbyhash",level:3},{value:"eth_getStorageAt",id:"eth_getstorageat",level:3},{value:"eth_getTransactionByBlockHashAndIndex",id:"eth_gettransactionbyblockhashandindex",level:3},{value:"eth_getTransactionByBlockNumberAndIndex",id:"eth_gettransactionbyblocknumberandindex",level:3},{value:"eth_getTransactionByHash",id:"eth_gettransactionbyhash",level:3},{value:"eth_getTransactionCount",id:"eth_gettransactioncount",level:3},{value:"eth_getTransactionReceipt",id:"eth_gettransactionreceipt",level:3},{value:"eth_getUncleByBlockHashAndIndex",id:"eth_getunclebyblockhashandindex",level:3},{value:"eth_getUncleByBlockNumberAndIndex",id:"eth_getunclebyblocknumberandindex",level:3},{value:"eth_getUncleCountByBlockHash",id:"eth_getunclecountbyblockhash",level:3},{value:"eth_getUncleCountByBlockNumber",id:"eth_getunclecountbyblocknumber",level:3},{value:"eth_newBlockFilter",id:"eth_newblockfilter",level:3},{value:"eth_newFilter",id:"eth_newfilter",level:3},{value:"eth_newPendingTransactionFilter",id:"eth_newpendingtransactionfilter",level:3},{value:"eth_pendingTransactions",id:"eth_pendingtransactions",level:3},{value:"eth_protocolVersion",id:"eth_protocolversion",level:3},{value:"eth_sendRawTransaction",id:"eth_sendrawtransaction",level:3},{value:"eth_sendTransaction",id:"eth_sendtransaction",level:3},{value:"eth_simulateV1",id:"eth_simulatev1",level:3},{value:"eth_subscribe",id:"eth_subscribe",level:3},{value:"Subscription topics",id:"subscription-topics",level:4},{value:"newHeads",id:"newheads",level:5},{value:"logs",id:"logs",level:5},{value:"newPendingTransactions",id:"newpendingtransactions",level:5},{value:"droppedPendingTransactions",id:"droppedpendingtransactions",level:5},{value:"syncing",id:"syncing",level:5},{value:"eth_syncing",id:"eth_syncing",level:3},{value:"eth_uninstallFilter",id:"eth_uninstallfilter",level:3},{value:"eth_unsubscribe",id:"eth_unsubscribe",level:3}];function j(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h3:"h3",h4:"h4",h5:"h5",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"eth_blobbasefee",children:"eth_blobBaseFee"}),"\n",(0,r.jsx)(n.p,{children:"Returns the base fee per blob gas in wei"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blobBaseFee",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_blocknumber",children:"eth_blockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns current block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blockNumber",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_call",children:"eth_call"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_call",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_chainid",children:"eth_chainId"}),"\n",(0,r.jsx)(n.p,{children:"Returns ChainID"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_chainId",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_createaccesslist",children:"eth_createAccessList"}),"\n",(0,r.jsxs)(n.p,{children:["Creates an ",(0,r.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-2930",children:"EIP2930"})," type AccessList for the given transaction"]}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"optimize"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_createAccessList",\n "params": [transactionCall, blockParameter, optimize]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_estimategas",children:"eth_estimateGas"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call and returns gas used (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_estimateGas",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_feehistory",children:"eth_feeHistory"}),"\n",(0,r.jsx)(n.p,{children:"Returns block fee history."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockCount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"newestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"rewardPercentiles"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_feeHistory",\n "params": [blockCount, newestBlock, rewardPercentiles]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerBlobGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oldestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"reward"}),": array of array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gasprice",children:"eth_gasPrice"}),"\n",(0,r.jsx)(n.p,{children:"Returns miner's gas price"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_gasPrice",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getaccount",children:"eth_getAccount"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves Accounts via Address and Blocknumber"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getAccount",\n "params": [accountAddress, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getbalance",children:"eth_getBalance"}),"\n",(0,r.jsx)(n.p,{children:"Returns account balance"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBalance",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbyhash",children:"eth_getBlockByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByHash",\n "params": [blockHash, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbynumber",children:"eth_getBlockByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByNumber",\n "params": [blockParameter, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockreceipts",children:"eth_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbyhash",children:"eth_getBlockTransactionCountByHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbynumber",children:"eth_getBlockTransactionCountByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getcode",children:"eth_getCode"}),"\n",(0,r.jsx)(n.p,{children:"Returns account code at given address and block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getCode",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterchanges",children:"eth_getFilterChanges"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterChanges",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterlogs",children:"eth_getFilterLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterLogs",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getlogs",children:"eth_getLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads logs"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getLogs",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getproof",children:"eth_getProof"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"https://github.com/ethereum/EIPs/issues/1186",children:"https://github.com/ethereum/EIPs/issues/1186"})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"hashRate"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getProof",\n "params": [accountAddress, hashRate, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageProofs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hasValue"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"span"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getrawtransactionbyhash",children:"eth_getRawTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction RLP by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getRawTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getstorageat",children:"eth_getStorageAt"}),"\n",(0,r.jsx)(n.p,{children:"Returns storage data at address. storage_index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getStorageAt",\n "params": [address, positionIndex, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblockhashandindex",children:"eth_getTransactionByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block hash and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockHashAndIndex",\n "params": [blockHash, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblocknumberandindex",children:"eth_getTransactionByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block number and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyhash",children:"eth_getTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactioncount",children:"eth_getTransactionCount"}),"\n",(0,r.jsx)(n.p,{children:"Returns account nonce (number of trnsactions from the account since genesis) at the given block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionCount",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionreceipt",children:"eth_getTransactionReceipt"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction receipt by tx hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionReceipt",\n "params": [txHashData]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblockhashandindex",children:"eth_getUncleByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block hash and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockHashAndIndex",\n "params": [blockHashData, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblocknumberandindex",children:"eth_getUncleByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block number and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblockhash",children:"eth_getUncleCountByBlockHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblocknumber",children:"eth_getUncleCountByBlockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newblockfilter",children:"eth_newBlockFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newBlockFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newfilter",children:"eth_newFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newFilter",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newpendingtransactionfilter",children:"eth_newPendingTransactionFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newPendingTransactionFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_pendingtransactions",children:"eth_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns the pending transactions list"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_pendingTransactions",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_protocolversion",children:"eth_protocolVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns ETH protocol version"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_protocolVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendrawtransaction",children:"eth_sendRawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a raw transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transaction"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendRawTransaction",\n "params": [transaction]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendtransaction",children:"eth_sendTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rpcTx"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendTransaction",\n "params": [rpcTx]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_simulatev1",children:"eth_simulateV1"}),"\n",(0,r.jsx)(n.p,{children:"Executes a simulation across multiple blocks (does not create a transaction or block)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockStateCalls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockOverrides"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobBaseFee"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"feeRecipient"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prevRandao"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"time"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"calls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateOverrides"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"movePrecompileToAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateDiff"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceTransfers"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validation"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_simulateV1",\n "params": [payload, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"calls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"message"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"returnData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_subscribe",children:"eth_subscribe"}),"\n",(0,r.jsx)(n.p,{children:"Starts a subscription to a particular event over WebSockets. A JSON-RPC notification with event payload and subscription id is sent to a client for every event matching the subscription topic."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"subscriptionName"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_subscribe",\n "params": [subscriptionName, args]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": "0x..." // subscription id\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]}),(0,r.jsxs)(c.A,{value:"notif",label:"Notification",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "method": "eth_subscription",\n "params": {\n "subscription": "0x...", // subscription id\n "result": payload\n }\n}\n'})}),(0,r.jsxs)(n.p,{children:["See specific subcription topic below for ",(0,r.jsx)(n.code,{children:"payload"})," details."]})]})]}),"\n",(0,r.jsx)(n.h4,{id:"subscription-topics",children:"Subscription topics"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newheads",children:"newHeads"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming block headers. Fires a notification each time a new header is appended to the chain, including chain reorganizations."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"logs",children:"logs"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to incoming logs filtered by the given options. In case of a chain reorganization, previously sent logs on the old chain will be re-sent with the ",(0,r.jsx)(n.code,{children:"removed"})," field set to ",(0,r.jsx)(n.code,{children:"true"}),"."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newpendingtransactions",children:"newPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming pending transactions. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"droppedpendingtransactions",children:"droppedPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to transactions evicted from the transaction pool. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"syncing",children:"syncing"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to syncing events. Returns ",(0,r.jsx)(n.code,{children:"false"})," (once) if the node is synced or an object with statistics (once) when the node starts syncing."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),":"]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["if synced: ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:["if syncing: ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_syncing",children:"eth_syncing"}),"\n",(0,r.jsx)(n.p,{children:"Returns syncing status"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_syncing",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"syncMode"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_uninstallfilter",children:"eth_uninstallFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_uninstallFilter",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_unsubscribe",children:"eth_unsubscribe"}),"\n",(0,r.jsx)(n.p,{children:"Unsubscribes from a subscription."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subscriptionId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_unsubscribe",\n "params": [subscriptionId]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})," (",(0,r.jsx)(n.code,{children:"true"})," if unsubscribed successfully; otherwise, ",(0,r.jsx)(n.code,{children:"false"}),")"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(j,{...e})}):j(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),t=s(679);function a(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function j(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return a(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=j(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,a]=g({queryString:s,groupId:i}),[m,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,t.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??m;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),a(e),u(e)}),[a,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),t=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},a=e=>{let n=null;switch(e.key){case"Enter":t(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:a,onClick:t,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function k(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:a(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1856],{7884:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>a});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"eth namespace",sidebar_label:"eth",sidebar_position:3},h=void 0,x={id:"interacting/json-rpc-ns/eth",title:"eth namespace",description:"eth_blobBaseFee",source:"@site/docs/interacting/json-rpc-ns/eth.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/eth",permalink:"/next/interacting/json-rpc-ns/eth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/eth.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"eth namespace",sidebar_label:"eth",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"debug",permalink:"/next/interacting/json-rpc-ns/debug"},next:{title:"net",permalink:"/next/interacting/json-rpc-ns/net"}},t={},a=[{value:"eth_blobBaseFee",id:"eth_blobbasefee",level:3},{value:"eth_blockNumber",id:"eth_blocknumber",level:3},{value:"eth_call",id:"eth_call",level:3},{value:"eth_chainId",id:"eth_chainid",level:3},{value:"eth_createAccessList",id:"eth_createaccesslist",level:3},{value:"eth_estimateGas",id:"eth_estimategas",level:3},{value:"eth_feeHistory",id:"eth_feehistory",level:3},{value:"eth_gasPrice",id:"eth_gasprice",level:3},{value:"eth_getAccount",id:"eth_getaccount",level:3},{value:"eth_getBalance",id:"eth_getbalance",level:3},{value:"eth_getBlockByHash",id:"eth_getblockbyhash",level:3},{value:"eth_getBlockByNumber",id:"eth_getblockbynumber",level:3},{value:"eth_getBlockReceipts",id:"eth_getblockreceipts",level:3},{value:"eth_getBlockTransactionCountByHash",id:"eth_getblocktransactioncountbyhash",level:3},{value:"eth_getBlockTransactionCountByNumber",id:"eth_getblocktransactioncountbynumber",level:3},{value:"eth_getCode",id:"eth_getcode",level:3},{value:"eth_getFilterChanges",id:"eth_getfilterchanges",level:3},{value:"eth_getFilterLogs",id:"eth_getfilterlogs",level:3},{value:"eth_getLogs",id:"eth_getlogs",level:3},{value:"eth_getProof",id:"eth_getproof",level:3},{value:"eth_getRawTransactionByHash",id:"eth_getrawtransactionbyhash",level:3},{value:"eth_getStorageAt",id:"eth_getstorageat",level:3},{value:"eth_getTransactionByBlockHashAndIndex",id:"eth_gettransactionbyblockhashandindex",level:3},{value:"eth_getTransactionByBlockNumberAndIndex",id:"eth_gettransactionbyblocknumberandindex",level:3},{value:"eth_getTransactionByHash",id:"eth_gettransactionbyhash",level:3},{value:"eth_getTransactionCount",id:"eth_gettransactioncount",level:3},{value:"eth_getTransactionReceipt",id:"eth_gettransactionreceipt",level:3},{value:"eth_getUncleByBlockHashAndIndex",id:"eth_getunclebyblockhashandindex",level:3},{value:"eth_getUncleByBlockNumberAndIndex",id:"eth_getunclebyblocknumberandindex",level:3},{value:"eth_getUncleCountByBlockHash",id:"eth_getunclecountbyblockhash",level:3},{value:"eth_getUncleCountByBlockNumber",id:"eth_getunclecountbyblocknumber",level:3},{value:"eth_newBlockFilter",id:"eth_newblockfilter",level:3},{value:"eth_newFilter",id:"eth_newfilter",level:3},{value:"eth_newPendingTransactionFilter",id:"eth_newpendingtransactionfilter",level:3},{value:"eth_pendingTransactions",id:"eth_pendingtransactions",level:3},{value:"eth_protocolVersion",id:"eth_protocolversion",level:3},{value:"eth_sendRawTransaction",id:"eth_sendrawtransaction",level:3},{value:"eth_sendTransaction",id:"eth_sendtransaction",level:3},{value:"eth_simulateV1",id:"eth_simulatev1",level:3},{value:"eth_subscribe",id:"eth_subscribe",level:3},{value:"Subscription topics",id:"subscription-topics",level:4},{value:"newHeads",id:"newheads",level:5},{value:"logs",id:"logs",level:5},{value:"newPendingTransactions",id:"newpendingtransactions",level:5},{value:"droppedPendingTransactions",id:"droppedpendingtransactions",level:5},{value:"syncing",id:"syncing",level:5},{value:"eth_syncing",id:"eth_syncing",level:3},{value:"eth_uninstallFilter",id:"eth_uninstallfilter",level:3},{value:"eth_unsubscribe",id:"eth_unsubscribe",level:3}];function j(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h3:"h3",h4:"h4",h5:"h5",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"eth_blobbasefee",children:"eth_blobBaseFee"}),"\n",(0,r.jsx)(n.p,{children:"Returns the base fee per blob gas in wei"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blobBaseFee",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_blocknumber",children:"eth_blockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns current block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blockNumber",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_call",children:"eth_call"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_call",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_chainid",children:"eth_chainId"}),"\n",(0,r.jsx)(n.p,{children:"Returns ChainID"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_chainId",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_createaccesslist",children:"eth_createAccessList"}),"\n",(0,r.jsxs)(n.p,{children:["Creates an ",(0,r.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-2930",children:"EIP2930"})," type AccessList for the given transaction"]}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"optimize"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_createAccessList",\n "params": [transactionCall, blockParameter, optimize]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_estimategas",children:"eth_estimateGas"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call and returns gas used (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_estimateGas",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_feehistory",children:"eth_feeHistory"}),"\n",(0,r.jsx)(n.p,{children:"Returns block fee history."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockCount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"newestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"rewardPercentiles"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_feeHistory",\n "params": [blockCount, newestBlock, rewardPercentiles]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerBlobGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oldestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"reward"}),": array of array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gasprice",children:"eth_gasPrice"}),"\n",(0,r.jsx)(n.p,{children:"Returns miner's gas price"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_gasPrice",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getaccount",children:"eth_getAccount"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves Accounts via Address and Blocknumber"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getAccount",\n "params": [accountAddress, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getbalance",children:"eth_getBalance"}),"\n",(0,r.jsx)(n.p,{children:"Returns account balance"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBalance",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbyhash",children:"eth_getBlockByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByHash",\n "params": [blockHash, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbynumber",children:"eth_getBlockByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByNumber",\n "params": [blockParameter, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockreceipts",children:"eth_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbyhash",children:"eth_getBlockTransactionCountByHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbynumber",children:"eth_getBlockTransactionCountByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getcode",children:"eth_getCode"}),"\n",(0,r.jsx)(n.p,{children:"Returns account code at given address and block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getCode",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterchanges",children:"eth_getFilterChanges"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterChanges",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterlogs",children:"eth_getFilterLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterLogs",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getlogs",children:"eth_getLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads logs"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getLogs",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getproof",children:"eth_getProof"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"https://github.com/ethereum/EIPs/issues/1186",children:"https://github.com/ethereum/EIPs/issues/1186"})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"hashRate"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getProof",\n "params": [accountAddress, hashRate, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageProofs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hasValue"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"span"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getrawtransactionbyhash",children:"eth_getRawTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction RLP by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getRawTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getstorageat",children:"eth_getStorageAt"}),"\n",(0,r.jsx)(n.p,{children:"Returns storage data at address. storage_index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getStorageAt",\n "params": [address, positionIndex, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblockhashandindex",children:"eth_getTransactionByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block hash and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockHashAndIndex",\n "params": [blockHash, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblocknumberandindex",children:"eth_getTransactionByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block number and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyhash",children:"eth_getTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactioncount",children:"eth_getTransactionCount"}),"\n",(0,r.jsx)(n.p,{children:"Returns account nonce (number of trnsactions from the account since genesis) at the given block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionCount",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionreceipt",children:"eth_getTransactionReceipt"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction receipt by tx hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionReceipt",\n "params": [txHashData]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblockhashandindex",children:"eth_getUncleByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block hash and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockHashAndIndex",\n "params": [blockHashData, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblocknumberandindex",children:"eth_getUncleByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block number and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblockhash",children:"eth_getUncleCountByBlockHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblocknumber",children:"eth_getUncleCountByBlockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newblockfilter",children:"eth_newBlockFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newBlockFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newfilter",children:"eth_newFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newFilter",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newpendingtransactionfilter",children:"eth_newPendingTransactionFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newPendingTransactionFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_pendingtransactions",children:"eth_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns the pending transactions list"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_pendingTransactions",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_protocolversion",children:"eth_protocolVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns ETH protocol version"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_protocolVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendrawtransaction",children:"eth_sendRawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a raw transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transaction"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendRawTransaction",\n "params": [transaction]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendtransaction",children:"eth_sendTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rpcTx"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendTransaction",\n "params": [rpcTx]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_simulatev1",children:"eth_simulateV1"}),"\n",(0,r.jsx)(n.p,{children:"Executes a simulation across multiple blocks (does not create a transaction or block)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockStateCalls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockOverrides"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobBaseFee"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"feeRecipient"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prevRandao"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"time"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"calls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateOverrides"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"movePrecompileToAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateDiff"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceTransfers"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validation"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_simulateV1",\n "params": [payload, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"calls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"message"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"returnData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_subscribe",children:"eth_subscribe"}),"\n",(0,r.jsx)(n.p,{children:"Starts a subscription to a particular event over WebSockets. A JSON-RPC notification with event payload and subscription id is sent to a client for every event matching the subscription topic."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"subscriptionName"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_subscribe",\n "params": [subscriptionName, args]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": "0x..." // subscription id\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]}),(0,r.jsxs)(c.A,{value:"notif",label:"Notification",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "method": "eth_subscription",\n "params": {\n "subscription": "0x...", // subscription id\n "result": payload\n }\n}\n'})}),(0,r.jsxs)(n.p,{children:["See specific subcription topic below for ",(0,r.jsx)(n.code,{children:"payload"})," details."]})]})]}),"\n",(0,r.jsx)(n.h4,{id:"subscription-topics",children:"Subscription topics"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newheads",children:"newHeads"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming block headers. Fires a notification each time a new header is appended to the chain, including chain reorganizations."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"logs",children:"logs"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to incoming logs filtered by the given options. In case of a chain reorganization, previously sent logs on the old chain will be re-sent with the ",(0,r.jsx)(n.code,{children:"removed"})," field set to ",(0,r.jsx)(n.code,{children:"true"}),"."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newpendingtransactions",children:"newPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming pending transactions. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"droppedpendingtransactions",children:"droppedPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to transactions evicted from the transaction pool. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"syncing",children:"syncing"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to syncing events. Returns ",(0,r.jsx)(n.code,{children:"false"})," (once) if the node is synced or an object with statistics (once) when the node starts syncing."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),":"]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["if synced: ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:["if syncing: ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_syncing",children:"eth_syncing"}),"\n",(0,r.jsx)(n.p,{children:"Returns syncing status"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_syncing",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"syncMode"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_uninstallfilter",children:"eth_uninstallFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_uninstallFilter",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_unsubscribe",children:"eth_unsubscribe"}),"\n",(0,r.jsx)(n.p,{children:"Unsubscribes from a subscription."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subscriptionId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_unsubscribe",\n "params": [subscriptionId]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})," (",(0,r.jsx)(n.code,{children:"true"})," if unsubscribed successfully; otherwise, ",(0,r.jsx)(n.code,{children:"false"}),")"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(j,{...e})}):j(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),t=s(679);function a(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function j(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return a(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=j(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,a]=g({queryString:s,groupId:i}),[m,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,t.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??m;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),a(e),u(e)}),[a,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),t=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},a=e=>{let n=null;switch(e.key){case"Enter":t(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:a,onClick:t,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function k(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:a(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8c8ddd82.05e960f6.js b/assets/js/8c8ddd82.bffb3419.js similarity index 99% rename from assets/js/8c8ddd82.05e960f6.js rename to assets/js/8c8ddd82.bffb3419.js index 2e8fed47e..9f7ad16da 100644 --- a/assets/js/8c8ddd82.05e960f6.js +++ b/assets/js/8c8ddd82.bffb3419.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1626],{5846:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});var i=s(4848),r=s(8453);const o={title:"Logs",sidebar_position:4},d=void 0,t={id:"fundamentals/logs",title:"Logs",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.29.0/fundamentals/logs.md",sourceDirName:"fundamentals",slug:"/fundamentals/logs",permalink:"/fundamentals/logs",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/logs.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"Logs",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Security",permalink:"/fundamentals/security"},next:{title:"Database",permalink:"/fundamentals/database"}},l={},c=[{value:"Log config file location",id:"log-config-file-location",level:2},{value:"Log config file syntax",id:"log-config-file-syntax",level:2},{value:"Config or CLI log rules",id:"config-or-cli-log-rules",level:2},{value:"Global logging override",id:"global-logging-override",level:2},{value:"JSON RPC logging level",id:"json-rpc-logging-level",level:2},{value:"Enterprise Logging",id:"enterprise-logging",level:2},{value:"Explaining Nethermind logs",id:"explaining-nethermind-logs",level:2}];function a(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-location",children:"Log config file location"}),"\n",(0,i.jsx)(n.p,{children:"Logging in Nethermind is done via NLog library that can be configured by editing the NLog.config file."}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Environment Type"}),(0,i.jsx)(n.th,{children:"NLog.config location"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Debug mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Debug\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Release mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Release\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"PPA"}),(0,i.jsx)(n.td,{children:"/usr/share/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Docker"}),(0,i.jsx)(n.td,{children:"/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub releases page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"dAppNode"}),(0,i.jsx)(n.td,{children:"? [to be documented]"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-syntax",children:"Log config file syntax"}),"\n",(0,i.jsxs)(n.p,{children:["Detailed NLog configuration options can be found\nhere: ",(0,i.jsx)(n.a,{href:"https://nlog-project.org/config/",children:"https://nlog-project.org/config/"})]}),"\n",(0,i.jsx)(n.h2,{id:"config-or-cli-log-rules",children:"Config or CLI log rules"}),"\n",(0,i.jsx)(n.p,{children:"Simple logging rules can be added through configuration file or command line argument."}),"\n",(0,i.jsxs)(n.p,{children:["For example this would add ",(0,i.jsx)(n.code,{children:"Trace"})," level logs to any logger under ",(0,i.jsx)(n.code,{children:"Synchronization"})," module and ",(0,i.jsx)(n.code,{children:"Debug"})," level logs\nfor ",(0,i.jsx)(n.code,{children:"BlockTree"})," from ",(0,i.jsx)(n.code,{children:"Blockchain"})," module:",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.code,{children:"--Init.LogRules Synchronization.*:Trace;Blockchain.BlockTree:Debug"})]}),"\n",(0,i.jsx)(n.h2,{id:"global-logging-override",children:"Global logging override"}),"\n",(0,i.jsx)(n.p,{children:"Additionally there are global logging override that you can use temporarily:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Command line override"}),(0,i.jsx)(n.th,{children:"Log level"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log TRACE"}),(0,i.jsx)(n.td,{children:"TRACE"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log DEBUG"}),(0,i.jsx)(n.td,{children:"DEBUG"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log INFO"}),(0,i.jsx)(n.td,{children:"INFO"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log WARN"}),(0,i.jsx)(n.td,{children:"WARN"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log ERROR"}),(0,i.jsx)(n.td,{children:"ERROR"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"json-rpc-logging-level",children:"JSON RPC logging level"}),"\n",(0,i.jsx)(n.p,{children:"This can be done by including these lines in the logging configuration file:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\n\n\n'})}),"\n",(0,i.jsx)(n.h2,{id:"enterprise-logging",children:"Enterprise Logging"}),"\n",(0,i.jsxs)(n.p,{children:["See how to configure Seq ",(0,i.jsx)(n.a,{href:"https://docs.nethermind.io/nethermind/enterprise/seq",children:"here"})]}),"\n",(0,i.jsx)(n.h2,{id:"explaining-nethermind-logs",children:"Explaining Nethermind logs"}),"\n",(0,i.jsxs)(n.p,{children:["You can check the supported operating systems, architectures and hardware requirements\nhere: ",(0,i.jsx)(n.a,{href:"/get-started/system-requirements",children:"system-requirements.md"})]}),"\n",(0,i.jsxs)(n.p,{children:["After the node starts, you will see some initial info about the node and then the sync will start. G\xf6rli fast sync uses\na ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync mode initially. The ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync picks some known ",(0,i.jsx)(n.code,{children:"pivot block"})," from the past and\ndownloads ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"}),", and ",(0,i.jsx)(n.code,{children:"receipts"})," downwards all the way to ",(0,i.jsx)(n.code,{children:"genesis block"}),". All blocks from 0 to\nthe ",(0,i.jsx)(n.code,{children:"pivot block"})," are showed as ",(0,i.jsx)(n.code,{children:"Old Headers"})," in the ",(0,i.jsx)(n.code,{children:"fast blocks sync"})," logs. The console display shows the number\ngrowing from 0 to pivot, but this is just to make the display more user-friendly."]}),"\n",(0,i.jsx)(n.p,{children:"You will see some information about the sync progress, like below:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Shows the number of already downloaded ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," under the name ",(0,i.jsx)(n.code,{children:"Downloaded"})," out of all to\nbe downloaded in the fast blocks stage."]}),"\n",(0,i.jsxs)(n.li,{children:["Shows the current queue of already downloaded ",(0,i.jsx)(n.code,{children:"blocks"}),", ",(0,i.jsx)(n.code,{children:"headers"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," waiting for being saved to the\ndatabase."]}),"\n",(0,i.jsx)(n.li,{children:"Shows the current download speed (blocks per second - bps)."}),"\n",(0,i.jsx)(n.li,{children:"Shows the average download speed (blocks per second - bps)."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast blocks sync logs",src:s(8973).A+"",width:"1219",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["When the fast blocks stage finishes, there will be some period of downloading blocks between the ",(0,i.jsx)(n.code,{children:"pivot"})," and\nthe",(0,i.jsx)(n.code,{children:"latest blocks"})," which will have some additional info:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Shows the last entry from the fast blocks stage."}),"\n",(0,i.jsx)(n.li,{children:"Shows the mode transition moment."}),"\n",(0,i.jsxs)(n.li,{children:["Displays the speed (in blocks per second) of all ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," at the same time."]}),"\n",(0,i.jsx)(n.li,{children:"Additional info will appear every 30000 blocks with information about the G\xf6rli epoch being stored."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli fast sync logs",src:s(245).A+"",width:"1528",height:"643"})}),"\n",(0,i.jsxs)(n.p,{children:["After the ",(0,i.jsx)(n.code,{children:"fast sync"})," part finished, the node will transition to the ",(0,i.jsx)(n.code,{children:"state sync stage"})," when the ",(0,i.jsx)(n.code,{children:"state trie"})," is being\ndownloaded. Much information is displayed about the progress, as this process may take a long time on mainnet (a few\nhours)."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Total elapsed time in ",(0,i.jsx)(n.code,{children:"state sync"})," is displayed."]}),"\n",(0,i.jsx)(n.li,{children:"The total percentage of downloaded DB size is displayed (on mainnet the sync finishes around 34GB in March 2020, on\nG\xf6rli around 800MB)."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"branches"})," stands for the percentage of downloaded branches."]}),"\n",(0,i.jsx)(n.li,{children:"Download speed in kilobytes per second is displayed."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"accounts"})," stands for the number of accounts data downloaded already."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"nodes"})," stands for the number of ",(0,i.jsx)(n.code,{children:"Patricia trie nodes"})," downloaded by the sync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"diagnostic"})," shows the time spent in the DB write / read access. The higher the value, the worse. It may get much\nworse if you restart the node during the sync process, as we need to recreate some caches then by reading data from\nthe DB."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli state sync logs",src:s(9378).A+"",width:"1528",height:"742"})}),"\n",(0,i.jsxs)(n.p,{children:["When the state sync is nearing completion, you may see a series of ",(0,i.jsx)(n.code,{children:"branch sync"})," information reloading many times from\n0% to nearly 100%. This is the node trying to retrieve the few remaining state nodes and progressing with the head block\nrapidly:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli branch sync logs",src:s(1548).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["At some point, the entire state is downloaded and the node enters the ",(0,i.jsx)(n.code,{children:"full sync"})," mode and will allow you to issue CLI /\nWeb3 queries and send / receive transactions\ud83e\udd73"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.code,{children:"root"})," is saved at the moment when the entire ",(0,i.jsx)(n.code,{children:"Patricia trie"})," is downloaded."]}),"\n",(0,i.jsxs)(n.li,{children:["We also clearly state that the node transitions to the ",(0,i.jsx)(n.code,{children:"full sync"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["When you see the block being processed, then you are in the ",(0,i.jsx)(n.code,{children:"full sync"})," and the newly arrived block is being\ncalculated."]}),"\n",(0,i.jsx)(n.li,{children:"Every two minutes you will see a summary of connected peers with their client version, IP address, highest synced\nblock, and data download speeds."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli full sync logs",src:s(3035).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsx)(n.p,{children:"Also, every now and then, a peer report will appear like below:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(4922).A+"",width:"2560",height:"1337"})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["First bracket is for Allocated contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsxs)(n.li,{children:["Second bracket is for Sleeping contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsx)(n.li,{children:"Third bracket contains Peer Info."}),"\n",(0,i.jsxs)(n.li,{children:["Fourth bracket is for Speeds as Follows:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Latency"}),"\n",(0,i.jsx)(n.li,{children:"Headers Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Bodies Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Receipts Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Node Data Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Snap Ranges Transfer"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},4922:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png"},1548:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png"},245:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png"},9378:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png"},3035:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png"},8973:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png"},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>t});var i=s(6540);const r={},o=i.createContext(r);function d(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1626],{5846:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});var i=s(4848),r=s(8453);const o={title:"Logs",sidebar_position:4},d=void 0,t={id:"fundamentals/logs",title:"Logs",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.29.0/fundamentals/logs.md",sourceDirName:"fundamentals",slug:"/fundamentals/logs",permalink:"/fundamentals/logs",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/logs.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"Logs",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Security",permalink:"/fundamentals/security"},next:{title:"Database",permalink:"/fundamentals/database"}},l={},c=[{value:"Log config file location",id:"log-config-file-location",level:2},{value:"Log config file syntax",id:"log-config-file-syntax",level:2},{value:"Config or CLI log rules",id:"config-or-cli-log-rules",level:2},{value:"Global logging override",id:"global-logging-override",level:2},{value:"JSON RPC logging level",id:"json-rpc-logging-level",level:2},{value:"Enterprise Logging",id:"enterprise-logging",level:2},{value:"Explaining Nethermind logs",id:"explaining-nethermind-logs",level:2}];function a(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-location",children:"Log config file location"}),"\n",(0,i.jsx)(n.p,{children:"Logging in Nethermind is done via NLog library that can be configured by editing the NLog.config file."}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Environment Type"}),(0,i.jsx)(n.th,{children:"NLog.config location"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Debug mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Debug\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Release mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Release\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"PPA"}),(0,i.jsx)(n.td,{children:"/usr/share/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Docker"}),(0,i.jsx)(n.td,{children:"/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub releases page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"dAppNode"}),(0,i.jsx)(n.td,{children:"? [to be documented]"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-syntax",children:"Log config file syntax"}),"\n",(0,i.jsxs)(n.p,{children:["Detailed NLog configuration options can be found\nhere: ",(0,i.jsx)(n.a,{href:"https://nlog-project.org/config/",children:"https://nlog-project.org/config/"})]}),"\n",(0,i.jsx)(n.h2,{id:"config-or-cli-log-rules",children:"Config or CLI log rules"}),"\n",(0,i.jsx)(n.p,{children:"Simple logging rules can be added through configuration file or command line argument."}),"\n",(0,i.jsxs)(n.p,{children:["For example this would add ",(0,i.jsx)(n.code,{children:"Trace"})," level logs to any logger under ",(0,i.jsx)(n.code,{children:"Synchronization"})," module and ",(0,i.jsx)(n.code,{children:"Debug"})," level logs\nfor ",(0,i.jsx)(n.code,{children:"BlockTree"})," from ",(0,i.jsx)(n.code,{children:"Blockchain"})," module:",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.code,{children:"--Init.LogRules Synchronization.*:Trace;Blockchain.BlockTree:Debug"})]}),"\n",(0,i.jsx)(n.h2,{id:"global-logging-override",children:"Global logging override"}),"\n",(0,i.jsx)(n.p,{children:"Additionally there are global logging override that you can use temporarily:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Command line override"}),(0,i.jsx)(n.th,{children:"Log level"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log TRACE"}),(0,i.jsx)(n.td,{children:"TRACE"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log DEBUG"}),(0,i.jsx)(n.td,{children:"DEBUG"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log INFO"}),(0,i.jsx)(n.td,{children:"INFO"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log WARN"}),(0,i.jsx)(n.td,{children:"WARN"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log ERROR"}),(0,i.jsx)(n.td,{children:"ERROR"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"json-rpc-logging-level",children:"JSON RPC logging level"}),"\n",(0,i.jsx)(n.p,{children:"This can be done by including these lines in the logging configuration file:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\n\n\n'})}),"\n",(0,i.jsx)(n.h2,{id:"enterprise-logging",children:"Enterprise Logging"}),"\n",(0,i.jsxs)(n.p,{children:["See how to configure Seq ",(0,i.jsx)(n.a,{href:"https://docs.nethermind.io/nethermind/enterprise/seq",children:"here"})]}),"\n",(0,i.jsx)(n.h2,{id:"explaining-nethermind-logs",children:"Explaining Nethermind logs"}),"\n",(0,i.jsxs)(n.p,{children:["You can check the supported operating systems, architectures and hardware requirements\nhere: ",(0,i.jsx)(n.a,{href:"/get-started/system-requirements",children:"system-requirements.md"})]}),"\n",(0,i.jsxs)(n.p,{children:["After the node starts, you will see some initial info about the node and then the sync will start. G\xf6rli fast sync uses\na ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync mode initially. The ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync picks some known ",(0,i.jsx)(n.code,{children:"pivot block"})," from the past and\ndownloads ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"}),", and ",(0,i.jsx)(n.code,{children:"receipts"})," downwards all the way to ",(0,i.jsx)(n.code,{children:"genesis block"}),". All blocks from 0 to\nthe ",(0,i.jsx)(n.code,{children:"pivot block"})," are showed as ",(0,i.jsx)(n.code,{children:"Old Headers"})," in the ",(0,i.jsx)(n.code,{children:"fast blocks sync"})," logs. The console display shows the number\ngrowing from 0 to pivot, but this is just to make the display more user-friendly."]}),"\n",(0,i.jsx)(n.p,{children:"You will see some information about the sync progress, like below:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Shows the number of already downloaded ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," under the name ",(0,i.jsx)(n.code,{children:"Downloaded"})," out of all to\nbe downloaded in the fast blocks stage."]}),"\n",(0,i.jsxs)(n.li,{children:["Shows the current queue of already downloaded ",(0,i.jsx)(n.code,{children:"blocks"}),", ",(0,i.jsx)(n.code,{children:"headers"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," waiting for being saved to the\ndatabase."]}),"\n",(0,i.jsx)(n.li,{children:"Shows the current download speed (blocks per second - bps)."}),"\n",(0,i.jsx)(n.li,{children:"Shows the average download speed (blocks per second - bps)."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast blocks sync logs",src:s(8973).A+"",width:"1219",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["When the fast blocks stage finishes, there will be some period of downloading blocks between the ",(0,i.jsx)(n.code,{children:"pivot"})," and\nthe",(0,i.jsx)(n.code,{children:"latest blocks"})," which will have some additional info:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Shows the last entry from the fast blocks stage."}),"\n",(0,i.jsx)(n.li,{children:"Shows the mode transition moment."}),"\n",(0,i.jsxs)(n.li,{children:["Displays the speed (in blocks per second) of all ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," at the same time."]}),"\n",(0,i.jsx)(n.li,{children:"Additional info will appear every 30000 blocks with information about the G\xf6rli epoch being stored."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli fast sync logs",src:s(245).A+"",width:"1528",height:"643"})}),"\n",(0,i.jsxs)(n.p,{children:["After the ",(0,i.jsx)(n.code,{children:"fast sync"})," part finished, the node will transition to the ",(0,i.jsx)(n.code,{children:"state sync stage"})," when the ",(0,i.jsx)(n.code,{children:"state trie"})," is being\ndownloaded. Much information is displayed about the progress, as this process may take a long time on mainnet (a few\nhours)."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Total elapsed time in ",(0,i.jsx)(n.code,{children:"state sync"})," is displayed."]}),"\n",(0,i.jsx)(n.li,{children:"The total percentage of downloaded DB size is displayed (on mainnet the sync finishes around 34GB in March 2020, on\nG\xf6rli around 800MB)."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"branches"})," stands for the percentage of downloaded branches."]}),"\n",(0,i.jsx)(n.li,{children:"Download speed in kilobytes per second is displayed."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"accounts"})," stands for the number of accounts data downloaded already."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"nodes"})," stands for the number of ",(0,i.jsx)(n.code,{children:"Patricia trie nodes"})," downloaded by the sync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"diagnostic"})," shows the time spent in the DB write / read access. The higher the value, the worse. It may get much\nworse if you restart the node during the sync process, as we need to recreate some caches then by reading data from\nthe DB."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli state sync logs",src:s(9378).A+"",width:"1528",height:"742"})}),"\n",(0,i.jsxs)(n.p,{children:["When the state sync is nearing completion, you may see a series of ",(0,i.jsx)(n.code,{children:"branch sync"})," information reloading many times from\n0% to nearly 100%. This is the node trying to retrieve the few remaining state nodes and progressing with the head block\nrapidly:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli branch sync logs",src:s(1548).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["At some point, the entire state is downloaded and the node enters the ",(0,i.jsx)(n.code,{children:"full sync"})," mode and will allow you to issue CLI /\nWeb3 queries and send / receive transactions\ud83e\udd73"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.code,{children:"root"})," is saved at the moment when the entire ",(0,i.jsx)(n.code,{children:"Patricia trie"})," is downloaded."]}),"\n",(0,i.jsxs)(n.li,{children:["We also clearly state that the node transitions to the ",(0,i.jsx)(n.code,{children:"full sync"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["When you see the block being processed, then you are in the ",(0,i.jsx)(n.code,{children:"full sync"})," and the newly arrived block is being\ncalculated."]}),"\n",(0,i.jsx)(n.li,{children:"Every two minutes you will see a summary of connected peers with their client version, IP address, highest synced\nblock, and data download speeds."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli full sync logs",src:s(3035).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsx)(n.p,{children:"Also, every now and then, a peer report will appear like below:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(4922).A+"",width:"2560",height:"1337"})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["First bracket is for Allocated contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsxs)(n.li,{children:["Second bracket is for Sleeping contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsx)(n.li,{children:"Third bracket contains Peer Info."}),"\n",(0,i.jsxs)(n.li,{children:["Fourth bracket is for Speeds as Follows:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Latency"}),"\n",(0,i.jsx)(n.li,{children:"Headers Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Bodies Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Receipts Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Node Data Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Snap Ranges Transfer"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},4922:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png"},1548:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png"},245:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png"},9378:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png"},3035:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png"},8973:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png"},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>t});var i=s(6540);const r={},o=i.createContext(r);function d(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8cd58c6d.fcb2042d.js b/assets/js/8cd58c6d.e53c4def.js similarity index 99% rename from assets/js/8cd58c6d.fcb2042d.js rename to assets/js/8cd58c6d.e53c4def.js index 2874eecf6..923247424 100644 --- a/assets/js/8cd58c6d.fcb2042d.js +++ b/assets/js/8cd58c6d.e53c4def.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[704],{1197:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=n(4848),o=n(8453);const r={title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},i=void 0,a={id:"fundamentals/private-networks",title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",source:"@site/versioned_docs/version-1.27.0/fundamentals/private-networks.md",sourceDirName:"fundamentals",slug:"/fundamentals/private-networks",permalink:"/1.27.0/fundamentals/private-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/private-networks.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Performance tuning",permalink:"/1.27.0/fundamentals/performance-tuning"},next:{title:"JSON-RPC server",permalink:"/1.27.0/interacting/json-rpc-server"}},c={},d=[{value:"Step 1: Prerequisites",id:"step-1-prerequisites",level:2},{value:"Step 2: Configure your network",id:"step-2-configure-your-network",level:2},{value:"Step 3: Deploy",id:"step-3-deploy",level:2},{value:"Step 4: Optional workflows",id:"step-4-optional-workflows",level:2},{value:"Simulating MEV workflows with mev-boost",id:"simulating-mev-workflows-with-mev-boost",level:3},{value:"Observability tools",id:"observability-tools",level:3},{value:"Deploying on Kubernetes",id:"deploying-on-kubernetes",level:3},{value:"Questions and feedback",id:"questions-and-feedback",level:2}];function l(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["This guide will walk you through using ",(0,s.jsxs)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:["Kurtosis ",(0,s.jsx)(t.code,{children:"ethereum-package"})]})," to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure to simulate MEV workflows."]}),"\n",(0,s.jsx)(t.h2,{id:"step-1-prerequisites",children:"Step 1: Prerequisites"}),"\n",(0,s.jsxs)(t.p,{children:["Before you begin, ensure you have ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/install",children:"Kurtosis CLI"})," and ",(0,s.jsx)(t.a,{href:"https://docs.docker.com/get-docker",children:"Docker"})," installed. The ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:(0,s.jsx)(t.code,{children:"ethereum-package"})})," is a Kurtosis environment definition known as a ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/packages",children:"package"}),". For more info about Kurtosis, see the ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com",children:"Kurtosis docs"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-2-configure-your-network",children:"Step 2: Configure your network"}),"\n",(0,s.jsxs)(t.p,{children:["Next, in your home directory, create a file with the name ",(0,s.jsx)(t.code,{children:"network_params.json"})," and populate it with the following contents:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-json",metastring:'title="network_params.json"',children:'{\n "participants": [\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lighthouse",\n "cl_client_image": "sigp/lighthouse:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "teku",\n "cl_client_image": "consensys/teku:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lodestar",\n "cl_client_image": "chainsafe/lodestar:next",\n "count": 1\n }\n ],\n "mev_type": "None",\n "launch_additional_services": false\n}\n'})}),"\n",(0,s.jsxs)(t.p,{children:["As you can see above, you have effectively created a network configuration file that Kurtosis will use to pass in the necessary parameters at runtime for your network. Notice that the ",(0,s.jsx)(t.code,{children:"participant"})," key describes the execution and consensus client pairing desired for each full node and how many nodes of that type to instantiate."]}),"\n",(0,s.jsxs)(t.p,{children:["There are many other configurations and flags you can use, including metrics and observability tools (e.g., Grafana, Prometheus, etc). For all supported options, see the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package#configuration",children:"configuration"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-3-deploy",children:"Step 3: Deploy"}),"\n",(0,s.jsxs)(t.p,{children:["Finally, once you have saved the ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, it is time to deploy the private net:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'kurtosis run github.com/ethpandaops/ethereum-package "$(cat ~/network_params.json)"\n'})}),"\n",(0,s.jsxs)(t.p,{children:["Kurtosis will use the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," environment definition and your custom network configuration (defined in ",(0,s.jsx)(t.code,{children:"network_params.json"}),") to spin up your network. Kurtosis will first spin up an ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"})," (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 and used to start up the private testnet."]}),"\n",(0,s.jsx)(t.p,{children:"Here is a sample output:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{children:"INFO[2023-09-01T16:10:45-04:00] ====================================================\nINFO[2023-09-01T16:10:45-04:00] || Created enclave: timid-knoll ||\nINFO[2023-09-01T16:10:45-04:00] ====================================================\nName: timid-knoll\nUUID: 939dfb5d59b0\nStatus: RUNNING\nCreation Time: Fri, 01 Sep 2023 16:08:57 EDT\n\n========================================= Files Artifacts =========================================\nUUID Name\na876b06035b7 1-lighthouse-nethermind-0-63\n87955ef69845 2-teku-nethermind-64-127\n4f77377da494 3-lodestar-nethermind-128-191\n9734313101e3 cl-genesis-data\n4164ed5c594c el-genesis-data\na49a3d2774b5 genesis-generation-config-cl\n16fcc4f96236 genesis-generation-config-el\n5fc72346f646 geth-prefunded-keys\n96ae153a0b51 prysm-password\n\n========================================== User Services ==========================================\nUUID Name Ports Status\nf369802ad2ae cl-1-lighthouse-nethermind http: 4000/tcp -> http://127.0.0.1:49894 RUNNING\n metrics: 5054/tcp -> http://127.0.0.1:49892\n tcp-discovery: 9000/tcp -> 127.0.0.1:49893\n udp-discovery: 9000/udp -> 127.0.0.1:64949\n5e14eb26ef45 cl-1-lighthouse-nethermind-validator http: 5042/tcp -> 127.0.0.1:49895 RUNNING\n metrics: 5064/tcp -> http://127.0.0.1:49896\nfed533d0e143 cl-2-teku-nethermind http: 4000/tcp -> 127.0.0.1:49899 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49897\n tcp-discovery: 9000/tcp -> 127.0.0.1:49898\n udp-discovery: 9000/udp -> 127.0.0.1:55521\n69cd832de246 cl-3-lodestar-nethermind http: 4000/tcp -> 127.0.0.1:49903 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49901\n tcp-discovery: 9000/tcp -> 127.0.0.1:49902\n udp-discovery: 9000/udp -> 127.0.0.1:50507\n75e3eec0c7d1 cl-3-lodestar-nethermind-validator metrics: 8008/tcp -> 127.0.0.1:49904 RUNNING\ne10c3f07e0e0 el-1-nethermind-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:49872 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49870\n tcp-discovery: 30303/tcp -> 127.0.0.1:49869\n udp-discovery: 30303/udp -> 127.0.0.1:64508\n ws: 8546/tcp -> 127.0.0.1:49871\nc6a28d3136fe el-2-nethermind-teku engine-rpc: 8551/tcp -> 127.0.0.1:49873 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49875\n tcp-discovery: 30303/tcp -> 127.0.0.1:49874\n udp-discovery: 30303/udp -> 127.0.0.1:52495\n ws: 8546/tcp -> 127.0.0.1:49876\n2fae3b3c41d3 el-3-nethermind-lodestar engine-rpc: 8551/tcp -> 127.0.0.1:49890 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49888\n tcp-discovery: 30303/tcp -> 127.0.0.1:49891\n udp-discovery: 30303/udp -> 127.0.0.1:62119\n ws: 8546/tcp -> 127.0.0.1:49889\n403cafe8416e prelaunch-data-generator-cl-genesis-data RUNNING\nebea71008cf4 prelaunch-data-generator-el-genesis-data RUNNING\n"})}),"\n",(0,s.jsx)(t.p,{children:"And that is it! You now have a 3-node, private Ethereum devnet with Nethermind/Lodestar, Nethermind/Teku, and Nethermind/Lighthouse execution and consensus client combinations."}),"\n",(0,s.jsxs)(t.p,{children:["Notice how, at the end, Kurtosis will print out the contents of your enclave, which includes both the various ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/files-artifacts",children:"files artifacts"})," and services that form your network. Kurtosis also maps the container ports to ephemeral local ports on your machine."]}),"\n",(0,s.jsxs)(t.p,{children:["Genesis data was generated using this ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-genesis-generator",children:"genesis-generator"})," to bootstrap the execution and consensus 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 ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"Kurtosis packages are modular, reproducible, and will work over Docker or Kubernetes. Read on to learn about additional services and configurations you may want to add to your private network."}),"\n",(0,s.jsx)(t.h2,{id:"step-4-optional-workflows",children:"Step 4: Optional workflows"}),"\n",(0,s.jsx)(t.p,{children:"This section briefly covers some optional configurations for your private devnet that are commonly used for validating and testing node-level behavior."}),"\n",(0,s.jsxs)(t.h3,{id:"simulating-mev-workflows-with-mev-boost",children:["Simulating MEV workflows with ",(0,s.jsx)(t.code,{children:"mev-boost"})]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," can simulate out-of-protocol Proposer Builder Separation (PBS) workflows using Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure. With a single flag, you can configure your network's validators to be instantiated with ",(0,s.jsx)(t.code,{children:"mev-boost"})," and be registered with a relayer to receive payloads from builders."]}),"\n",(0,s.jsxs)(t.p,{children:["To enable this in your ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, set ",(0,s.jsx)(t.code,{children:'"mev_type":'})," to ",(0,s.jsx)(t.code,{children:'"full"'})," or ",(0,s.jsx)(t.code,{children:'"mock"'}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["To learn more about how the ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure works with your private network, check out ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/how-to-full-mev-with-ethereum-package",children:"this guide"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"observability-tools",children:"Observability tools"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," comes out of the box with a few observability tools, including:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"A Grafana and Prometheus instance"}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/dapplion/beacon-metrics-gazer",children:"beacon metrics gazer service"})," to collect network-wide participation metrics"]}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/ethDreamer/json_rpc_snoop",children:"JSON-RPC Snooper"})," to log responses & requests between the execution engine API and the consensus client"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["To add your own custom Grafana dashboard template, fork the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," repository and add your configuration ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package/tree/main/static_files/grafana-config/dashboards",children:"here"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"deploying-on-kubernetes",children:"Deploying on Kubernetes"}),"\n",(0,s.jsxs)(t.p,{children:["As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," on Kubernetes, see ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/k8s",children:"Running Kurtosis in Kubernetes"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"questions-and-feedback",children:"Questions and feedback"}),"\n",(0,s.jsxs)(t.p,{children:["If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:"GitHub"})," or ",(0,s.jsx)(t.a,{href:"https://discord.gg/jJFG7XBqcY",children:"Discord"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[704],{1197:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=n(4848),o=n(8453);const r={title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},i=void 0,a={id:"fundamentals/private-networks",title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",source:"@site/versioned_docs/version-1.27.0/fundamentals/private-networks.md",sourceDirName:"fundamentals",slug:"/fundamentals/private-networks",permalink:"/1.27.0/fundamentals/private-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/private-networks.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Performance tuning",permalink:"/1.27.0/fundamentals/performance-tuning"},next:{title:"JSON-RPC server",permalink:"/1.27.0/interacting/json-rpc-server"}},c={},d=[{value:"Step 1: Prerequisites",id:"step-1-prerequisites",level:2},{value:"Step 2: Configure your network",id:"step-2-configure-your-network",level:2},{value:"Step 3: Deploy",id:"step-3-deploy",level:2},{value:"Step 4: Optional workflows",id:"step-4-optional-workflows",level:2},{value:"Simulating MEV workflows with mev-boost",id:"simulating-mev-workflows-with-mev-boost",level:3},{value:"Observability tools",id:"observability-tools",level:3},{value:"Deploying on Kubernetes",id:"deploying-on-kubernetes",level:3},{value:"Questions and feedback",id:"questions-and-feedback",level:2}];function l(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["This guide will walk you through using ",(0,s.jsxs)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:["Kurtosis ",(0,s.jsx)(t.code,{children:"ethereum-package"})]})," to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure to simulate MEV workflows."]}),"\n",(0,s.jsx)(t.h2,{id:"step-1-prerequisites",children:"Step 1: Prerequisites"}),"\n",(0,s.jsxs)(t.p,{children:["Before you begin, ensure you have ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/install",children:"Kurtosis CLI"})," and ",(0,s.jsx)(t.a,{href:"https://docs.docker.com/get-docker",children:"Docker"})," installed. The ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:(0,s.jsx)(t.code,{children:"ethereum-package"})})," is a Kurtosis environment definition known as a ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/packages",children:"package"}),". For more info about Kurtosis, see the ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com",children:"Kurtosis docs"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-2-configure-your-network",children:"Step 2: Configure your network"}),"\n",(0,s.jsxs)(t.p,{children:["Next, in your home directory, create a file with the name ",(0,s.jsx)(t.code,{children:"network_params.json"})," and populate it with the following contents:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-json",metastring:'title="network_params.json"',children:'{\n "participants": [\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lighthouse",\n "cl_client_image": "sigp/lighthouse:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "teku",\n "cl_client_image": "consensys/teku:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lodestar",\n "cl_client_image": "chainsafe/lodestar:next",\n "count": 1\n }\n ],\n "mev_type": "None",\n "launch_additional_services": false\n}\n'})}),"\n",(0,s.jsxs)(t.p,{children:["As you can see above, you have effectively created a network configuration file that Kurtosis will use to pass in the necessary parameters at runtime for your network. Notice that the ",(0,s.jsx)(t.code,{children:"participant"})," key describes the execution and consensus client pairing desired for each full node and how many nodes of that type to instantiate."]}),"\n",(0,s.jsxs)(t.p,{children:["There are many other configurations and flags you can use, including metrics and observability tools (e.g., Grafana, Prometheus, etc). For all supported options, see the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package#configuration",children:"configuration"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-3-deploy",children:"Step 3: Deploy"}),"\n",(0,s.jsxs)(t.p,{children:["Finally, once you have saved the ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, it is time to deploy the private net:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'kurtosis run github.com/ethpandaops/ethereum-package "$(cat ~/network_params.json)"\n'})}),"\n",(0,s.jsxs)(t.p,{children:["Kurtosis will use the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," environment definition and your custom network configuration (defined in ",(0,s.jsx)(t.code,{children:"network_params.json"}),") to spin up your network. Kurtosis will first spin up an ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"})," (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 and used to start up the private testnet."]}),"\n",(0,s.jsx)(t.p,{children:"Here is a sample output:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{children:"INFO[2023-09-01T16:10:45-04:00] ====================================================\nINFO[2023-09-01T16:10:45-04:00] || Created enclave: timid-knoll ||\nINFO[2023-09-01T16:10:45-04:00] ====================================================\nName: timid-knoll\nUUID: 939dfb5d59b0\nStatus: RUNNING\nCreation Time: Fri, 01 Sep 2023 16:08:57 EDT\n\n========================================= Files Artifacts =========================================\nUUID Name\na876b06035b7 1-lighthouse-nethermind-0-63\n87955ef69845 2-teku-nethermind-64-127\n4f77377da494 3-lodestar-nethermind-128-191\n9734313101e3 cl-genesis-data\n4164ed5c594c el-genesis-data\na49a3d2774b5 genesis-generation-config-cl\n16fcc4f96236 genesis-generation-config-el\n5fc72346f646 geth-prefunded-keys\n96ae153a0b51 prysm-password\n\n========================================== User Services ==========================================\nUUID Name Ports Status\nf369802ad2ae cl-1-lighthouse-nethermind http: 4000/tcp -> http://127.0.0.1:49894 RUNNING\n metrics: 5054/tcp -> http://127.0.0.1:49892\n tcp-discovery: 9000/tcp -> 127.0.0.1:49893\n udp-discovery: 9000/udp -> 127.0.0.1:64949\n5e14eb26ef45 cl-1-lighthouse-nethermind-validator http: 5042/tcp -> 127.0.0.1:49895 RUNNING\n metrics: 5064/tcp -> http://127.0.0.1:49896\nfed533d0e143 cl-2-teku-nethermind http: 4000/tcp -> 127.0.0.1:49899 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49897\n tcp-discovery: 9000/tcp -> 127.0.0.1:49898\n udp-discovery: 9000/udp -> 127.0.0.1:55521\n69cd832de246 cl-3-lodestar-nethermind http: 4000/tcp -> 127.0.0.1:49903 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49901\n tcp-discovery: 9000/tcp -> 127.0.0.1:49902\n udp-discovery: 9000/udp -> 127.0.0.1:50507\n75e3eec0c7d1 cl-3-lodestar-nethermind-validator metrics: 8008/tcp -> 127.0.0.1:49904 RUNNING\ne10c3f07e0e0 el-1-nethermind-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:49872 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49870\n tcp-discovery: 30303/tcp -> 127.0.0.1:49869\n udp-discovery: 30303/udp -> 127.0.0.1:64508\n ws: 8546/tcp -> 127.0.0.1:49871\nc6a28d3136fe el-2-nethermind-teku engine-rpc: 8551/tcp -> 127.0.0.1:49873 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49875\n tcp-discovery: 30303/tcp -> 127.0.0.1:49874\n udp-discovery: 30303/udp -> 127.0.0.1:52495\n ws: 8546/tcp -> 127.0.0.1:49876\n2fae3b3c41d3 el-3-nethermind-lodestar engine-rpc: 8551/tcp -> 127.0.0.1:49890 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49888\n tcp-discovery: 30303/tcp -> 127.0.0.1:49891\n udp-discovery: 30303/udp -> 127.0.0.1:62119\n ws: 8546/tcp -> 127.0.0.1:49889\n403cafe8416e prelaunch-data-generator-cl-genesis-data RUNNING\nebea71008cf4 prelaunch-data-generator-el-genesis-data RUNNING\n"})}),"\n",(0,s.jsx)(t.p,{children:"And that is it! You now have a 3-node, private Ethereum devnet with Nethermind/Lodestar, Nethermind/Teku, and Nethermind/Lighthouse execution and consensus client combinations."}),"\n",(0,s.jsxs)(t.p,{children:["Notice how, at the end, Kurtosis will print out the contents of your enclave, which includes both the various ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/files-artifacts",children:"files artifacts"})," and services that form your network. Kurtosis also maps the container ports to ephemeral local ports on your machine."]}),"\n",(0,s.jsxs)(t.p,{children:["Genesis data was generated using this ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-genesis-generator",children:"genesis-generator"})," to bootstrap the execution and consensus 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 ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"Kurtosis packages are modular, reproducible, and will work over Docker or Kubernetes. Read on to learn about additional services and configurations you may want to add to your private network."}),"\n",(0,s.jsx)(t.h2,{id:"step-4-optional-workflows",children:"Step 4: Optional workflows"}),"\n",(0,s.jsx)(t.p,{children:"This section briefly covers some optional configurations for your private devnet that are commonly used for validating and testing node-level behavior."}),"\n",(0,s.jsxs)(t.h3,{id:"simulating-mev-workflows-with-mev-boost",children:["Simulating MEV workflows with ",(0,s.jsx)(t.code,{children:"mev-boost"})]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," can simulate out-of-protocol Proposer Builder Separation (PBS) workflows using Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure. With a single flag, you can configure your network's validators to be instantiated with ",(0,s.jsx)(t.code,{children:"mev-boost"})," and be registered with a relayer to receive payloads from builders."]}),"\n",(0,s.jsxs)(t.p,{children:["To enable this in your ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, set ",(0,s.jsx)(t.code,{children:'"mev_type":'})," to ",(0,s.jsx)(t.code,{children:'"full"'})," or ",(0,s.jsx)(t.code,{children:'"mock"'}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["To learn more about how the ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure works with your private network, check out ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/how-to-full-mev-with-ethereum-package",children:"this guide"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"observability-tools",children:"Observability tools"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," comes out of the box with a few observability tools, including:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"A Grafana and Prometheus instance"}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/dapplion/beacon-metrics-gazer",children:"beacon metrics gazer service"})," to collect network-wide participation metrics"]}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/ethDreamer/json_rpc_snoop",children:"JSON-RPC Snooper"})," to log responses & requests between the execution engine API and the consensus client"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["To add your own custom Grafana dashboard template, fork the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," repository and add your configuration ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package/tree/main/static_files/grafana-config/dashboards",children:"here"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"deploying-on-kubernetes",children:"Deploying on Kubernetes"}),"\n",(0,s.jsxs)(t.p,{children:["As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," on Kubernetes, see ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/k8s",children:"Running Kurtosis in Kubernetes"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"questions-and-feedback",children:"Questions and feedback"}),"\n",(0,s.jsxs)(t.p,{children:["If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:"GitHub"})," or ",(0,s.jsx)(t.a,{href:"https://discord.gg/jJFG7XBqcY",children:"Discord"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8cdfe270.f1c0efe3.js b/assets/js/8cdfe270.9bba4e1c.js similarity index 99% rename from assets/js/8cdfe270.f1c0efe3.js rename to assets/js/8cdfe270.9bba4e1c.js index 799504264..e45a0fc6d 100644 --- a/assets/js/8cdfe270.f1c0efe3.js +++ b/assets/js/8cdfe270.9bba4e1c.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7230],{5032:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var t=i(4848),l=i(8453);const s={title:"Plugins",sidebar_position:1},o=void 0,r={id:"developers/plugins",title:"Plugins",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.26.0/developers/plugins.md",sourceDirName:"developers",slug:"/developers/plugins",permalink:"/1.26.0/developers/plugins",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/developers/plugins.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Plugins",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Building from source",permalink:"/1.26.0/developers/building-from-source"},next:{title:"Custom analytic tools",permalink:"/1.26.0/developers/custom-analytic-tools"}},a={},c=[{value:"RPC Plugin example:",id:"rpc-plugin-example",level:2},{value:"CLI Plugin example:",id:"cli-plugin-example",level:2},{value:"Block Tree Visitor Plugin example:",id:"block-tree-visitor-plugin-example",level:2},{value:"Config plugin example:",id:"config-plugin-example",level:2},{value:"State Tree Visitor example:",id:"state-tree-visitor-example",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,t.jsx)(n.p,{children:"Nethermind plugins is a powerful way of extending your local node capabilities."}),"\n",(0,t.jsxs)(n.p,{children:["(see also an article\nhere: ",(0,t.jsx)(n.a,{href:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59",children:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59"}),")"]}),"\n",(0,t.jsx)(n.p,{children:"Plugins that you can write:"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"Plugin Type"}),(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"What can it be used for?"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"RPC"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Adding additional RPC modules to the client that have full access to the internal Nethermind APIs and can extend capabilities of the node when integrating with your infrastructure / systems."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Block Tree Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Code allowing you to analyze entire block tree from genesis to the head block and execute aggregated calculations and checks."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Devp2p"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allows you to create additional devp2p network protocol for your nodes to communicate over TCP/IP. You can also build custom products that will run attached to Nethermind nodes."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"State Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allow you to run aggregated analysis on the entire raw format state (or just some accounts storages)."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Config"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"You can add additional configuration categories to our config files and then use them in env variables, json files or command line to configure behaviour of your plugins."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool behaviours and listeners."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Tracers"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Custom, powerful EVM tracers capable of extracting elements of EVM execution in real time."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"CLI"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Additional modules for Nethermind CLI that can allow you build some quick scratchpad style JavaScript based behaviors."})]})]})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," When writing a plugin be carefull about exceptions you throw. Especially if you are hooking up event handlers\non some core objects like BlockProcessor or BlockTree. Those exceptions can bring the node down. This is by design. Its\nresponsibility of plugin writer to correctly handle those exceptions."]}),"\n",(0,t.jsx)(n.p,{children:"How to build a plugin? We included an example inside the Nethermind.Analytics plugin:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:i(7200).A+"",width:"547",height:"417"})}),"\n",(0,t.jsx)(n.h2,{id:"rpc-plugin-example",children:"RPC Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' [RpcModule(ModuleType.Clique)]\n public interface IAnalyticsModule : IModule\n {\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from state.", IsImplemented = true)]\n ResultWrapper analytics_verifySupply();\n\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from rewards.", IsImplemented = true)]\n ResultWrapper analytics_verifyRewards();\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"cli-plugin-example",children:"CLI Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'[CliModule("analytics")]\npublic class AnalyticsCliModule : CliModuleBase\n{\n [CliFunction("analytics", "verifySupply")]\n public string VerifySupply()\n {\n return NodeManager.Post("analytics_verifySupply").Result;\n }\n\n [CliFunction("analytics", "verifyRewards")]\n public string VerifyRewards()\n {\n return NodeManager.Post("analytics_verifyRewards").Result;\n }\n\n public AnalyticsCliModule(ICliEngine cliEngine, INodeManager nodeManager)\n : base(cliEngine, nodeManager) { }\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"block-tree-visitor-plugin-example",children:"Block Tree Visitor Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive { get; }\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n\n public UInt256 BlockRewards { get; private set; }\n\n public RewardsVerifier(ILogManager logManager, long endLevelExclusive)\n {\n _logger = logManager.GetClassLogger();\n EndLevelExclusive = endLevelExclusive;\n BlockRewards = _genesisAllocations;\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n BlockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {BlockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(HeaderVisitOutcome.None);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"config-plugin-example",children:"Config plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:"public class AnalyticsConfig : IAnalyticsConfig\n{\n public bool PluginsEnabled { get; set; }\n public bool StreamTransactions { get; set; }\n public bool StreamBlocks { get; set; }\n public bool LogPublishedData { get; set; }\n}\n"})}),"\n",(0,t.jsx)(n.h2,{id:"state-tree-visitor-example",children:"State Tree Visitor example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'public class SupplyVerifier : ITreeVisitor\n{\n private readonly ILogger _logger;\n private HashSet _ignoreThisOne = new HashSet();\n private int _accountsVisited;\n private int _nodesVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public UInt256 Balance { get; set; } = UInt256.Zero;\n\n public bool ShouldVisit(Keccak nextNode)\n {\n if (_ignoreThisOne.Count > 16)\n {\n _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");\n }\n\n if (_ignoreThisOne.Contains(nextNode))\n {\n _ignoreThisOne.Remove(nextNode);\n return false;\n }\n\n return true;\n }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)\n {\n }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)\n {\n _logger.Warn($"Missing node {nodeHash}");\n }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n for (int i = 0; i < 16; i++)\n {\n Keccak childHash = node.GetChildHash(i);\n if (childHash != null)\n {\n _ignoreThisOne.Add(childHash);\n }\n }\n }\n }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n if (trieVisitContext.IsStorage)\n {\n _ignoreThisOne.Add(node.GetChildHash(0));\n }\n }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n Balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n }\n}\n'})})]})}function u(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},7200:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png"},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var t=i(6540);const l={},s=t.createContext(l);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7230],{5032:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var t=i(4848),l=i(8453);const s={title:"Plugins",sidebar_position:1},o=void 0,r={id:"developers/plugins",title:"Plugins",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.26.0/developers/plugins.md",sourceDirName:"developers",slug:"/developers/plugins",permalink:"/1.26.0/developers/plugins",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/developers/plugins.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Plugins",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Building from source",permalink:"/1.26.0/developers/building-from-source"},next:{title:"Custom analytic tools",permalink:"/1.26.0/developers/custom-analytic-tools"}},a={},c=[{value:"RPC Plugin example:",id:"rpc-plugin-example",level:2},{value:"CLI Plugin example:",id:"cli-plugin-example",level:2},{value:"Block Tree Visitor Plugin example:",id:"block-tree-visitor-plugin-example",level:2},{value:"Config plugin example:",id:"config-plugin-example",level:2},{value:"State Tree Visitor example:",id:"state-tree-visitor-example",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,t.jsx)(n.p,{children:"Nethermind plugins is a powerful way of extending your local node capabilities."}),"\n",(0,t.jsxs)(n.p,{children:["(see also an article\nhere: ",(0,t.jsx)(n.a,{href:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59",children:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59"}),")"]}),"\n",(0,t.jsx)(n.p,{children:"Plugins that you can write:"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"Plugin Type"}),(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"What can it be used for?"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"RPC"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Adding additional RPC modules to the client that have full access to the internal Nethermind APIs and can extend capabilities of the node when integrating with your infrastructure / systems."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Block Tree Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Code allowing you to analyze entire block tree from genesis to the head block and execute aggregated calculations and checks."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Devp2p"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allows you to create additional devp2p network protocol for your nodes to communicate over TCP/IP. You can also build custom products that will run attached to Nethermind nodes."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"State Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allow you to run aggregated analysis on the entire raw format state (or just some accounts storages)."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Config"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"You can add additional configuration categories to our config files and then use them in env variables, json files or command line to configure behaviour of your plugins."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool behaviours and listeners."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Tracers"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Custom, powerful EVM tracers capable of extracting elements of EVM execution in real time."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"CLI"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Additional modules for Nethermind CLI that can allow you build some quick scratchpad style JavaScript based behaviors."})]})]})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," When writing a plugin be carefull about exceptions you throw. Especially if you are hooking up event handlers\non some core objects like BlockProcessor or BlockTree. Those exceptions can bring the node down. This is by design. Its\nresponsibility of plugin writer to correctly handle those exceptions."]}),"\n",(0,t.jsx)(n.p,{children:"How to build a plugin? We included an example inside the Nethermind.Analytics plugin:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:i(7200).A+"",width:"547",height:"417"})}),"\n",(0,t.jsx)(n.h2,{id:"rpc-plugin-example",children:"RPC Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' [RpcModule(ModuleType.Clique)]\n public interface IAnalyticsModule : IModule\n {\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from state.", IsImplemented = true)]\n ResultWrapper analytics_verifySupply();\n\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from rewards.", IsImplemented = true)]\n ResultWrapper analytics_verifyRewards();\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"cli-plugin-example",children:"CLI Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'[CliModule("analytics")]\npublic class AnalyticsCliModule : CliModuleBase\n{\n [CliFunction("analytics", "verifySupply")]\n public string VerifySupply()\n {\n return NodeManager.Post("analytics_verifySupply").Result;\n }\n\n [CliFunction("analytics", "verifyRewards")]\n public string VerifyRewards()\n {\n return NodeManager.Post("analytics_verifyRewards").Result;\n }\n\n public AnalyticsCliModule(ICliEngine cliEngine, INodeManager nodeManager)\n : base(cliEngine, nodeManager) { }\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"block-tree-visitor-plugin-example",children:"Block Tree Visitor Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive { get; }\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n\n public UInt256 BlockRewards { get; private set; }\n\n public RewardsVerifier(ILogManager logManager, long endLevelExclusive)\n {\n _logger = logManager.GetClassLogger();\n EndLevelExclusive = endLevelExclusive;\n BlockRewards = _genesisAllocations;\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n BlockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {BlockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(HeaderVisitOutcome.None);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"config-plugin-example",children:"Config plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:"public class AnalyticsConfig : IAnalyticsConfig\n{\n public bool PluginsEnabled { get; set; }\n public bool StreamTransactions { get; set; }\n public bool StreamBlocks { get; set; }\n public bool LogPublishedData { get; set; }\n}\n"})}),"\n",(0,t.jsx)(n.h2,{id:"state-tree-visitor-example",children:"State Tree Visitor example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'public class SupplyVerifier : ITreeVisitor\n{\n private readonly ILogger _logger;\n private HashSet _ignoreThisOne = new HashSet();\n private int _accountsVisited;\n private int _nodesVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public UInt256 Balance { get; set; } = UInt256.Zero;\n\n public bool ShouldVisit(Keccak nextNode)\n {\n if (_ignoreThisOne.Count > 16)\n {\n _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");\n }\n\n if (_ignoreThisOne.Contains(nextNode))\n {\n _ignoreThisOne.Remove(nextNode);\n return false;\n }\n\n return true;\n }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)\n {\n }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)\n {\n _logger.Warn($"Missing node {nodeHash}");\n }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n for (int i = 0; i < 16; i++)\n {\n Keccak childHash = node.GetChildHash(i);\n if (childHash != null)\n {\n _ignoreThisOne.Add(childHash);\n }\n }\n }\n }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n if (trieVisitContext.IsStorage)\n {\n _ignoreThisOne.Add(node.GetChildHash(0));\n }\n }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n Balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n }\n}\n'})})]})}function u(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},7200:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png"},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var t=i(6540);const l={},s=t.createContext(l);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/91ddd300.e57f0a63.js b/assets/js/91ddd300.180bdb2b.js similarity index 99% rename from assets/js/91ddd300.e57f0a63.js rename to assets/js/91ddd300.180bdb2b.js index 04776ddda..481daebc4 100644 --- a/assets/js/91ddd300.e57f0a63.js +++ b/assets/js/91ddd300.180bdb2b.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9426],{8212:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var i=s(4848),t=s(8453),r=s(1470),l=s(9365);const d={title:"Sync",sidebar_position:2},o=void 0,a={id:"fundamentals/sync",title:"Sync",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.26.0/fundamentals/sync.md",sourceDirName:"fundamentals",slug:"/fundamentals/sync",permalink:"/1.26.0/fundamentals/sync",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/sync.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Sync",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/1.26.0/fundamentals/configuration"},next:{title:"Security",permalink:"/1.26.0/fundamentals/security"}},c={},h=[{value:"There are three main synchronization modes",id:"there-are-three-main-synchronization-modes",level:2},{value:"Snap Sync",id:"snap-sync",level:2},{value:"How to Enable",id:"how-to-enable",level:4},{value:"Snap Sync vs Other Sync Modes",id:"snap-sync-vs-other-sync-modes",level:4},{value:"Current limitations and future development",id:"current-limitations-and-future-development",level:4},{value:"Fast Sync",id:"fast-sync",level:2},{value:"Archive Sync",id:"archive-sync",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Resync a node from scratch",id:"resync-a-node-from-scratch",level:2},{value:"Steps to Resync a Nethermind Node",id:"steps-to-resync-a-nethermind-node",level:3}];function u(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"there-are-three-main-synchronization-modes",children:"There are three main synchronization modes"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["snap sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"the fastest way to sync to the network (syncs to mainnet in ~3 hours)"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["fast sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"slower than snap sync"}),"\n",(0,i.jsx)(n.li,{children:"useful on nethermind-only chains (like Gnosis), where snap sync is not available for now"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["archive sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"heavy historical sync verifying all the transactions and keeping all the historical state"}),"\n",(0,i.jsxs)(n.li,{children:["you can run it like this ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Sync Mode"}),(0,i.jsx)(n.th,{children:"Disk Space needed"}),(0,i.jsx)(n.th,{children:"Full current state"}),(0,i.jsx)(n.th,{children:"Full current and all historical states"}),(0,i.jsx)(n.th,{children:"Can sync a full archive node from this"}),(0,i.jsx)(n.th,{children:"Time to sync"}),(0,i.jsx)(n.th,{children:"Time to RPC"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"archive"}),(0,i.jsx)(n.td,{children:"~12TB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~3 weeks"}),(0,i.jsx)(n.td,{children:"~3 weeks"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync with all bodies and receipts"}),(0,i.jsx)(n.td,{children:"~800GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~20 hours"}),(0,i.jsx)(n.td,{children:"~20 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"default snap/fast sync (with barriers set to support Eth2)"}),(0,i.jsx)(n.td,{children:"~500GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~11 hours"}),(0,i.jsx)(n.td,{children:"~11 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without receipts"}),(0,i.jsx)(n.td,{children:"~450GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~12 hours"}),(0,i.jsx)(n.td,{children:"~12 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without bodies and receipts"}),(0,i.jsx)(n.td,{children:"~200GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~9 hours"}),(0,i.jsx)(n.td,{children:"~9 hours"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"snap-sync",children:"Snap Sync"}),"\n",(0,i.jsx)(n.p,{children:"Snap sync allows a node to perform the initial synchronization and download of Ethereum\u2019s state up to 10 times faster\nthan using fast sync."}),"\n",(0,i.jsx)(n.h4,{id:"how-to-enable",children:"How to Enable"}),"\n",(0,i.jsxs)(n.p,{children:["Snap sync is enabled by default for majority of networks. To make sure, check if",(0,i.jsx)(n.code,{children:"SnapSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"})," in the Sync\nmodule of your ",(0,i.jsx)(n.code,{children:".cfg"})," file"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true\n}\n'})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not enable snap sync on a previously synced node. Only use when syncing to the network for the first\ntime."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not remove other configurations from Sync module. Just add ",(0,i.jsx)(n.code,{children:'"SnapSync": true'}),", e.g."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true,\n\t"PivotNumber": 15011000,\n "PivotHash": "0x46c838d02d5fa5bc070080ed7965da1d888f6eb1797045365407c7011280af56",\n \t"PivotTotalDifficulty": "52367203434576253689712",\n \t"FastBlocks": true\n}\n'})}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"snap-sync-vs-other-sync-modes",children:"Snap Sync vs Other Sync Modes"}),"\n",(0,i.jsx)(n.p,{children:"More than 12TB of storage is needed today to run a full archive node \u2014 one that stores all the state since genesis.\nBecause of that, setting up an archive node can take days or even weeks. Fast Sync can still take more than 24 hours on\nthe fast machine and download about 90GB state data. With Snap Sync, sync time is reduced to 2-3h with a download of\nabout 30GB."}),"\n",(0,i.jsx)(n.p,{children:"This reduction in sync time and download size has to do with the specific way in which Ethereum\u2019s state is stored in a\nnode: Merkle trees."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(5330).A+"",width:"1168",height:"939"})}),"\n",(0,i.jsx)(n.p,{children:"With Fast Sync, a node downloads the headers of each block and retrieves all the nodes beneath it until it reaches the\nleaves. By contrast, Snap Sync only downloads the leaf nodes, generating the remaining nodes locally which saves time\nand packets downloaded."}),"\n",(0,i.jsx)(n.h4,{id:"current-limitations-and-future-development",children:"Current limitations and future development"}),"\n",(0,i.jsx)(n.p,{children:"For now Snap Sync on the Nethermind client can only download the Ethereum state but not serve it to other clients - snap\nserving development is in progress, expected late 2023/early 2024."}),"\n",(0,i.jsx)(n.p,{children:"The only Ethereum client that supports serving Snap Sync requests is Geth, so only networks supported by Geth can be\nsynced using that method: Mainnet, Goerli, Sepolia."}),"\n",(0,i.jsx)(n.h2,{id:"fast-sync",children:"Fast Sync"}),"\n",(0,i.jsxs)(n.p,{children:["After completing the fast sync your node will have the ability to answer questions like ",(0,i.jsxs)(n.em,{children:["'what is my account\nbalance ",(0,i.jsx)(n.strong,{children:"now"}),"'"]}),", ",(0,i.jsxs)(n.em,{children:["'how many XYZ tokens SomeExchange holds ",(0,i.jsx)(n.strong,{children:"at the moment"}),"'"]}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Fast sync has multiple stages. Nethermind uses a ",(0,i.jsx)(n.code,{children:"pivot block"})," number to improve fast sync performance.\nThe ",(0,i.jsx)(n.code,{children:"pivot block"})," data is automatically updated after initialization of the client and consists of\nthe ",(0,i.jsx)(n.code,{children:"block number"}),", ",(0,i.jsx)(n.code,{children:"block hash"})," and ",(0,i.jsx)(n.code,{children:"block total difficulty"})," (please note that ",(0,i.jsx)(n.code,{children:"total difficulty"})," is different\nthan ",(0,i.jsx)(n.code,{children:"difficulty"}),"). Before synchronizing state data Nethermind synchronizes in two directions - backwards\nfrom ",(0,i.jsx)(n.code,{children:"pivot block"})," to 0 for headers and forward to the head of the chain for headers, blocks and receipts. Forward sync\nmight be very slow (5 - 50 bps) so having fresh pivot block is very important - it is guaranteed by recently implemented\nauto-update."]}),"\n",(0,i.jsx)(n.p,{children:"After downloading the block data Nethermind will start state sync (downloading the latest state trie nodes). We are\nproviding an estimate for the download size and progress but the real value may be different than the estimate (\nespecially if you are using an old version of Nethermind as we sometimes manually adjust the estimator based on our\nobservations of the chain growth rate). Because of this sometimes your sync may continue even when it shows ~100%\nfinished. The other important component is the speed of your sync - if your IO / network / file system causes the state\nsync to go much slower than around 1.5MB per second on average then you will start downloading some parts of the trie\nover and over again. In such cases you may be surprised to see something like 58000MB / 53000MB (100%). It means that\nyou downloaded around 5GB of data that is no longer needed. If your sync is very slow (extended beyond two days) then\nvery likely your setup cannot catch up with the chain progress."}),"\n",(0,i.jsxs)(n.p,{children:["After the state sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," messages like in archive sync - it means that your node\nis in sync and is processing the latest blocks."]}),"\n",(0,i.jsx)(n.p,{children:"Mainnet sync, at the time of writing (December 2020), takes around 8 hours on an UpCloud 16GB RAM 8 CPU $40 VM (and then\nsyncs receipts and bodies in the background if you enabled them in the configuration). Goerli sync should take around 40\nminutes."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast sync logs example for mainnet.",src:s(7017).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsxs)(n.p,{children:["State sync log messages have multiple values displayed. First ",(0,i.jsx)(n.code,{children:"dd.HH:mm:ss"})," total state sync time is displayed, followed\nby an estimated sync progress (percentage of total database data synced), then the current download speed is displayed (\nthere will be times when it will slow down to 0 or single digit numbers, especially towards the end of the sync). In\ngeneral 6 hours sync times shown on screenshots are with around 2000 kB/s (kilobytes per second) average sync rate. You\ncan calculate it in the example as ~45GB / (2MB/s) ~ 22500 seconds ~6.25 hours. We also display the number of state\naccounts synced, number of trie nodes synced and a diagnostic message in the format of ",(0,i.jsx)(n.em,{children:"[number_of_pending_requests]\n.[average time spent in response handler displayed as milliseconds]"}),". So ",(0,i.jsx)(n.code,{children:"5.6.20ms"})," means that we are awaiting for\nresponses to 5 requests that have been sent to peers and the average time it takes us to process a single response is\n6.20ms. The response handling times will differ depending on how many trie nodes are already cached (so they will be\nsignificantly slower for a while after the node restart when cache has to be rebuilt) and based on how fast the database\nIO is (SSD vs NVMe vs cloud drives). For a reasonable sync time you probably should expect these values to be below\n15ms (but they may be as high as 700ms for a while after restarting the node)."]}),"\n",(0,i.jsx)(n.p,{children:"A single restart of the node during the fast sync may extend the sync time by up to two hours because the node has to\nrebuild the caches by reading millions of values from the database."}),"\n",(0,i.jsx)(n.p,{children:"At the last stages of the sync the node will be repeatedly displaying the branch sync progress and changing the block\nnumber to which it tries to catch up. This stage should take between 30 minutes and two hours. If it lasts much more\nthen it is possible that you will not be able to catch up with the network progress."}),"\n",(0,i.jsx)(n.p,{children:"One of the best indicators that you are close to be synced is combined ~100% state size progress and nearly 100% branch\nsync progress."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(2725).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(3203).A+"",width:"1895",height:"795"})}),"\n",(0,i.jsx)(n.h2,{id:"archive-sync",children:"Archive Sync"}),"\n",(0,i.jsxs)(n.p,{children:["Archive sync is the 'heaviest' and slowest sync mode but allows to ask questions like ",(0,i.jsx)(n.em,{children:"'what was the balance of my\naccount 2 years ago?'"}),", ",(0,i.jsx)(n.em,{children:"'how many XYZ token were held in SomeExchange custody in 2017?'"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["We have prepared default archive sync configurations and they can be launched from Nethermind Launcher (just choose the\narchive options) or by simply loading appropriate config when launching ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config goerli_archive"})}),"\n",(0,i.jsx)(n.p,{children:"While for some smaller networks archive sync can complete very quickly (in minutes or hours) mainnet sync would take 2 -\n6 weeks depending on the speed of your IO (whether you use SSD or NVMe or depending on the cloud provider IOPS).\nDatabase size in archive sync is the biggest from all modes as you will store all the historical data."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Example of the archive sync logs",src:s(4466).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(9175).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:"Explanation of some data in the logs:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["at the beginning you may see a ",(0,i.jsx)(n.em,{children:"'Waiting for peers...'"})," message while the node is trying to discover nodes that it can\nsync with."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Downloaded 1234/8000000'"})," shows the number of unprocessed blocks (with transactions) downloaded from the network.\nFor ",(0,i.jsx)(n.code,{children:"mainnet"}),"this value may be slower than processing at first but very quickly you will see blocks being downloaded\nmuch faster than processed. Empty blocks can be as small as 512 bytes (just headers without transactions) and full\nblocks with heavy transactions can reach a few hundred kilobytes. We display both current download speed (calculated\nin the last second) and average (total) speed since starting the node."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Processed ...'"})," displays the blocks that have been processed by the EVM. The first number shows the current head\nblock number, then you can see ",(0,i.jsx)(n.code,{children:"mgasps"})," (million gas per second) - current and total, then ",(0,i.jsx)(n.code,{children:"tps"})," (transactions per\nsecond) - current and total, ",(0,i.jsx)(n.code,{children:"bps"})," (blocks per second). Then ",(0,i.jsx)(n.code,{children:"recv queue"})," (transactions signature public key recovery\nqueue), ",(0,i.jsx)(n.code,{children:"proc queue"})," (processor queue). Both recovery queue and processor queue are designed so when too many blocks\nare waiting for processing then only their hashes are kept in memory and remaining data are stored in the database.\nThus, the queues numbers that you can see will be capped by some number."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Cache for epoch...'"})," informs about ",(0,i.jsx)(n.code,{children:"ethash"})," cache needed for block seal verification (only on ",(0,i.jsx)(n.code,{children:"mainnet"}),"\nand ",(0,i.jsx)(n.code,{children:"ropsten"}),"). Caches will be calculated every 30000 blocks (length of an epoch) but can also be calculated for the\nlatest blocks that are being broadcast on the network."]}),"\n",(0,i.jsxs)(n.li,{children:["After the archive sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," message appearing on average every 15 seconds when\nthe new block is processed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mgasps"}),", ",(0,i.jsx)(n.code,{children:"tps"}),", ",(0,i.jsx)(n.code,{children:"bps"})," values should not be treated as comparable as they may differ massively on different parts of\nthe chain. For example when blocks are empty you may see very high ",(0,i.jsx)(n.code,{children:"bps"})," values with very low (or even zero) ",(0,i.jsx)(n.code,{children:"tps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," values as there are no transactions and no gas for EVM processing and blocks are very light. On the other\nhand when blocks are filled with very heavy transactions then ",(0,i.jsx)(n.code,{children:"bps"})," might be very low while ",(0,i.jsx)(n.code,{children:"mgasps"})," will be very\nhigh. It is even possible that you will see a lot of very light transactions where ",(0,i.jsx)(n.code,{children:"tps"})," will be high while ",(0,i.jsx)(n.code,{children:"bps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," will be average."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,i.jsx)(n.p,{children:"Sync time heavily depends on the hardware used for the node, network speed, and peering. We are constantly pursuing to make it as fast as possible. Below is a brief on how the sync time looks on different machines and various chains (tested with Nethermind v1.21.0)."}),"\n",(0,i.jsxs)(r.A,{children:[(0,i.jsxs)(l.A,{value:"highend-vm",label:"High-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Akamai (formerly Linode)"}),"\n",(0,i.jsx)(n.li,{children:"CPU: AMD EPYC 7601, 16 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 64 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1.2 TB, ~40k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 7h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 58m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 2m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 5m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 21m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 22m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 17m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 46m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 31m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 10m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"midend-vm",label:"Mid-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: AWS"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/c7g/",children:"c7g.2xlarge"}),": 8 vCPU, 16 GiB memory"]}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~10k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 12h 37m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 35m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1h 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 43m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 2h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 4h 28m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 10m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 23m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 35m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 17m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 29m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 18h 28m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 52m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 25m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 5m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"oldspec-vm",label:"Old-spec VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Scaleway"}),"\n",(0,i.jsx)(n.li,{children:"CPU: Intel Xeon Processor E5-2620 v2, 2 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 192 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~44k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 1m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 29m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 25m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 3h 39m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 8h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 5h 55m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 34m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 14m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 16m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 2h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 26m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 45m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 56m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 30m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 3h 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 25m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"energyweb",label:"Energy Web",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 7m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 15h 20m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"volta",label:"Volta",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 14h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 42m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 16h 10m"]}),"\n"]})]})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"resync-a-node-from-scratch",children:"Resync a node from scratch"}),"\n",(0,i.jsx)(n.p,{children:"This guide explains how to resync a Nethermind node using the existing Pivot block or updating it to a more recent one."}),"\n",(0,i.jsx)(n.h3,{id:"steps-to-resync-a-nethermind-node",children:"Steps to Resync a Nethermind Node"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Stop the Nethermind node"}),": If your Nethermind node is currently running, stop it to ensure that no new data is\nbeing written to the database during the resync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Delete the existing database"}),": Navigate to the Nethermind data directory. The location of this directory depends\non how Nethermind was installed and your configuration settings. Inside the data directory, find the ",(0,i.jsx)(n.code,{children:"nethermind_db"}),"\nfolder and delete the ",(0,i.jsx)(n.code,{children:"mainnet"})," subfolder to remove the existing database for the mainnet."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the configuration file (optional)"}),": If you want to change any configuration settings before resyncing the\nnode, edit the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file located in the Nethermind directory. For example, you might want to adjust the\npruning settings or specify a different network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the Pivot block (optional)"}),"\\","\n",(0,i.jsx)(n.admonition,{type:"danger",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Only for versions before 1.19.0 where Auto-Pivot approach was introduced"})})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Etherscan"}),": If you want to speed up the syncing process, you can update the Pivot block to a more recent\none. To do this, find the ",(0,i.jsx)(n.code,{children:"Sync"})," section in the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file and update the ",(0,i.jsx)(n.code,{children:"PivotNumber"})," and ",(0,i.jsx)(n.code,{children:"PivotHash"}),'\nfields to match a recent "finalized" block number and its corresponding hash. You can obtain this information from\na block explorer such as ',(0,i.jsx)(n.a,{href:"https://etherscan.io/",children:"Etherscan"}),".",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.br,{}),"\n","Using block number 17165278 from ",(0,i.jsx)(n.a,{href:"https://etherscan.io/block/17165278",children:"Etherscan"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:' { \n \t "PivotNumber": 17165278,\n \t "PivotHash": "0xa665315efd923f3b11215feee09a9d3e13c5e6ee602fa19b642824682ec0a752"\n }\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Nethermind's GitHub"}),": Alternatively, you can update the Pivot block by referring to\nthe ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:"Nethermind's mainnet.cfg file on GitHub"}),".\nThe Pivot block is periodically bumped to the HEAD-8192 block of the mainnet chain. Copy the ",(0,i.jsx)(n.code,{children:"PivotNumber"}),"\nand ",(0,i.jsx)(n.code,{children:"PivotHash"})," values from the GitHub file and update your local ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file accordingly."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Restart the Nethermind node"}),": Start the Nethermind node again to initiate the resync process. The node will begin\nsyncing from the existing Pivot block or the specified updated Pivot block, downloading and processing all the blocks\nin the blockchain."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To ensure that your Nethermind node is resyncing, you can monitor the logs for the node's progress. The logs will\ndisplay information about the block processing, synchronization status and ",(0,i.jsx)(n.code,{children:"OldHeaders"})," being processed. By observing\nthe increasing block numbers and synchronization messages in the logs, you can confirm that the resync process is active\nand working as expected."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Old Headers 0 / 17154000 | queue 0 | current 0.00bps | total 0.00bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 768 / 17154000 | queue 0 | current 766.07bps | total 762.49bps"}),"\n",(0,i.jsx)(n.p,{children:"Beacon Headers from block 17154001 to block 17169722 | 960 / 15722 | queue 4992 | current 0.00bps | total\n40622848.83bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 9024 / 17154000 | queue 0 | current 576.40bps | total 1286.40bps"}),"\n",(0,i.jsxs)(n.p,{children:["Beacon Headers from block 17154001 to block 17169723 | 9024 / 15723 | queue 6698 | current 2694.81bps | total\n3882943.63bps",(0,i.jsx)(n.br,{}),"\n","Downloaded 17154031 / 17172359 | current 0.00bps | total 0.00bps"]}),"\n",(0,i.jsx)(n.p,{children:"Downloaded 17154062 / 17169724 | current 0.00bps | total 2.88bps"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Keep in mind that resyncing a Nethermind node can take a considerable amount of time. It depends on your hardware,\ninternet connection, and the size of the blockchain."})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var i=s(4164);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>w});var i=s(6540),t=s(4164),r=s(3104),l=s(6347),d=s(205),o=s(7485),a=s(1682),c=s(679);function h(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:i,default:t}}=e;return{value:n,label:s,attributes:i,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,o.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=u(e),[l,o]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=s.find((e=>e.default))??s[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[a,h]=j({queryString:s,groupId:t}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,c.Dv)(s);return[t,(0,i.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),g=(()=>{const e=a??m;return x({value:e,tabValues:r})?e:null})();(0,d.A)((()=>{g&&o(g)}),[g]);return{selectedValue:l,selectValue:(0,i.useCallback)((e=>{if(!x({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),h(e),p(e)}),[h,p,r]),tabValues:r}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function b(e){let{className:n,block:s,selectedValue:i,selectValue:l,tabValues:d}=e;const o=[],{blockElementScrollPositionUntilNextRender:a}=(0,r.a_)(),c=e=>{const n=e.currentTarget,s=o.indexOf(n),t=d[s].value;t!==i&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const s=o.indexOf(e.currentTarget)+1;n=o[s]??o[0];break}case"ArrowLeft":{const s=o.indexOf(e.currentTarget)-1;n=o[s]??o[o.length-1];break}}n?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>o.push(e),onKeyDown:h,onClick:c,...r,className:(0,t.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":i===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:r}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=m(e);return(0,y.jsxs)("div",{className:(0,t.A)("tabs-container",g.tabList),children:[(0,y.jsx)(b,{...n,...e}),(0,y.jsx)(f,{...n,...e})]})}function w(e){const n=(0,p.A)();return(0,y.jsx)(v,{...e,children:h(e.children)},String(n))}},5330:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png"},9175:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png"},4466:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png"},7017:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png"},3203:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png"},2725:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png"},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var i=s(6540);const t={},r=i.createContext(t);function l(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9426],{8212:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var i=s(4848),t=s(8453),r=s(1470),l=s(9365);const d={title:"Sync",sidebar_position:2},o=void 0,a={id:"fundamentals/sync",title:"Sync",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.26.0/fundamentals/sync.md",sourceDirName:"fundamentals",slug:"/fundamentals/sync",permalink:"/1.26.0/fundamentals/sync",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/sync.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Sync",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/1.26.0/fundamentals/configuration"},next:{title:"Security",permalink:"/1.26.0/fundamentals/security"}},c={},h=[{value:"There are three main synchronization modes",id:"there-are-three-main-synchronization-modes",level:2},{value:"Snap Sync",id:"snap-sync",level:2},{value:"How to Enable",id:"how-to-enable",level:4},{value:"Snap Sync vs Other Sync Modes",id:"snap-sync-vs-other-sync-modes",level:4},{value:"Current limitations and future development",id:"current-limitations-and-future-development",level:4},{value:"Fast Sync",id:"fast-sync",level:2},{value:"Archive Sync",id:"archive-sync",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Resync a node from scratch",id:"resync-a-node-from-scratch",level:2},{value:"Steps to Resync a Nethermind Node",id:"steps-to-resync-a-nethermind-node",level:3}];function u(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"there-are-three-main-synchronization-modes",children:"There are three main synchronization modes"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["snap sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"the fastest way to sync to the network (syncs to mainnet in ~3 hours)"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["fast sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"slower than snap sync"}),"\n",(0,i.jsx)(n.li,{children:"useful on nethermind-only chains (like Gnosis), where snap sync is not available for now"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["archive sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"heavy historical sync verifying all the transactions and keeping all the historical state"}),"\n",(0,i.jsxs)(n.li,{children:["you can run it like this ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Sync Mode"}),(0,i.jsx)(n.th,{children:"Disk Space needed"}),(0,i.jsx)(n.th,{children:"Full current state"}),(0,i.jsx)(n.th,{children:"Full current and all historical states"}),(0,i.jsx)(n.th,{children:"Can sync a full archive node from this"}),(0,i.jsx)(n.th,{children:"Time to sync"}),(0,i.jsx)(n.th,{children:"Time to RPC"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"archive"}),(0,i.jsx)(n.td,{children:"~12TB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~3 weeks"}),(0,i.jsx)(n.td,{children:"~3 weeks"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync with all bodies and receipts"}),(0,i.jsx)(n.td,{children:"~800GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~20 hours"}),(0,i.jsx)(n.td,{children:"~20 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"default snap/fast sync (with barriers set to support Eth2)"}),(0,i.jsx)(n.td,{children:"~500GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~11 hours"}),(0,i.jsx)(n.td,{children:"~11 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without receipts"}),(0,i.jsx)(n.td,{children:"~450GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~12 hours"}),(0,i.jsx)(n.td,{children:"~12 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without bodies and receipts"}),(0,i.jsx)(n.td,{children:"~200GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~9 hours"}),(0,i.jsx)(n.td,{children:"~9 hours"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"snap-sync",children:"Snap Sync"}),"\n",(0,i.jsx)(n.p,{children:"Snap sync allows a node to perform the initial synchronization and download of Ethereum\u2019s state up to 10 times faster\nthan using fast sync."}),"\n",(0,i.jsx)(n.h4,{id:"how-to-enable",children:"How to Enable"}),"\n",(0,i.jsxs)(n.p,{children:["Snap sync is enabled by default for majority of networks. To make sure, check if",(0,i.jsx)(n.code,{children:"SnapSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"})," in the Sync\nmodule of your ",(0,i.jsx)(n.code,{children:".cfg"})," file"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true\n}\n'})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not enable snap sync on a previously synced node. Only use when syncing to the network for the first\ntime."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not remove other configurations from Sync module. Just add ",(0,i.jsx)(n.code,{children:'"SnapSync": true'}),", e.g."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true,\n\t"PivotNumber": 15011000,\n "PivotHash": "0x46c838d02d5fa5bc070080ed7965da1d888f6eb1797045365407c7011280af56",\n \t"PivotTotalDifficulty": "52367203434576253689712",\n \t"FastBlocks": true\n}\n'})}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"snap-sync-vs-other-sync-modes",children:"Snap Sync vs Other Sync Modes"}),"\n",(0,i.jsx)(n.p,{children:"More than 12TB of storage is needed today to run a full archive node \u2014 one that stores all the state since genesis.\nBecause of that, setting up an archive node can take days or even weeks. Fast Sync can still take more than 24 hours on\nthe fast machine and download about 90GB state data. With Snap Sync, sync time is reduced to 2-3h with a download of\nabout 30GB."}),"\n",(0,i.jsx)(n.p,{children:"This reduction in sync time and download size has to do with the specific way in which Ethereum\u2019s state is stored in a\nnode: Merkle trees."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(5330).A+"",width:"1168",height:"939"})}),"\n",(0,i.jsx)(n.p,{children:"With Fast Sync, a node downloads the headers of each block and retrieves all the nodes beneath it until it reaches the\nleaves. By contrast, Snap Sync only downloads the leaf nodes, generating the remaining nodes locally which saves time\nand packets downloaded."}),"\n",(0,i.jsx)(n.h4,{id:"current-limitations-and-future-development",children:"Current limitations and future development"}),"\n",(0,i.jsx)(n.p,{children:"For now Snap Sync on the Nethermind client can only download the Ethereum state but not serve it to other clients - snap\nserving development is in progress, expected late 2023/early 2024."}),"\n",(0,i.jsx)(n.p,{children:"The only Ethereum client that supports serving Snap Sync requests is Geth, so only networks supported by Geth can be\nsynced using that method: Mainnet, Goerli, Sepolia."}),"\n",(0,i.jsx)(n.h2,{id:"fast-sync",children:"Fast Sync"}),"\n",(0,i.jsxs)(n.p,{children:["After completing the fast sync your node will have the ability to answer questions like ",(0,i.jsxs)(n.em,{children:["'what is my account\nbalance ",(0,i.jsx)(n.strong,{children:"now"}),"'"]}),", ",(0,i.jsxs)(n.em,{children:["'how many XYZ tokens SomeExchange holds ",(0,i.jsx)(n.strong,{children:"at the moment"}),"'"]}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Fast sync has multiple stages. Nethermind uses a ",(0,i.jsx)(n.code,{children:"pivot block"})," number to improve fast sync performance.\nThe ",(0,i.jsx)(n.code,{children:"pivot block"})," data is automatically updated after initialization of the client and consists of\nthe ",(0,i.jsx)(n.code,{children:"block number"}),", ",(0,i.jsx)(n.code,{children:"block hash"})," and ",(0,i.jsx)(n.code,{children:"block total difficulty"})," (please note that ",(0,i.jsx)(n.code,{children:"total difficulty"})," is different\nthan ",(0,i.jsx)(n.code,{children:"difficulty"}),"). Before synchronizing state data Nethermind synchronizes in two directions - backwards\nfrom ",(0,i.jsx)(n.code,{children:"pivot block"})," to 0 for headers and forward to the head of the chain for headers, blocks and receipts. Forward sync\nmight be very slow (5 - 50 bps) so having fresh pivot block is very important - it is guaranteed by recently implemented\nauto-update."]}),"\n",(0,i.jsx)(n.p,{children:"After downloading the block data Nethermind will start state sync (downloading the latest state trie nodes). We are\nproviding an estimate for the download size and progress but the real value may be different than the estimate (\nespecially if you are using an old version of Nethermind as we sometimes manually adjust the estimator based on our\nobservations of the chain growth rate). Because of this sometimes your sync may continue even when it shows ~100%\nfinished. The other important component is the speed of your sync - if your IO / network / file system causes the state\nsync to go much slower than around 1.5MB per second on average then you will start downloading some parts of the trie\nover and over again. In such cases you may be surprised to see something like 58000MB / 53000MB (100%). It means that\nyou downloaded around 5GB of data that is no longer needed. If your sync is very slow (extended beyond two days) then\nvery likely your setup cannot catch up with the chain progress."}),"\n",(0,i.jsxs)(n.p,{children:["After the state sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," messages like in archive sync - it means that your node\nis in sync and is processing the latest blocks."]}),"\n",(0,i.jsx)(n.p,{children:"Mainnet sync, at the time of writing (December 2020), takes around 8 hours on an UpCloud 16GB RAM 8 CPU $40 VM (and then\nsyncs receipts and bodies in the background if you enabled them in the configuration). Goerli sync should take around 40\nminutes."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast sync logs example for mainnet.",src:s(7017).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsxs)(n.p,{children:["State sync log messages have multiple values displayed. First ",(0,i.jsx)(n.code,{children:"dd.HH:mm:ss"})," total state sync time is displayed, followed\nby an estimated sync progress (percentage of total database data synced), then the current download speed is displayed (\nthere will be times when it will slow down to 0 or single digit numbers, especially towards the end of the sync). In\ngeneral 6 hours sync times shown on screenshots are with around 2000 kB/s (kilobytes per second) average sync rate. You\ncan calculate it in the example as ~45GB / (2MB/s) ~ 22500 seconds ~6.25 hours. We also display the number of state\naccounts synced, number of trie nodes synced and a diagnostic message in the format of ",(0,i.jsx)(n.em,{children:"[number_of_pending_requests]\n.[average time spent in response handler displayed as milliseconds]"}),". So ",(0,i.jsx)(n.code,{children:"5.6.20ms"})," means that we are awaiting for\nresponses to 5 requests that have been sent to peers and the average time it takes us to process a single response is\n6.20ms. The response handling times will differ depending on how many trie nodes are already cached (so they will be\nsignificantly slower for a while after the node restart when cache has to be rebuilt) and based on how fast the database\nIO is (SSD vs NVMe vs cloud drives). For a reasonable sync time you probably should expect these values to be below\n15ms (but they may be as high as 700ms for a while after restarting the node)."]}),"\n",(0,i.jsx)(n.p,{children:"A single restart of the node during the fast sync may extend the sync time by up to two hours because the node has to\nrebuild the caches by reading millions of values from the database."}),"\n",(0,i.jsx)(n.p,{children:"At the last stages of the sync the node will be repeatedly displaying the branch sync progress and changing the block\nnumber to which it tries to catch up. This stage should take between 30 minutes and two hours. If it lasts much more\nthen it is possible that you will not be able to catch up with the network progress."}),"\n",(0,i.jsx)(n.p,{children:"One of the best indicators that you are close to be synced is combined ~100% state size progress and nearly 100% branch\nsync progress."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(2725).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(3203).A+"",width:"1895",height:"795"})}),"\n",(0,i.jsx)(n.h2,{id:"archive-sync",children:"Archive Sync"}),"\n",(0,i.jsxs)(n.p,{children:["Archive sync is the 'heaviest' and slowest sync mode but allows to ask questions like ",(0,i.jsx)(n.em,{children:"'what was the balance of my\naccount 2 years ago?'"}),", ",(0,i.jsx)(n.em,{children:"'how many XYZ token were held in SomeExchange custody in 2017?'"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["We have prepared default archive sync configurations and they can be launched from Nethermind Launcher (just choose the\narchive options) or by simply loading appropriate config when launching ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config goerli_archive"})}),"\n",(0,i.jsx)(n.p,{children:"While for some smaller networks archive sync can complete very quickly (in minutes or hours) mainnet sync would take 2 -\n6 weeks depending on the speed of your IO (whether you use SSD or NVMe or depending on the cloud provider IOPS).\nDatabase size in archive sync is the biggest from all modes as you will store all the historical data."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Example of the archive sync logs",src:s(4466).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(9175).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:"Explanation of some data in the logs:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["at the beginning you may see a ",(0,i.jsx)(n.em,{children:"'Waiting for peers...'"})," message while the node is trying to discover nodes that it can\nsync with."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Downloaded 1234/8000000'"})," shows the number of unprocessed blocks (with transactions) downloaded from the network.\nFor ",(0,i.jsx)(n.code,{children:"mainnet"}),"this value may be slower than processing at first but very quickly you will see blocks being downloaded\nmuch faster than processed. Empty blocks can be as small as 512 bytes (just headers without transactions) and full\nblocks with heavy transactions can reach a few hundred kilobytes. We display both current download speed (calculated\nin the last second) and average (total) speed since starting the node."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Processed ...'"})," displays the blocks that have been processed by the EVM. The first number shows the current head\nblock number, then you can see ",(0,i.jsx)(n.code,{children:"mgasps"})," (million gas per second) - current and total, then ",(0,i.jsx)(n.code,{children:"tps"})," (transactions per\nsecond) - current and total, ",(0,i.jsx)(n.code,{children:"bps"})," (blocks per second). Then ",(0,i.jsx)(n.code,{children:"recv queue"})," (transactions signature public key recovery\nqueue), ",(0,i.jsx)(n.code,{children:"proc queue"})," (processor queue). Both recovery queue and processor queue are designed so when too many blocks\nare waiting for processing then only their hashes are kept in memory and remaining data are stored in the database.\nThus, the queues numbers that you can see will be capped by some number."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Cache for epoch...'"})," informs about ",(0,i.jsx)(n.code,{children:"ethash"})," cache needed for block seal verification (only on ",(0,i.jsx)(n.code,{children:"mainnet"}),"\nand ",(0,i.jsx)(n.code,{children:"ropsten"}),"). Caches will be calculated every 30000 blocks (length of an epoch) but can also be calculated for the\nlatest blocks that are being broadcast on the network."]}),"\n",(0,i.jsxs)(n.li,{children:["After the archive sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," message appearing on average every 15 seconds when\nthe new block is processed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mgasps"}),", ",(0,i.jsx)(n.code,{children:"tps"}),", ",(0,i.jsx)(n.code,{children:"bps"})," values should not be treated as comparable as they may differ massively on different parts of\nthe chain. For example when blocks are empty you may see very high ",(0,i.jsx)(n.code,{children:"bps"})," values with very low (or even zero) ",(0,i.jsx)(n.code,{children:"tps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," values as there are no transactions and no gas for EVM processing and blocks are very light. On the other\nhand when blocks are filled with very heavy transactions then ",(0,i.jsx)(n.code,{children:"bps"})," might be very low while ",(0,i.jsx)(n.code,{children:"mgasps"})," will be very\nhigh. It is even possible that you will see a lot of very light transactions where ",(0,i.jsx)(n.code,{children:"tps"})," will be high while ",(0,i.jsx)(n.code,{children:"bps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," will be average."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,i.jsx)(n.p,{children:"Sync time heavily depends on the hardware used for the node, network speed, and peering. We are constantly pursuing to make it as fast as possible. Below is a brief on how the sync time looks on different machines and various chains (tested with Nethermind v1.21.0)."}),"\n",(0,i.jsxs)(r.A,{children:[(0,i.jsxs)(l.A,{value:"highend-vm",label:"High-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Akamai (formerly Linode)"}),"\n",(0,i.jsx)(n.li,{children:"CPU: AMD EPYC 7601, 16 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 64 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1.2 TB, ~40k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 7h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 58m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 2m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 5m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 21m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 22m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 17m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 46m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 31m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 10m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"midend-vm",label:"Mid-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: AWS"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/c7g/",children:"c7g.2xlarge"}),": 8 vCPU, 16 GiB memory"]}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~10k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 12h 37m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 35m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1h 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 43m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 2h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 4h 28m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 10m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 23m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 35m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 17m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 29m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 18h 28m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 52m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 25m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 5m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"oldspec-vm",label:"Old-spec VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Scaleway"}),"\n",(0,i.jsx)(n.li,{children:"CPU: Intel Xeon Processor E5-2620 v2, 2 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 192 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~44k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 1m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 29m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 25m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 3h 39m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 8h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 5h 55m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 34m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 14m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 16m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 2h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 26m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 45m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 56m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 30m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 3h 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 25m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"energyweb",label:"Energy Web",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 7m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 15h 20m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"volta",label:"Volta",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 14h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 42m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 16h 10m"]}),"\n"]})]})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"resync-a-node-from-scratch",children:"Resync a node from scratch"}),"\n",(0,i.jsx)(n.p,{children:"This guide explains how to resync a Nethermind node using the existing Pivot block or updating it to a more recent one."}),"\n",(0,i.jsx)(n.h3,{id:"steps-to-resync-a-nethermind-node",children:"Steps to Resync a Nethermind Node"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Stop the Nethermind node"}),": If your Nethermind node is currently running, stop it to ensure that no new data is\nbeing written to the database during the resync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Delete the existing database"}),": Navigate to the Nethermind data directory. The location of this directory depends\non how Nethermind was installed and your configuration settings. Inside the data directory, find the ",(0,i.jsx)(n.code,{children:"nethermind_db"}),"\nfolder and delete the ",(0,i.jsx)(n.code,{children:"mainnet"})," subfolder to remove the existing database for the mainnet."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the configuration file (optional)"}),": If you want to change any configuration settings before resyncing the\nnode, edit the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file located in the Nethermind directory. For example, you might want to adjust the\npruning settings or specify a different network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the Pivot block (optional)"}),"\\","\n",(0,i.jsx)(n.admonition,{type:"danger",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Only for versions before 1.19.0 where Auto-Pivot approach was introduced"})})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Etherscan"}),": If you want to speed up the syncing process, you can update the Pivot block to a more recent\none. To do this, find the ",(0,i.jsx)(n.code,{children:"Sync"})," section in the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file and update the ",(0,i.jsx)(n.code,{children:"PivotNumber"})," and ",(0,i.jsx)(n.code,{children:"PivotHash"}),'\nfields to match a recent "finalized" block number and its corresponding hash. You can obtain this information from\na block explorer such as ',(0,i.jsx)(n.a,{href:"https://etherscan.io/",children:"Etherscan"}),".",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.br,{}),"\n","Using block number 17165278 from ",(0,i.jsx)(n.a,{href:"https://etherscan.io/block/17165278",children:"Etherscan"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:' { \n \t "PivotNumber": 17165278,\n \t "PivotHash": "0xa665315efd923f3b11215feee09a9d3e13c5e6ee602fa19b642824682ec0a752"\n }\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Nethermind's GitHub"}),": Alternatively, you can update the Pivot block by referring to\nthe ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:"Nethermind's mainnet.cfg file on GitHub"}),".\nThe Pivot block is periodically bumped to the HEAD-8192 block of the mainnet chain. Copy the ",(0,i.jsx)(n.code,{children:"PivotNumber"}),"\nand ",(0,i.jsx)(n.code,{children:"PivotHash"})," values from the GitHub file and update your local ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file accordingly."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Restart the Nethermind node"}),": Start the Nethermind node again to initiate the resync process. The node will begin\nsyncing from the existing Pivot block or the specified updated Pivot block, downloading and processing all the blocks\nin the blockchain."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To ensure that your Nethermind node is resyncing, you can monitor the logs for the node's progress. The logs will\ndisplay information about the block processing, synchronization status and ",(0,i.jsx)(n.code,{children:"OldHeaders"})," being processed. By observing\nthe increasing block numbers and synchronization messages in the logs, you can confirm that the resync process is active\nand working as expected."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Old Headers 0 / 17154000 | queue 0 | current 0.00bps | total 0.00bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 768 / 17154000 | queue 0 | current 766.07bps | total 762.49bps"}),"\n",(0,i.jsx)(n.p,{children:"Beacon Headers from block 17154001 to block 17169722 | 960 / 15722 | queue 4992 | current 0.00bps | total\n40622848.83bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 9024 / 17154000 | queue 0 | current 576.40bps | total 1286.40bps"}),"\n",(0,i.jsxs)(n.p,{children:["Beacon Headers from block 17154001 to block 17169723 | 9024 / 15723 | queue 6698 | current 2694.81bps | total\n3882943.63bps",(0,i.jsx)(n.br,{}),"\n","Downloaded 17154031 / 17172359 | current 0.00bps | total 0.00bps"]}),"\n",(0,i.jsx)(n.p,{children:"Downloaded 17154062 / 17169724 | current 0.00bps | total 2.88bps"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Keep in mind that resyncing a Nethermind node can take a considerable amount of time. It depends on your hardware,\ninternet connection, and the size of the blockchain."})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var i=s(4164);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>w});var i=s(6540),t=s(4164),r=s(3104),l=s(6347),d=s(205),o=s(7485),a=s(1682),c=s(679);function h(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:i,default:t}}=e;return{value:n,label:s,attributes:i,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,o.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=u(e),[l,o]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=s.find((e=>e.default))??s[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[a,h]=j({queryString:s,groupId:t}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,c.Dv)(s);return[t,(0,i.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),g=(()=>{const e=a??m;return x({value:e,tabValues:r})?e:null})();(0,d.A)((()=>{g&&o(g)}),[g]);return{selectedValue:l,selectValue:(0,i.useCallback)((e=>{if(!x({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),h(e),p(e)}),[h,p,r]),tabValues:r}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function b(e){let{className:n,block:s,selectedValue:i,selectValue:l,tabValues:d}=e;const o=[],{blockElementScrollPositionUntilNextRender:a}=(0,r.a_)(),c=e=>{const n=e.currentTarget,s=o.indexOf(n),t=d[s].value;t!==i&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const s=o.indexOf(e.currentTarget)+1;n=o[s]??o[0];break}case"ArrowLeft":{const s=o.indexOf(e.currentTarget)-1;n=o[s]??o[o.length-1];break}}n?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>o.push(e),onKeyDown:h,onClick:c,...r,className:(0,t.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":i===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:r}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=m(e);return(0,y.jsxs)("div",{className:(0,t.A)("tabs-container",g.tabList),children:[(0,y.jsx)(b,{...n,...e}),(0,y.jsx)(f,{...n,...e})]})}function w(e){const n=(0,p.A)();return(0,y.jsx)(v,{...e,children:h(e.children)},String(n))}},5330:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png"},9175:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png"},4466:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png"},7017:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png"},3203:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png"},2725:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png"},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var i=s(6540);const t={},r=i.createContext(t);function l(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9225ae5e.3d922bec.js b/assets/js/9225ae5e.8e820564.js similarity index 99% rename from assets/js/9225ae5e.3d922bec.js rename to assets/js/9225ae5e.8e820564.js index f6cd5215b..918eeffc7 100644 --- a/assets/js/9225ae5e.3d922bec.js +++ b/assets/js/9225ae5e.8e820564.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[853],{4400:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>x,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>t,toc:()=>a});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"eth namespace",sidebar_label:"eth",sidebar_position:3},h=void 0,t={id:"interacting/json-rpc-ns/eth",title:"eth namespace",description:"eth_blobBaseFee",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/eth.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/eth",permalink:"/1.27.0/interacting/json-rpc-ns/eth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/eth.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"eth namespace",sidebar_label:"eth",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"debug",permalink:"/1.27.0/interacting/json-rpc-ns/debug"},next:{title:"net",permalink:"/1.27.0/interacting/json-rpc-ns/net"}},x={},a=[{value:"eth_blobBaseFee",id:"eth_blobbasefee",level:3},{value:"eth_blockNumber",id:"eth_blocknumber",level:3},{value:"eth_call",id:"eth_call",level:3},{value:"eth_chainId",id:"eth_chainid",level:3},{value:"eth_createAccessList",id:"eth_createaccesslist",level:3},{value:"eth_estimateGas",id:"eth_estimategas",level:3},{value:"eth_feeHistory",id:"eth_feehistory",level:3},{value:"eth_gasPrice",id:"eth_gasprice",level:3},{value:"eth_getAccount",id:"eth_getaccount",level:3},{value:"eth_getBalance",id:"eth_getbalance",level:3},{value:"eth_getBlockByHash",id:"eth_getblockbyhash",level:3},{value:"eth_getBlockByNumber",id:"eth_getblockbynumber",level:3},{value:"eth_getBlockReceipts",id:"eth_getblockreceipts",level:3},{value:"eth_getBlockTransactionCountByHash",id:"eth_getblocktransactioncountbyhash",level:3},{value:"eth_getBlockTransactionCountByNumber",id:"eth_getblocktransactioncountbynumber",level:3},{value:"eth_getCode",id:"eth_getcode",level:3},{value:"eth_getFilterChanges",id:"eth_getfilterchanges",level:3},{value:"eth_getFilterLogs",id:"eth_getfilterlogs",level:3},{value:"eth_getLogs",id:"eth_getlogs",level:3},{value:"eth_getProof",id:"eth_getproof",level:3},{value:"eth_getStorageAt",id:"eth_getstorageat",level:3},{value:"eth_getTransactionByBlockHashAndIndex",id:"eth_gettransactionbyblockhashandindex",level:3},{value:"eth_getTransactionByBlockNumberAndIndex",id:"eth_gettransactionbyblocknumberandindex",level:3},{value:"eth_getTransactionByHash",id:"eth_gettransactionbyhash",level:3},{value:"eth_getTransactionCount",id:"eth_gettransactioncount",level:3},{value:"eth_getTransactionReceipt",id:"eth_gettransactionreceipt",level:3},{value:"eth_getUncleByBlockHashAndIndex",id:"eth_getunclebyblockhashandindex",level:3},{value:"eth_getUncleByBlockNumberAndIndex",id:"eth_getunclebyblocknumberandindex",level:3},{value:"eth_getUncleCountByBlockHash",id:"eth_getunclecountbyblockhash",level:3},{value:"eth_getUncleCountByBlockNumber",id:"eth_getunclecountbyblocknumber",level:3},{value:"eth_newBlockFilter",id:"eth_newblockfilter",level:3},{value:"eth_newFilter",id:"eth_newfilter",level:3},{value:"eth_newPendingTransactionFilter",id:"eth_newpendingtransactionfilter",level:3},{value:"eth_pendingTransactions",id:"eth_pendingtransactions",level:3},{value:"eth_protocolVersion",id:"eth_protocolversion",level:3},{value:"eth_sendRawTransaction",id:"eth_sendrawtransaction",level:3},{value:"eth_sendTransaction",id:"eth_sendtransaction",level:3},{value:"eth_subscribe",id:"eth_subscribe",level:3},{value:"Subscription topics",id:"subscription-topics",level:4},{value:"newHeads",id:"newheads",level:5},{value:"logs",id:"logs",level:5},{value:"newPendingTransactions",id:"newpendingtransactions",level:5},{value:"droppedPendingTransactions",id:"droppedpendingtransactions",level:5},{value:"syncing",id:"syncing",level:5},{value:"eth_syncing",id:"eth_syncing",level:3},{value:"eth_uninstallFilter",id:"eth_uninstallfilter",level:3},{value:"eth_unsubscribe",id:"eth_unsubscribe",level:3}];function j(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h3:"h3",h4:"h4",h5:"h5",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"eth_blobbasefee",children:"eth_blobBaseFee"}),"\n",(0,r.jsx)(n.p,{children:"Returns the base fee per blob gas in wei"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blobBaseFee",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_blocknumber",children:"eth_blockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns current block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blockNumber",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_call",children:"eth_call"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_call",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_chainid",children:"eth_chainId"}),"\n",(0,r.jsx)(n.p,{children:"Returns ChainID"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_chainId",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_createaccesslist",children:"eth_createAccessList"}),"\n",(0,r.jsxs)(n.p,{children:["Creates an ",(0,r.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-2930",children:"EIP2930"})," type AccessList for the given transaction"]}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"optimize"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_createAccessList",\n "params": [transactionCall, blockParameter, optimize]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_estimategas",children:"eth_estimateGas"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call and returns gas used (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_estimateGas",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_feehistory",children:"eth_feeHistory"}),"\n",(0,r.jsx)(n.p,{children:"Returns block fee history."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockCount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"newestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"rewardPercentiles"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_feeHistory",\n "params": [blockCount, newestBlock, rewardPercentiles]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerBlobGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oldestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"reward"}),": array of array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gasprice",children:"eth_gasPrice"}),"\n",(0,r.jsx)(n.p,{children:"Returns miner's gas price"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_gasPrice",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getaccount",children:"eth_getAccount"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves Accounts via Address and Blocknumber"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getAccount",\n "params": [accountAddress, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getbalance",children:"eth_getBalance"}),"\n",(0,r.jsx)(n.p,{children:"Returns account balance"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBalance",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbyhash",children:"eth_getBlockByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByHash",\n "params": [blockHash, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbynumber",children:"eth_getBlockByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByNumber",\n "params": [blockParameter, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockreceipts",children:"eth_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbyhash",children:"eth_getBlockTransactionCountByHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbynumber",children:"eth_getBlockTransactionCountByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getcode",children:"eth_getCode"}),"\n",(0,r.jsx)(n.p,{children:"Returns account code at given address and block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getCode",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterchanges",children:"eth_getFilterChanges"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterChanges",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterlogs",children:"eth_getFilterLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterLogs",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getlogs",children:"eth_getLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads logs"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getLogs",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getproof",children:"eth_getProof"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"https://github.com/ethereum/EIPs/issues/1186",children:"https://github.com/ethereum/EIPs/issues/1186"})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"hashRate"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getProof",\n "params": [accountAddress, hashRate, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageProofs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hasValue"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"span"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getstorageat",children:"eth_getStorageAt"}),"\n",(0,r.jsx)(n.p,{children:"Returns storage data at address. storage_index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getStorageAt",\n "params": [address, positionIndex, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblockhashandindex",children:"eth_getTransactionByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block hash and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockHashAndIndex",\n "params": [blockHash, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblocknumberandindex",children:"eth_getTransactionByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block number and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyhash",children:"eth_getTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactioncount",children:"eth_getTransactionCount"}),"\n",(0,r.jsx)(n.p,{children:"Returns account nonce (number of trnsactions from the account since genesis) at the given block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionCount",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionreceipt",children:"eth_getTransactionReceipt"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction receipt by tx hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionReceipt",\n "params": [txHashData]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblockhashandindex",children:"eth_getUncleByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block hash and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockHashAndIndex",\n "params": [blockHashData, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblocknumberandindex",children:"eth_getUncleByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block number and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblockhash",children:"eth_getUncleCountByBlockHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblocknumber",children:"eth_getUncleCountByBlockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newblockfilter",children:"eth_newBlockFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newBlockFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newfilter",children:"eth_newFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newFilter",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newpendingtransactionfilter",children:"eth_newPendingTransactionFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newPendingTransactionFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_pendingtransactions",children:"eth_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns the pending transactions list"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_pendingTransactions",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_protocolversion",children:"eth_protocolVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns ETH protocol version"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_protocolVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendrawtransaction",children:"eth_sendRawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a raw transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transaction"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendRawTransaction",\n "params": [transaction]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendtransaction",children:"eth_sendTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rpcTx"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendTransaction",\n "params": [rpcTx]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_subscribe",children:"eth_subscribe"}),"\n",(0,r.jsx)(n.p,{children:"Starts a subscription to a particular event over WebSockets. A JSON-RPC notification with event payload and subscription id is sent to a client for every event matching the subscription topic."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"subscriptionName"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_subscribe",\n "params": [subscriptionName, args]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": "0x..." // subscription id\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]}),(0,r.jsxs)(c.A,{value:"notif",label:"Notification",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "method": "eth_subscription",\n "params": {\n "subscription": "0x...", // subscription id\n "result": payload\n }\n}\n'})}),(0,r.jsxs)(n.p,{children:["See specific subcription topic below for ",(0,r.jsx)(n.code,{children:"payload"})," details."]})]})]}),"\n",(0,r.jsx)(n.h4,{id:"subscription-topics",children:"Subscription topics"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newheads",children:"newHeads"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming block headers. Fires a notification each time a new header is appended to the chain, including chain reorganizations."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"logs",children:"logs"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to incoming logs filtered by the given options. In case of a chain reorganization, previously sent logs on the old chain will be re-sent with the ",(0,r.jsx)(n.code,{children:"removed"})," field set to ",(0,r.jsx)(n.code,{children:"true"}),"."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newpendingtransactions",children:"newPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming pending transactions. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"droppedpendingtransactions",children:"droppedPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to transactions evicted from the transaction pool. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"syncing",children:"syncing"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to syncing events. Returns ",(0,r.jsx)(n.code,{children:"false"})," (once) if the node is synced or an object with statistics (once) when the node starts syncing."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),":"]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["if synced: ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:["if syncing: ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_syncing",children:"eth_syncing"}),"\n",(0,r.jsx)(n.p,{children:"Returns syncing status"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_syncing",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"syncMode"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_uninstallfilter",children:"eth_uninstallFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_uninstallFilter",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_unsubscribe",children:"eth_unsubscribe"}),"\n",(0,r.jsx)(n.p,{children:"Unsubscribes from a subscription."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subscriptionId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_unsubscribe",\n "params": [subscriptionId]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})," (",(0,r.jsx)(n.code,{children:"true"})," if unsubscribed successfully; otherwise, ",(0,r.jsx)(n.code,{children:"false"}),")"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(j,{...e})}):j(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),t=s(1682),x=s(679);function a(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function j(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return a(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,t.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=j(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[t,a]=g({queryString:s,groupId:i}),[m,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,x.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=t??m;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),a(e),u(e)}),[a,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:t}=(0,l.a_)(),x=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(t(n),c(i))},a=e=>{let n=null;switch(e.key){case"Enter":x(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:a,onClick:x,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,u.A)();return(0,b.jsx)(y,{...e,children:a(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[853],{4400:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>x,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>t,toc:()=>a});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"eth namespace",sidebar_label:"eth",sidebar_position:3},h=void 0,t={id:"interacting/json-rpc-ns/eth",title:"eth namespace",description:"eth_blobBaseFee",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/eth.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/eth",permalink:"/1.27.0/interacting/json-rpc-ns/eth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/eth.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"eth namespace",sidebar_label:"eth",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"debug",permalink:"/1.27.0/interacting/json-rpc-ns/debug"},next:{title:"net",permalink:"/1.27.0/interacting/json-rpc-ns/net"}},x={},a=[{value:"eth_blobBaseFee",id:"eth_blobbasefee",level:3},{value:"eth_blockNumber",id:"eth_blocknumber",level:3},{value:"eth_call",id:"eth_call",level:3},{value:"eth_chainId",id:"eth_chainid",level:3},{value:"eth_createAccessList",id:"eth_createaccesslist",level:3},{value:"eth_estimateGas",id:"eth_estimategas",level:3},{value:"eth_feeHistory",id:"eth_feehistory",level:3},{value:"eth_gasPrice",id:"eth_gasprice",level:3},{value:"eth_getAccount",id:"eth_getaccount",level:3},{value:"eth_getBalance",id:"eth_getbalance",level:3},{value:"eth_getBlockByHash",id:"eth_getblockbyhash",level:3},{value:"eth_getBlockByNumber",id:"eth_getblockbynumber",level:3},{value:"eth_getBlockReceipts",id:"eth_getblockreceipts",level:3},{value:"eth_getBlockTransactionCountByHash",id:"eth_getblocktransactioncountbyhash",level:3},{value:"eth_getBlockTransactionCountByNumber",id:"eth_getblocktransactioncountbynumber",level:3},{value:"eth_getCode",id:"eth_getcode",level:3},{value:"eth_getFilterChanges",id:"eth_getfilterchanges",level:3},{value:"eth_getFilterLogs",id:"eth_getfilterlogs",level:3},{value:"eth_getLogs",id:"eth_getlogs",level:3},{value:"eth_getProof",id:"eth_getproof",level:3},{value:"eth_getStorageAt",id:"eth_getstorageat",level:3},{value:"eth_getTransactionByBlockHashAndIndex",id:"eth_gettransactionbyblockhashandindex",level:3},{value:"eth_getTransactionByBlockNumberAndIndex",id:"eth_gettransactionbyblocknumberandindex",level:3},{value:"eth_getTransactionByHash",id:"eth_gettransactionbyhash",level:3},{value:"eth_getTransactionCount",id:"eth_gettransactioncount",level:3},{value:"eth_getTransactionReceipt",id:"eth_gettransactionreceipt",level:3},{value:"eth_getUncleByBlockHashAndIndex",id:"eth_getunclebyblockhashandindex",level:3},{value:"eth_getUncleByBlockNumberAndIndex",id:"eth_getunclebyblocknumberandindex",level:3},{value:"eth_getUncleCountByBlockHash",id:"eth_getunclecountbyblockhash",level:3},{value:"eth_getUncleCountByBlockNumber",id:"eth_getunclecountbyblocknumber",level:3},{value:"eth_newBlockFilter",id:"eth_newblockfilter",level:3},{value:"eth_newFilter",id:"eth_newfilter",level:3},{value:"eth_newPendingTransactionFilter",id:"eth_newpendingtransactionfilter",level:3},{value:"eth_pendingTransactions",id:"eth_pendingtransactions",level:3},{value:"eth_protocolVersion",id:"eth_protocolversion",level:3},{value:"eth_sendRawTransaction",id:"eth_sendrawtransaction",level:3},{value:"eth_sendTransaction",id:"eth_sendtransaction",level:3},{value:"eth_subscribe",id:"eth_subscribe",level:3},{value:"Subscription topics",id:"subscription-topics",level:4},{value:"newHeads",id:"newheads",level:5},{value:"logs",id:"logs",level:5},{value:"newPendingTransactions",id:"newpendingtransactions",level:5},{value:"droppedPendingTransactions",id:"droppedpendingtransactions",level:5},{value:"syncing",id:"syncing",level:5},{value:"eth_syncing",id:"eth_syncing",level:3},{value:"eth_uninstallFilter",id:"eth_uninstallfilter",level:3},{value:"eth_unsubscribe",id:"eth_unsubscribe",level:3}];function j(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h3:"h3",h4:"h4",h5:"h5",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"eth_blobbasefee",children:"eth_blobBaseFee"}),"\n",(0,r.jsx)(n.p,{children:"Returns the base fee per blob gas in wei"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blobBaseFee",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_blocknumber",children:"eth_blockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns current block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blockNumber",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_call",children:"eth_call"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_call",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_chainid",children:"eth_chainId"}),"\n",(0,r.jsx)(n.p,{children:"Returns ChainID"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_chainId",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_createaccesslist",children:"eth_createAccessList"}),"\n",(0,r.jsxs)(n.p,{children:["Creates an ",(0,r.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-2930",children:"EIP2930"})," type AccessList for the given transaction"]}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"optimize"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_createAccessList",\n "params": [transactionCall, blockParameter, optimize]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_estimategas",children:"eth_estimateGas"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call and returns gas used (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_estimateGas",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_feehistory",children:"eth_feeHistory"}),"\n",(0,r.jsx)(n.p,{children:"Returns block fee history."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockCount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"newestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"rewardPercentiles"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_feeHistory",\n "params": [blockCount, newestBlock, rewardPercentiles]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerBlobGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oldestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"reward"}),": array of array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gasprice",children:"eth_gasPrice"}),"\n",(0,r.jsx)(n.p,{children:"Returns miner's gas price"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_gasPrice",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getaccount",children:"eth_getAccount"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves Accounts via Address and Blocknumber"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getAccount",\n "params": [accountAddress, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getbalance",children:"eth_getBalance"}),"\n",(0,r.jsx)(n.p,{children:"Returns account balance"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBalance",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbyhash",children:"eth_getBlockByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByHash",\n "params": [blockHash, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbynumber",children:"eth_getBlockByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByNumber",\n "params": [blockParameter, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockreceipts",children:"eth_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbyhash",children:"eth_getBlockTransactionCountByHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbynumber",children:"eth_getBlockTransactionCountByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getcode",children:"eth_getCode"}),"\n",(0,r.jsx)(n.p,{children:"Returns account code at given address and block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getCode",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterchanges",children:"eth_getFilterChanges"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterChanges",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterlogs",children:"eth_getFilterLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterLogs",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getlogs",children:"eth_getLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads logs"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getLogs",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getproof",children:"eth_getProof"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"https://github.com/ethereum/EIPs/issues/1186",children:"https://github.com/ethereum/EIPs/issues/1186"})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"hashRate"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getProof",\n "params": [accountAddress, hashRate, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageProofs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hasValue"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"span"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getstorageat",children:"eth_getStorageAt"}),"\n",(0,r.jsx)(n.p,{children:"Returns storage data at address. storage_index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getStorageAt",\n "params": [address, positionIndex, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblockhashandindex",children:"eth_getTransactionByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block hash and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockHashAndIndex",\n "params": [blockHash, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblocknumberandindex",children:"eth_getTransactionByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block number and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyhash",children:"eth_getTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactioncount",children:"eth_getTransactionCount"}),"\n",(0,r.jsx)(n.p,{children:"Returns account nonce (number of trnsactions from the account since genesis) at the given block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionCount",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionreceipt",children:"eth_getTransactionReceipt"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction receipt by tx hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionReceipt",\n "params": [txHashData]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblockhashandindex",children:"eth_getUncleByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block hash and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockHashAndIndex",\n "params": [blockHashData, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblocknumberandindex",children:"eth_getUncleByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block number and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblockhash",children:"eth_getUncleCountByBlockHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblocknumber",children:"eth_getUncleCountByBlockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newblockfilter",children:"eth_newBlockFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newBlockFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newfilter",children:"eth_newFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newFilter",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newpendingtransactionfilter",children:"eth_newPendingTransactionFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newPendingTransactionFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_pendingtransactions",children:"eth_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns the pending transactions list"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_pendingTransactions",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_protocolversion",children:"eth_protocolVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns ETH protocol version"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_protocolVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendrawtransaction",children:"eth_sendRawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a raw transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transaction"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendRawTransaction",\n "params": [transaction]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendtransaction",children:"eth_sendTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rpcTx"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendTransaction",\n "params": [rpcTx]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_subscribe",children:"eth_subscribe"}),"\n",(0,r.jsx)(n.p,{children:"Starts a subscription to a particular event over WebSockets. A JSON-RPC notification with event payload and subscription id is sent to a client for every event matching the subscription topic."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"subscriptionName"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_subscribe",\n "params": [subscriptionName, args]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": "0x..." // subscription id\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]}),(0,r.jsxs)(c.A,{value:"notif",label:"Notification",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "method": "eth_subscription",\n "params": {\n "subscription": "0x...", // subscription id\n "result": payload\n }\n}\n'})}),(0,r.jsxs)(n.p,{children:["See specific subcription topic below for ",(0,r.jsx)(n.code,{children:"payload"})," details."]})]})]}),"\n",(0,r.jsx)(n.h4,{id:"subscription-topics",children:"Subscription topics"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newheads",children:"newHeads"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming block headers. Fires a notification each time a new header is appended to the chain, including chain reorganizations."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"logs",children:"logs"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to incoming logs filtered by the given options. In case of a chain reorganization, previously sent logs on the old chain will be re-sent with the ",(0,r.jsx)(n.code,{children:"removed"})," field set to ",(0,r.jsx)(n.code,{children:"true"}),"."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newpendingtransactions",children:"newPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming pending transactions. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"droppedpendingtransactions",children:"droppedPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to transactions evicted from the transaction pool. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"syncing",children:"syncing"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to syncing events. Returns ",(0,r.jsx)(n.code,{children:"false"})," (once) if the node is synced or an object with statistics (once) when the node starts syncing."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),":"]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["if synced: ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:["if syncing: ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_syncing",children:"eth_syncing"}),"\n",(0,r.jsx)(n.p,{children:"Returns syncing status"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_syncing",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"syncMode"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_uninstallfilter",children:"eth_uninstallFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_uninstallFilter",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_unsubscribe",children:"eth_unsubscribe"}),"\n",(0,r.jsx)(n.p,{children:"Unsubscribes from a subscription."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subscriptionId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_unsubscribe",\n "params": [subscriptionId]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})," (",(0,r.jsx)(n.code,{children:"true"})," if unsubscribed successfully; otherwise, ",(0,r.jsx)(n.code,{children:"false"}),")"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(j,{...e})}):j(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),t=s(1682),x=s(679);function a(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function j(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return a(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,t.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=j(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[t,a]=g({queryString:s,groupId:i}),[m,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,x.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=t??m;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),a(e),u(e)}),[a,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:t}=(0,l.a_)(),x=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(t(n),c(i))},a=e=>{let n=null;switch(e.key){case"Enter":x(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:a,onClick:x,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,u.A)();return(0,b.jsx)(y,{...e,children:a(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/94981332.c658339d.js b/assets/js/94981332.f1367739.js similarity index 99% rename from assets/js/94981332.c658339d.js rename to assets/js/94981332.f1367739.js index da87f8374..ad48f403c 100644 --- a/assets/js/94981332.c658339d.js +++ b/assets/js/94981332.f1367739.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1620],{6602:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>t,frontMatter:()=>d,metadata:()=>a,toc:()=>x});var l=s(4848),r=s(8453),i=s(1470),c=s(9365);const d={title:"debug namespace",sidebar_label:"debug",sidebar_position:2},h=void 0,a={id:"interacting/json-rpc-ns/debug",title:"debug namespace",description:"debug_deleteChainSlice",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/debug.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/debug",permalink:"/interacting/json-rpc-ns/debug",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/debug.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"debug namespace",sidebar_label:"debug",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"clique",permalink:"/interacting/json-rpc-ns/clique"},next:{title:"eth",permalink:"/interacting/json-rpc-ns/eth"}},j={},x=[{value:"debug_deleteChainSlice",id:"debug_deletechainslice",level:3},{value:"debug_getBadBlocks",id:"debug_getbadblocks",level:3},{value:"debug_getBlockRlp",id:"debug_getblockrlp",level:3},{value:"debug_getBlockRlpByHash",id:"debug_getblockrlpbyhash",level:3},{value:"debug_getChainLevel",id:"debug_getchainlevel",level:3},{value:"debug_getConfigValue",id:"debug_getconfigvalue",level:3},{value:"debug_getRawBlock",id:"debug_getrawblock",level:3},{value:"debug_getRawHeader",id:"debug_getrawheader",level:3},{value:"debug_getRawReceipts",id:"debug_getrawreceipts",level:3},{value:"debug_getRawTransaction",id:"debug_getrawtransaction",level:3},{value:"debug_getSyncStage",id:"debug_getsyncstage",level:3},{value:"debug_insertReceipts",id:"debug_insertreceipts",level:3},{value:"debug_migrateReceipts",id:"debug_migratereceipts",level:3},{value:"debug_resetHead",id:"debug_resethead",level:3},{value:"debug_standardTraceBadBlockToFile",id:"debug_standardtracebadblocktofile",level:3},{value:"debug_standardTraceBlockToFile",id:"debug_standardtraceblocktofile",level:3},{value:"debug_traceBlock",id:"debug_traceblock",level:3},{value:"debug_traceBlockByHash",id:"debug_traceblockbyhash",level:3},{value:"debug_traceBlockByNumber",id:"debug_traceblockbynumber",level:3},{value:"debug_traceCall",id:"debug_tracecall",level:3},{value:"debug_traceTransaction",id:"debug_tracetransaction",level:3},{value:"debug_traceTransactionByBlockAndIndex",id:"debug_tracetransactionbyblockandindex",level:3},{value:"debug_traceTransactionByBlockhashAndIndex",id:"debug_tracetransactionbyblockhashandindex",level:3},{value:"debug_traceTransactionInBlockByHash",id:"debug_tracetransactioninblockbyhash",level:3},{value:"debug_traceTransactionInBlockByIndex",id:"debug_tracetransactioninblockbyindex",level:3}];function o(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h3,{id:"debug_deletechainslice",children:"debug_deleteChainSlice"}),"\n",(0,l.jsx)(n.p,{children:"Deletes a slice of a chain from the tree on all branches (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"startNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"force"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_deleteChainSlice",\n "params": [startNumber, force]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getbadblocks",children:"debug_getBadBlocks"}),"\n",(0,l.jsx)(n.p,{children:"Return list of invalid blocks."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBadBlocks",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"block"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"author"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"difficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"extraData"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasLimit"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"miner"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mixHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"signature"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"size"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stateRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"step"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timestamp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactions"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"uncles"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInGwei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInWei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"index"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"validatorIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"rlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlp",children:"debug_getBlockRlp"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlp",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlpbyhash",children:"debug_getBlockRlpByHash"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlpByHash",\n "params": [hash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getchainlevel",children:"debug_getChainLevel"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a representation of tree branches on a given chain level (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getChainLevel",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockInfos"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isFinalized"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"wasProcessed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasBlockOnMainChain"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getconfigvalue",children:"debug_getConfigValue"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves the Nethermind configuration value, e.g. JsonRpc.Enabled"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"category"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"name"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getConfigValue",\n "params": [category, name]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawblock",children:"debug_getRawBlock"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Block format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawBlock",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawheader",children:"debug_getRawHeader"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Header format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawHeader",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawreceipts",children:"debug_getRawReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Receipt format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawtransaction",children:"debug_getRawTransaction"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Transaction format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawTransaction",\n "params": [transactionHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getsyncstage",children:"debug_getSyncStage"}),"\n",(0,l.jsx)(n.p,{children:"Retrives Nethermind Sync Stage, With extra Metadata"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getSyncStage",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"currentStage"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_insertreceipts",children:"debug_insertReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Insert receipts for the block after verifying receipts root correctness."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsxs)(c.A,{value:"params",label:"Parameters",children:[(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"receiptForRpc"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"contractAddress"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logs"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"removed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"topics"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"root"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"status"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]})]}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_insertReceipts",\n "params": [blockParameter, receiptForRpc]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_migratereceipts",children:"debug_migrateReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Sets the block number up to which receipts will be migrated to (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_migrateReceipts",\n "params": [blockNumber]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_resethead",children:"debug_resetHead"}),"\n",(0,l.jsx)(n.p,{children:"Updates / resets head block - use only when the node got stuck due to DB / memory corruption (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_resetHead",\n "params": [blockHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtracebadblocktofile",children:"debug_standardTraceBadBlockToFile"}),"\n",(0,l.jsxs)(n.p,{children:["This method is similar to the ",(0,l.jsx)(n.code,{children:"debug_standardTraceBlockToFile"})," method, but can be used to obtain information about a block that has been rejected as invalid."]}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBadBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtraceblocktofile",children:"debug_standardTraceBlockToFile"}),"\n",(0,l.jsx)(n.p,{children:"Writes to a file the full stack trace of all invoked opcodes of the transaction specified (or all transactions if not specified) that was included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblock",children:"debug_traceBlock"}),"\n",(0,l.jsx)(n.p,{children:"Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlock",\n "params": [blockRlp, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbyhash",children:"debug_traceBlockByHash"}),"\n",(0,l.jsx)(n.p,{children:"Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the database."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByHash",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbynumber",children:"debug_traceBlockByNumber"}),"\n",(0,l.jsx)(n.p,{children:'Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block that is already present in the database.'}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByNumber",\n "params": [blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracecall",children:"debug_traceCall"}),"\n",(0,l.jsx)(n.p,{children:"This method lets you run an eth_call within the context of the given block execution using the final state of parent block as the base. The block can be specified either by hash or by number. It takes the same input object as a eth_call. It returns the same output as debug_traceTransaction."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"call"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"accessList"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chainId"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"input"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isSystemTx"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mint"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"r"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"s"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sourceHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"v"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"yParity"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceCall",\n "params": [call, blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransaction",children:"debug_traceTransaction"}),"\n",(0,l.jsx)(n.p,{children:"This 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."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransaction",\n "params": [transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockandindex",children:"debug_traceTransactionByBlockAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockAndIndex",\n "params": [blockParameter, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockhashandindex",children:"debug_traceTransactionByBlockhashAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockhashAndIndex",\n "params": [blockHash, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyhash",children:"debug_traceTransactionInBlockByHash"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByHash",\n "params": [blockRlp, transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyindex",children:"debug_traceTransactionInBlockByIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByIndex",\n "params": [blockRlp, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function t(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(o,{...e})}):o(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var l=s(4164);const r={tabItem:"tabItem_Ymn6"};var i=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,l.A)(r.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var l=s(6540),r=s(4164),i=s(3104),c=s(6347),d=s(205),h=s(7485),a=s(1682),j=s(679);function x(e){return l.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,l.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function o(e){const{values:n,children:s}=e;return(0,l.useMemo)((()=>{const e=n??function(e){return x(e).map((e=>{let{props:{value:n,label:s,attributes:l,default:r}}=e;return{value:n,label:s,attributes:l,default:r}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function t(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const r=(0,c.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(i),(0,l.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,i=o(e),[c,h]=(0,l.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!t({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const l=s.find((e=>e.default))??s[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:n,tabValues:i}))),[a,x]=u({queryString:s,groupId:r}),[m,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,j.Dv)(s);return[r,(0,l.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:r}),b=(()=>{const e=a??m;return t({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{b&&h(b)}),[b]);return{selectedValue:c,selectValue:(0,l.useCallback)((e=>{if(!t({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);h(e),x(e),g(e)}),[x,g,i]),tabValues:i}}var g=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var p=s(4848);function f(e){let{className:n,block:s,selectedValue:l,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),r=d[s].value;r!==l&&(a(n),c(r))},x=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,p.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,p.jsx)("li",{role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,ref:e=>h.push(e),onKeyDown:x,onClick:j,...i,className:(0,r.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":l===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===i));return e?(0,l.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,p.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,l.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=m(e);return(0,p.jsxs)("div",{className:(0,r.A)("tabs-container",b.tabList),children:[(0,p.jsx)(f,{...n,...e}),(0,p.jsx)(v,{...n,...e})]})}function k(e){const n=(0,g.A)();return(0,p.jsx)(y,{...e,children:x(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var l=s(6540);const r={},i=l.createContext(r);function c(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1620],{6602:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>t,frontMatter:()=>d,metadata:()=>a,toc:()=>x});var l=s(4848),r=s(8453),i=s(1470),c=s(9365);const d={title:"debug namespace",sidebar_label:"debug",sidebar_position:2},h=void 0,a={id:"interacting/json-rpc-ns/debug",title:"debug namespace",description:"debug_deleteChainSlice",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/debug.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/debug",permalink:"/interacting/json-rpc-ns/debug",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/debug.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"debug namespace",sidebar_label:"debug",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"clique",permalink:"/interacting/json-rpc-ns/clique"},next:{title:"eth",permalink:"/interacting/json-rpc-ns/eth"}},j={},x=[{value:"debug_deleteChainSlice",id:"debug_deletechainslice",level:3},{value:"debug_getBadBlocks",id:"debug_getbadblocks",level:3},{value:"debug_getBlockRlp",id:"debug_getblockrlp",level:3},{value:"debug_getBlockRlpByHash",id:"debug_getblockrlpbyhash",level:3},{value:"debug_getChainLevel",id:"debug_getchainlevel",level:3},{value:"debug_getConfigValue",id:"debug_getconfigvalue",level:3},{value:"debug_getRawBlock",id:"debug_getrawblock",level:3},{value:"debug_getRawHeader",id:"debug_getrawheader",level:3},{value:"debug_getRawReceipts",id:"debug_getrawreceipts",level:3},{value:"debug_getRawTransaction",id:"debug_getrawtransaction",level:3},{value:"debug_getSyncStage",id:"debug_getsyncstage",level:3},{value:"debug_insertReceipts",id:"debug_insertreceipts",level:3},{value:"debug_migrateReceipts",id:"debug_migratereceipts",level:3},{value:"debug_resetHead",id:"debug_resethead",level:3},{value:"debug_standardTraceBadBlockToFile",id:"debug_standardtracebadblocktofile",level:3},{value:"debug_standardTraceBlockToFile",id:"debug_standardtraceblocktofile",level:3},{value:"debug_traceBlock",id:"debug_traceblock",level:3},{value:"debug_traceBlockByHash",id:"debug_traceblockbyhash",level:3},{value:"debug_traceBlockByNumber",id:"debug_traceblockbynumber",level:3},{value:"debug_traceCall",id:"debug_tracecall",level:3},{value:"debug_traceTransaction",id:"debug_tracetransaction",level:3},{value:"debug_traceTransactionByBlockAndIndex",id:"debug_tracetransactionbyblockandindex",level:3},{value:"debug_traceTransactionByBlockhashAndIndex",id:"debug_tracetransactionbyblockhashandindex",level:3},{value:"debug_traceTransactionInBlockByHash",id:"debug_tracetransactioninblockbyhash",level:3},{value:"debug_traceTransactionInBlockByIndex",id:"debug_tracetransactioninblockbyindex",level:3}];function o(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h3,{id:"debug_deletechainslice",children:"debug_deleteChainSlice"}),"\n",(0,l.jsx)(n.p,{children:"Deletes a slice of a chain from the tree on all branches (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"startNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"force"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_deleteChainSlice",\n "params": [startNumber, force]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getbadblocks",children:"debug_getBadBlocks"}),"\n",(0,l.jsx)(n.p,{children:"Return list of invalid blocks."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBadBlocks",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"block"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"author"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"difficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"extraData"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasLimit"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"miner"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mixHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"signature"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"size"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stateRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"step"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timestamp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactions"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"uncles"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInGwei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInWei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"index"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"validatorIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"rlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlp",children:"debug_getBlockRlp"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlp",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlpbyhash",children:"debug_getBlockRlpByHash"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlpByHash",\n "params": [hash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getchainlevel",children:"debug_getChainLevel"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a representation of tree branches on a given chain level (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getChainLevel",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockInfos"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isFinalized"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"wasProcessed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasBlockOnMainChain"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getconfigvalue",children:"debug_getConfigValue"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves the Nethermind configuration value, e.g. JsonRpc.Enabled"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"category"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"name"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getConfigValue",\n "params": [category, name]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawblock",children:"debug_getRawBlock"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Block format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawBlock",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawheader",children:"debug_getRawHeader"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Header format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawHeader",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawreceipts",children:"debug_getRawReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Receipt format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawtransaction",children:"debug_getRawTransaction"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Transaction format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawTransaction",\n "params": [transactionHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getsyncstage",children:"debug_getSyncStage"}),"\n",(0,l.jsx)(n.p,{children:"Retrives Nethermind Sync Stage, With extra Metadata"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getSyncStage",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"currentStage"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_insertreceipts",children:"debug_insertReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Insert receipts for the block after verifying receipts root correctness."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsxs)(c.A,{value:"params",label:"Parameters",children:[(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"receiptForRpc"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"contractAddress"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logs"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"removed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"topics"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"root"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"status"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]})]}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_insertReceipts",\n "params": [blockParameter, receiptForRpc]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_migratereceipts",children:"debug_migrateReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Sets the block number up to which receipts will be migrated to (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_migrateReceipts",\n "params": [blockNumber]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_resethead",children:"debug_resetHead"}),"\n",(0,l.jsx)(n.p,{children:"Updates / resets head block - use only when the node got stuck due to DB / memory corruption (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_resetHead",\n "params": [blockHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtracebadblocktofile",children:"debug_standardTraceBadBlockToFile"}),"\n",(0,l.jsxs)(n.p,{children:["This method is similar to the ",(0,l.jsx)(n.code,{children:"debug_standardTraceBlockToFile"})," method, but can be used to obtain information about a block that has been rejected as invalid."]}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBadBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtraceblocktofile",children:"debug_standardTraceBlockToFile"}),"\n",(0,l.jsx)(n.p,{children:"Writes to a file the full stack trace of all invoked opcodes of the transaction specified (or all transactions if not specified) that was included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblock",children:"debug_traceBlock"}),"\n",(0,l.jsx)(n.p,{children:"Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlock",\n "params": [blockRlp, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbyhash",children:"debug_traceBlockByHash"}),"\n",(0,l.jsx)(n.p,{children:"Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the database."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByHash",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbynumber",children:"debug_traceBlockByNumber"}),"\n",(0,l.jsx)(n.p,{children:'Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block that is already present in the database.'}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByNumber",\n "params": [blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracecall",children:"debug_traceCall"}),"\n",(0,l.jsx)(n.p,{children:"This method lets you run an eth_call within the context of the given block execution using the final state of parent block as the base. The block can be specified either by hash or by number. It takes the same input object as a eth_call. It returns the same output as debug_traceTransaction."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"call"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"accessList"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chainId"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"input"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isSystemTx"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mint"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"r"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"s"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sourceHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"v"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"yParity"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceCall",\n "params": [call, blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransaction",children:"debug_traceTransaction"}),"\n",(0,l.jsx)(n.p,{children:"This 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."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransaction",\n "params": [transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockandindex",children:"debug_traceTransactionByBlockAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockAndIndex",\n "params": [blockParameter, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockhashandindex",children:"debug_traceTransactionByBlockhashAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockhashAndIndex",\n "params": [blockHash, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyhash",children:"debug_traceTransactionInBlockByHash"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByHash",\n "params": [blockRlp, transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyindex",children:"debug_traceTransactionInBlockByIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByIndex",\n "params": [blockRlp, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function t(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(o,{...e})}):o(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var l=s(4164);const r={tabItem:"tabItem_Ymn6"};var i=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,l.A)(r.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var l=s(6540),r=s(4164),i=s(3104),c=s(6347),d=s(205),h=s(7485),a=s(1682),j=s(679);function x(e){return l.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,l.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function o(e){const{values:n,children:s}=e;return(0,l.useMemo)((()=>{const e=n??function(e){return x(e).map((e=>{let{props:{value:n,label:s,attributes:l,default:r}}=e;return{value:n,label:s,attributes:l,default:r}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function t(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const r=(0,c.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(i),(0,l.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,i=o(e),[c,h]=(0,l.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!t({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const l=s.find((e=>e.default))??s[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:n,tabValues:i}))),[a,x]=u({queryString:s,groupId:r}),[m,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,j.Dv)(s);return[r,(0,l.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:r}),b=(()=>{const e=a??m;return t({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{b&&h(b)}),[b]);return{selectedValue:c,selectValue:(0,l.useCallback)((e=>{if(!t({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);h(e),x(e),g(e)}),[x,g,i]),tabValues:i}}var g=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var p=s(4848);function f(e){let{className:n,block:s,selectedValue:l,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),r=d[s].value;r!==l&&(a(n),c(r))},x=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,p.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,p.jsx)("li",{role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,ref:e=>h.push(e),onKeyDown:x,onClick:j,...i,className:(0,r.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":l===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===i));return e?(0,l.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,p.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,l.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=m(e);return(0,p.jsxs)("div",{className:(0,r.A)("tabs-container",b.tabList),children:[(0,p.jsx)(f,{...n,...e}),(0,p.jsx)(v,{...n,...e})]})}function k(e){const n=(0,g.A)();return(0,p.jsx)(y,{...e,children:x(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var l=s(6540);const r={},i=l.createContext(r);function c(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/94a9fdf0.5d8dcb7d.js b/assets/js/94a9fdf0.1c532876.js similarity index 99% rename from assets/js/94a9fdf0.5d8dcb7d.js rename to assets/js/94a9fdf0.1c532876.js index 2a21de7dd..79b5f9801 100644 --- a/assets/js/94a9fdf0.5d8dcb7d.js +++ b/assets/js/94a9fdf0.1c532876.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3382],{2427:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>l,frontMatter:()=>o,metadata:()=>c,toc:()=>h});var s=t(4848),i=t(8453);const o={title:"Consensus clients",sidebar_position:3},r=void 0,c={id:"get-started/consensus-clients",title:"Consensus clients",description:"Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.",source:"@site/versioned_docs/version-1.26.0/get-started/consensus-clients.md",sourceDirName:"get-started",slug:"/get-started/consensus-clients",permalink:"/1.26.0/get-started/consensus-clients",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/get-started/consensus-clients.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"Consensus clients",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Installing Nethermind",permalink:"/1.26.0/get-started/installing-nethermind"},next:{title:"Migrating from Geth",permalink:"/1.26.0/get-started/migrating-from-geth"}},a={},h=[{value:"Choosing a consensus client",id:"choosing-a-consensus-client",level:2},{value:"Configuring JSON-RPC interface",id:"configuring-json-rpc-interface",level:2},{value:"Running the consensus client",id:"running-the-consensus-client",level:2},{value:"Grandine",id:"grandine",level:3},{value:"Lighthouse",id:"lighthouse",level:3},{value:"Lodestar",id:"lodestar",level:3},{value:"Nimbus",id:"nimbus",level:3},{value:"Prysm",id:"prysm",level:3},{value:"Teku",id:"teku",level:3},{value:"Running Nethermind",id:"running-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.\nThe Merge changed how operators run nodes on the Ethereum blockchain. A node now needs two clients that work together as a pair. In addition to the ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#execution-client",children:"execution client"})," (e.g., Nethermind), you need a ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#consensus-client",children:"consensus client"})," that connects to the consensus layer and runs the PoS algorithm. This guide shows how to run an Ethereum node with Nethermind and a consensus client of your choice."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["An easy way to run both consensus and execution clients is with ",(0,s.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"}),". Sedge is a setup tool for PoS validators and nodes that runs on Linux and macOS."]})}),"\n",(0,s.jsx)(n.h2,{id:"choosing-a-consensus-client",children:"Choosing a consensus client"}),"\n",(0,s.jsx)(n.p,{children:"On the consensus layer, there are 5 client implementations to choose from. Though all consensus clients are great, check them out yourself to find the one best suited to your needs."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku"})}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.p,{children:["We urge you to take ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/client-diversity",children:"client diversity"})," into consideration when choosing your consensus client and avoid the majority clients."]})}),"\n",(0,s.jsx)(n.h2,{id:"configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"\n",(0,s.jsxs)(n.p,{children:["Execution and consensus clients communicate via an authenticated endpoint specified in Engine JSON-RPC API. In order to connect to a consensus client, the execution client must generate a ",(0,s.jsx)(n.a,{href:"https://jwt.io",children:"JWT"})," secret at a known path. Although the secret is generated automatically by Nethermind on startup at ",(0,s.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory, in some cases, you might need to do it yourself. You can generate one using ",(0,s.jsx)(n.a,{href:"https://www.openssl.org",children:"OpenSSL"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"openssl rand -hex 32 > path/to/jwt.hex\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"Since the JWT secret is simply a 64-character hex value, there are many other ways of generating it, including online resources. However, for security reasons, we recommend using OpenSSL."})}),"\n",(0,s.jsxs)(n.p,{children:["The generated JWT secret can be specified with the ",(0,s.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option. For more configuration options, see ",(0,s.jsx)(n.a,{href:"/1.26.0/interacting/json-rpc-server#engine-api",children:"Engine API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-the-consensus-client",children:"Running the consensus client"}),"\n",(0,s.jsxs)(n.p,{children:["This step assumes that you have already ",(0,s.jsx)(n.a,{href:"/1.26.0/get-started/installing-nethermind",children:"installed"})," Nethermind, the ",(0,s.jsx)(n.a,{href:"#choosing-a-consensus-client",children:"consensus client"})," of your choice, and, optionally, created the ",(0,s.jsx)(n.a,{href:"#configuring-json-rpc-interface",children:"JWT secret"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["As syncing from the scratch can take a very long time on some networks (up to several days), the commands below optionally use ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/#checkpoint-sync",children:"checkpoint sync"})," to speed up the process."]})}),"\n",(0,s.jsx)(n.h3,{id:"grandine",children:"Grandine"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"grandine \\\n --network mainnet \\\n --eth1-rpc-urls http://localhost:8551 \\\n --jwt-secret path/to/jwt.hex \\\n --checkpoint-sync-url https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Grandine on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lighthouse",children:"Lighthouse"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lighthouse bn \\\n --network mainnet \\\n --execution-endpoint http://localhost:8551 \\\n --execution-jwt path/to/jwt.hex \\\n --checkpoint-sync-url https://mainnet.checkpoint.sigp.io \\\n --http\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lighthouse on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lodestar",children:"Lodestar"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lodestar beacon \\\n --network mainnet \\\n --jwt-secret path/to/jwt.hex \\\n --checkpointSyncUrl https://beaconstate-mainnet.chainsafe.io\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lodestar on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpointSyncUrl"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"nimbus",children:"Nimbus"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./run-mainnet-beacon-node.sh \\\n --web3-url=http://127.0.0.1:8551 \\\n --jwt-secret=path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Numbus on Mainnet without checkpoint sync. For checkpoint sync, see ",(0,s.jsx)(n.a,{href:"https://nimbus.guide/trusted-node-sync.html",children:"Sync from a trusted node"}),". For other networks, see the ",(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus documentation"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"prysm",children:"Prysm"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./prysm.sh beacon-chain \\\n --mainnet \\\n --execution-endpoint=http://localhost:8551 \\\n --jwt-secret=path/to/jwt.hex \\\n --checkpoint-sync-url=https://beaconstate.ethstaker.cc \\\n --genesis-beacon-api-url=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Prysm on Mainnet. For other networks, replace the ",(0,s.jsx)(n.code,{children:"--mainnet"})," and set ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," and ",(0,s.jsx)(n.code,{children:"--genesis-beacon-api-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"teku",children:"Teku"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"teku \\\n --network=mainnet \\\n --ee-endpoint=http://localhost:8551 \\\n --ee-jwt-secret-file=path/to/jwt.hex \\\n --metrics-enabled=true \\\n --rest-api-enabled=true \\\n --initial-state=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Teku on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--initial-state"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-nethermind",children:"Running Nethermind"}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsx)(n.p,{children:"The consensus client must be running before you start Nethermind."})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Nethermind on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"-c"})," option accordingly. For more info, see ",(0,s.jsx)(n.a,{href:"/1.26.0/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3382],{2427:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>l,frontMatter:()=>o,metadata:()=>c,toc:()=>h});var s=t(4848),i=t(8453);const o={title:"Consensus clients",sidebar_position:3},r=void 0,c={id:"get-started/consensus-clients",title:"Consensus clients",description:"Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.",source:"@site/versioned_docs/version-1.26.0/get-started/consensus-clients.md",sourceDirName:"get-started",slug:"/get-started/consensus-clients",permalink:"/1.26.0/get-started/consensus-clients",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/get-started/consensus-clients.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"Consensus clients",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Installing Nethermind",permalink:"/1.26.0/get-started/installing-nethermind"},next:{title:"Migrating from Geth",permalink:"/1.26.0/get-started/migrating-from-geth"}},a={},h=[{value:"Choosing a consensus client",id:"choosing-a-consensus-client",level:2},{value:"Configuring JSON-RPC interface",id:"configuring-json-rpc-interface",level:2},{value:"Running the consensus client",id:"running-the-consensus-client",level:2},{value:"Grandine",id:"grandine",level:3},{value:"Lighthouse",id:"lighthouse",level:3},{value:"Lodestar",id:"lodestar",level:3},{value:"Nimbus",id:"nimbus",level:3},{value:"Prysm",id:"prysm",level:3},{value:"Teku",id:"teku",level:3},{value:"Running Nethermind",id:"running-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.\nThe Merge changed how operators run nodes on the Ethereum blockchain. A node now needs two clients that work together as a pair. In addition to the ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#execution-client",children:"execution client"})," (e.g., Nethermind), you need a ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#consensus-client",children:"consensus client"})," that connects to the consensus layer and runs the PoS algorithm. This guide shows how to run an Ethereum node with Nethermind and a consensus client of your choice."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["An easy way to run both consensus and execution clients is with ",(0,s.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"}),". Sedge is a setup tool for PoS validators and nodes that runs on Linux and macOS."]})}),"\n",(0,s.jsx)(n.h2,{id:"choosing-a-consensus-client",children:"Choosing a consensus client"}),"\n",(0,s.jsx)(n.p,{children:"On the consensus layer, there are 5 client implementations to choose from. Though all consensus clients are great, check them out yourself to find the one best suited to your needs."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku"})}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.p,{children:["We urge you to take ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/client-diversity",children:"client diversity"})," into consideration when choosing your consensus client and avoid the majority clients."]})}),"\n",(0,s.jsx)(n.h2,{id:"configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"\n",(0,s.jsxs)(n.p,{children:["Execution and consensus clients communicate via an authenticated endpoint specified in Engine JSON-RPC API. In order to connect to a consensus client, the execution client must generate a ",(0,s.jsx)(n.a,{href:"https://jwt.io",children:"JWT"})," secret at a known path. Although the secret is generated automatically by Nethermind on startup at ",(0,s.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory, in some cases, you might need to do it yourself. You can generate one using ",(0,s.jsx)(n.a,{href:"https://www.openssl.org",children:"OpenSSL"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"openssl rand -hex 32 > path/to/jwt.hex\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"Since the JWT secret is simply a 64-character hex value, there are many other ways of generating it, including online resources. However, for security reasons, we recommend using OpenSSL."})}),"\n",(0,s.jsxs)(n.p,{children:["The generated JWT secret can be specified with the ",(0,s.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option. For more configuration options, see ",(0,s.jsx)(n.a,{href:"/1.26.0/interacting/json-rpc-server#engine-api",children:"Engine API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-the-consensus-client",children:"Running the consensus client"}),"\n",(0,s.jsxs)(n.p,{children:["This step assumes that you have already ",(0,s.jsx)(n.a,{href:"/1.26.0/get-started/installing-nethermind",children:"installed"})," Nethermind, the ",(0,s.jsx)(n.a,{href:"#choosing-a-consensus-client",children:"consensus client"})," of your choice, and, optionally, created the ",(0,s.jsx)(n.a,{href:"#configuring-json-rpc-interface",children:"JWT secret"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["As syncing from the scratch can take a very long time on some networks (up to several days), the commands below optionally use ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/#checkpoint-sync",children:"checkpoint sync"})," to speed up the process."]})}),"\n",(0,s.jsx)(n.h3,{id:"grandine",children:"Grandine"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"grandine \\\n --network mainnet \\\n --eth1-rpc-urls http://localhost:8551 \\\n --jwt-secret path/to/jwt.hex \\\n --checkpoint-sync-url https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Grandine on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lighthouse",children:"Lighthouse"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lighthouse bn \\\n --network mainnet \\\n --execution-endpoint http://localhost:8551 \\\n --execution-jwt path/to/jwt.hex \\\n --checkpoint-sync-url https://mainnet.checkpoint.sigp.io \\\n --http\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lighthouse on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lodestar",children:"Lodestar"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lodestar beacon \\\n --network mainnet \\\n --jwt-secret path/to/jwt.hex \\\n --checkpointSyncUrl https://beaconstate-mainnet.chainsafe.io\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lodestar on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpointSyncUrl"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"nimbus",children:"Nimbus"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./run-mainnet-beacon-node.sh \\\n --web3-url=http://127.0.0.1:8551 \\\n --jwt-secret=path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Numbus on Mainnet without checkpoint sync. For checkpoint sync, see ",(0,s.jsx)(n.a,{href:"https://nimbus.guide/trusted-node-sync.html",children:"Sync from a trusted node"}),". For other networks, see the ",(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus documentation"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"prysm",children:"Prysm"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./prysm.sh beacon-chain \\\n --mainnet \\\n --execution-endpoint=http://localhost:8551 \\\n --jwt-secret=path/to/jwt.hex \\\n --checkpoint-sync-url=https://beaconstate.ethstaker.cc \\\n --genesis-beacon-api-url=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Prysm on Mainnet. For other networks, replace the ",(0,s.jsx)(n.code,{children:"--mainnet"})," and set ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," and ",(0,s.jsx)(n.code,{children:"--genesis-beacon-api-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"teku",children:"Teku"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"teku \\\n --network=mainnet \\\n --ee-endpoint=http://localhost:8551 \\\n --ee-jwt-secret-file=path/to/jwt.hex \\\n --metrics-enabled=true \\\n --rest-api-enabled=true \\\n --initial-state=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Teku on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--initial-state"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-nethermind",children:"Running Nethermind"}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsx)(n.p,{children:"The consensus client must be running before you start Nethermind."})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Nethermind on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"-c"})," option accordingly. For more info, see ",(0,s.jsx)(n.a,{href:"/1.26.0/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/94d697b3.4237d2e7.js b/assets/js/94d697b3.45c6c83d.js similarity index 99% rename from assets/js/94d697b3.4237d2e7.js rename to assets/js/94d697b3.45c6c83d.js index 109d20749..9906b1cde 100644 --- a/assets/js/94d697b3.4237d2e7.js +++ b/assets/js/94d697b3.45c6c83d.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6919],{3098:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),s=t(8453);const i={title:"JSON-RPC server",sidebar_position:0},r=void 0,c={id:"interacting/json-rpc-server",title:"JSON-RPC server",description:"Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over HTTP, WebSocket, and IPC socket transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the JSON-RPC configuration options.",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-server.md",sourceDirName:"interacting",slug:"/interacting/json-rpc-server",permalink:"/interacting/json-rpc-server",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-server.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"JSON-RPC server",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Private networks",permalink:"/fundamentals/private-networks"},next:{title:"admin",permalink:"/interacting/json-rpc-ns/admin"}},a={},d=[{value:"Transports",id:"transports",level:2},{value:"HTTP",id:"http",level:3},{value:"WebSocket",id:"websocket",level:3},{value:"IPC socket",id:"ipc-socket",level:3},{value:"Engine API",id:"engine-api",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over ",(0,o.jsx)(n.a,{href:"#http",children:"HTTP"}),", ",(0,o.jsx)(n.a,{href:"#websocket",children:"WebSocket"}),", and ",(0,o.jsx)(n.a,{href:"#ipc-socket",children:"IPC socket"})," transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the ",(0,o.jsx)(n.a,{href:"/fundamentals/configuration#jsonrpc",children:"JSON-RPC configuration options"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The JSON-RPC API methods are grouped into several categories (namespaces) depending on their purpose. All API method names are composed of the namespace and the actual method name in that namespace. For instance, the ",(0,o.jsx)(n.code,{children:"eth_call"})," method belongs to the ",(0,o.jsx)(n.code,{children:"eth"})," namespace. See the sidebar for all supported namespaces and methods."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["Not all of the JSON-RPC namespaces are enabled by default. Instead, they must be enabled explicitly with the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})," command line option. Otherwise, error code ",(0,o.jsx)(n.code,{children:"-32600"})," is returned. The enabled namespaces can be found in the configuration file specified with the ",(0,o.jsx)(n.code,{children:"--config"})," command line option."]})}),"\n",(0,o.jsx)(n.h2,{id:"transports",children:"Transports"}),"\n",(0,o.jsxs)(n.admonition,{type:"tip",children:[(0,o.jsx)(n.p,{children:"The right choice of transport depends on the specific use case."}),(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"HTTP is a familiar and idempotent transport that closes connections between requests and can, therefore, have lower overall overhead for a relatively low number of requests."}),"\n",(0,o.jsx)(n.li,{children:"WebSocket provides a continuous open channel that enables event subscriptions and streaming and handles large volumes of requests with more negligible per-message overhead."}),"\n",(0,o.jsx)(n.li,{children:"IPC is generally the most secure as it is limited to local interactions and cannot be exposed to external traffic. It can also be used for event subscriptions."}),"\n"]})]}),"\n",(0,o.jsx)(n.h3,{id:"http",children:"HTTP"}),"\n",(0,o.jsxs)(n.p,{children:["HTTP is the most widely used transport for Nethermind. To enable the HTTP server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Enabled true"})," command line option. By default, Nethermind uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8545"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Host"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.Port"})," command line options, respectively."]}),"\n",(0,o.jsx)(n.h3,{id:"websocket",children:"WebSocket"}),"\n",(0,o.jsxs)(n.p,{children:["The configuration of the WebSocket server follows the same pattern as the HTTP server. The WebSocket server is enabled automatically when the HTTP server is enabled and uses the same host and port. To disable the WebSocket server, use the ",(0,o.jsx)(n.code,{children:"--Init.WebSocketsEnabled false"})," command line option. To use a different a port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort"})," command line option."]}),"\n",(0,o.jsx)(n.h3,{id:"ipc-socket",children:"IPC socket"}),"\n",(0,o.jsxs)(n.p,{children:["Nethermind uses IPC based on Unix domain socket. To enable the IPC server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath path/to/ipc"})," command line option. If the ",(0,o.jsx)(n.code,{children:"path/to/ipc"})," doesn't exist, Nethermind creates one."]}),"\n",(0,o.jsx)(n.h2,{id:"engine-api",children:"Engine API"}),"\n",(0,o.jsx)(n.p,{children:"The Engine API is a set of RPC methods that enable communication between an execution and consensus client. The clients call these methods automatically when they need to exchange information. Engine API is enabled automatically by default and is not designed to be exposed to the user."}),"\n",(0,o.jsxs)(n.p,{children:["By default, the Engine API uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8551"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," command line options, respectively. For example, this can be useful when execution and consensus clients are on different machines."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["When the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," option is specified, the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," option must be specified as well."]})}),"\n",(0,o.jsxs)(n.p,{children:["The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at ",(0,o.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory. To use a different path, specify the ",(0,o.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option."]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var o=t(6540);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6919],{3098:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),s=t(8453);const i={title:"JSON-RPC server",sidebar_position:0},r=void 0,c={id:"interacting/json-rpc-server",title:"JSON-RPC server",description:"Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over HTTP, WebSocket, and IPC socket transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the JSON-RPC configuration options.",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-server.md",sourceDirName:"interacting",slug:"/interacting/json-rpc-server",permalink:"/interacting/json-rpc-server",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-server.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"JSON-RPC server",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Private networks",permalink:"/fundamentals/private-networks"},next:{title:"admin",permalink:"/interacting/json-rpc-ns/admin"}},a={},d=[{value:"Transports",id:"transports",level:2},{value:"HTTP",id:"http",level:3},{value:"WebSocket",id:"websocket",level:3},{value:"IPC socket",id:"ipc-socket",level:3},{value:"Engine API",id:"engine-api",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over ",(0,o.jsx)(n.a,{href:"#http",children:"HTTP"}),", ",(0,o.jsx)(n.a,{href:"#websocket",children:"WebSocket"}),", and ",(0,o.jsx)(n.a,{href:"#ipc-socket",children:"IPC socket"})," transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the ",(0,o.jsx)(n.a,{href:"/fundamentals/configuration#jsonrpc",children:"JSON-RPC configuration options"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The JSON-RPC API methods are grouped into several categories (namespaces) depending on their purpose. All API method names are composed of the namespace and the actual method name in that namespace. For instance, the ",(0,o.jsx)(n.code,{children:"eth_call"})," method belongs to the ",(0,o.jsx)(n.code,{children:"eth"})," namespace. See the sidebar for all supported namespaces and methods."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["Not all of the JSON-RPC namespaces are enabled by default. Instead, they must be enabled explicitly with the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})," command line option. Otherwise, error code ",(0,o.jsx)(n.code,{children:"-32600"})," is returned. The enabled namespaces can be found in the configuration file specified with the ",(0,o.jsx)(n.code,{children:"--config"})," command line option."]})}),"\n",(0,o.jsx)(n.h2,{id:"transports",children:"Transports"}),"\n",(0,o.jsxs)(n.admonition,{type:"tip",children:[(0,o.jsx)(n.p,{children:"The right choice of transport depends on the specific use case."}),(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"HTTP is a familiar and idempotent transport that closes connections between requests and can, therefore, have lower overall overhead for a relatively low number of requests."}),"\n",(0,o.jsx)(n.li,{children:"WebSocket provides a continuous open channel that enables event subscriptions and streaming and handles large volumes of requests with more negligible per-message overhead."}),"\n",(0,o.jsx)(n.li,{children:"IPC is generally the most secure as it is limited to local interactions and cannot be exposed to external traffic. It can also be used for event subscriptions."}),"\n"]})]}),"\n",(0,o.jsx)(n.h3,{id:"http",children:"HTTP"}),"\n",(0,o.jsxs)(n.p,{children:["HTTP is the most widely used transport for Nethermind. To enable the HTTP server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Enabled true"})," command line option. By default, Nethermind uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8545"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Host"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.Port"})," command line options, respectively."]}),"\n",(0,o.jsx)(n.h3,{id:"websocket",children:"WebSocket"}),"\n",(0,o.jsxs)(n.p,{children:["The configuration of the WebSocket server follows the same pattern as the HTTP server. The WebSocket server is enabled automatically when the HTTP server is enabled and uses the same host and port. To disable the WebSocket server, use the ",(0,o.jsx)(n.code,{children:"--Init.WebSocketsEnabled false"})," command line option. To use a different a port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort"})," command line option."]}),"\n",(0,o.jsx)(n.h3,{id:"ipc-socket",children:"IPC socket"}),"\n",(0,o.jsxs)(n.p,{children:["Nethermind uses IPC based on Unix domain socket. To enable the IPC server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath path/to/ipc"})," command line option. If the ",(0,o.jsx)(n.code,{children:"path/to/ipc"})," doesn't exist, Nethermind creates one."]}),"\n",(0,o.jsx)(n.h2,{id:"engine-api",children:"Engine API"}),"\n",(0,o.jsx)(n.p,{children:"The Engine API is a set of RPC methods that enable communication between an execution and consensus client. The clients call these methods automatically when they need to exchange information. Engine API is enabled automatically by default and is not designed to be exposed to the user."}),"\n",(0,o.jsxs)(n.p,{children:["By default, the Engine API uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8551"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," command line options, respectively. For example, this can be useful when execution and consensus clients are on different machines."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["When the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," option is specified, the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," option must be specified as well."]})}),"\n",(0,o.jsxs)(n.p,{children:["The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at ",(0,o.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory. To use a different path, specify the ",(0,o.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option."]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var o=t(6540);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/963f9300.d1a7f71a.js b/assets/js/963f9300.34cf17f5.js similarity index 99% rename from assets/js/963f9300.d1a7f71a.js rename to assets/js/963f9300.34cf17f5.js index e17f860e8..24b73bca6 100644 --- a/assets/js/963f9300.d1a7f71a.js +++ b/assets/js/963f9300.34cf17f5.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3653],{2072:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>t,frontMatter:()=>d,metadata:()=>a,toc:()=>x});var l=s(4848),r=s(8453),i=s(1470),c=s(9365);const d={title:"debug namespace",sidebar_label:"debug",sidebar_position:2},h=void 0,a={id:"interacting/json-rpc-ns/debug",title:"debug namespace",description:"debug_deleteChainSlice",source:"@site/docs/interacting/json-rpc-ns/debug.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/debug",permalink:"/next/interacting/json-rpc-ns/debug",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/debug.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"debug namespace",sidebar_label:"debug",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"clique",permalink:"/next/interacting/json-rpc-ns/clique"},next:{title:"eth",permalink:"/next/interacting/json-rpc-ns/eth"}},j={},x=[{value:"debug_deleteChainSlice",id:"debug_deletechainslice",level:3},{value:"debug_getBadBlocks",id:"debug_getbadblocks",level:3},{value:"debug_getBlockRlp",id:"debug_getblockrlp",level:3},{value:"debug_getBlockRlpByHash",id:"debug_getblockrlpbyhash",level:3},{value:"debug_getChainLevel",id:"debug_getchainlevel",level:3},{value:"debug_getConfigValue",id:"debug_getconfigvalue",level:3},{value:"debug_getRawBlock",id:"debug_getrawblock",level:3},{value:"debug_getRawHeader",id:"debug_getrawheader",level:3},{value:"debug_getRawReceipts",id:"debug_getrawreceipts",level:3},{value:"debug_getRawTransaction",id:"debug_getrawtransaction",level:3},{value:"debug_getSyncStage",id:"debug_getsyncstage",level:3},{value:"debug_insertReceipts",id:"debug_insertreceipts",level:3},{value:"debug_migrateReceipts",id:"debug_migratereceipts",level:3},{value:"debug_resetHead",id:"debug_resethead",level:3},{value:"debug_standardTraceBadBlockToFile",id:"debug_standardtracebadblocktofile",level:3},{value:"debug_standardTraceBlockToFile",id:"debug_standardtraceblocktofile",level:3},{value:"debug_traceBlock",id:"debug_traceblock",level:3},{value:"debug_traceBlockByHash",id:"debug_traceblockbyhash",level:3},{value:"debug_traceBlockByNumber",id:"debug_traceblockbynumber",level:3},{value:"debug_traceCall",id:"debug_tracecall",level:3},{value:"debug_traceTransaction",id:"debug_tracetransaction",level:3},{value:"debug_traceTransactionByBlockAndIndex",id:"debug_tracetransactionbyblockandindex",level:3},{value:"debug_traceTransactionByBlockhashAndIndex",id:"debug_tracetransactionbyblockhashandindex",level:3},{value:"debug_traceTransactionInBlockByHash",id:"debug_tracetransactioninblockbyhash",level:3},{value:"debug_traceTransactionInBlockByIndex",id:"debug_tracetransactioninblockbyindex",level:3}];function o(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h3,{id:"debug_deletechainslice",children:"debug_deleteChainSlice"}),"\n",(0,l.jsx)(n.p,{children:"Deletes a slice of a chain from the tree on all branches (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"startNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"force"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_deleteChainSlice",\n "params": [startNumber, force]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getbadblocks",children:"debug_getBadBlocks"}),"\n",(0,l.jsx)(n.p,{children:"Return list of invalid blocks."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBadBlocks",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"block"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"author"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"difficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"extraData"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasLimit"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"miner"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mixHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"signature"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"size"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stateRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"step"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timestamp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactions"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"uncles"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInGwei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInWei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"index"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"validatorIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"rlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlp",children:"debug_getBlockRlp"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlp",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlpbyhash",children:"debug_getBlockRlpByHash"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlpByHash",\n "params": [hash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getchainlevel",children:"debug_getChainLevel"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a representation of tree branches on a given chain level (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getChainLevel",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockInfos"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isFinalized"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"wasProcessed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasBlockOnMainChain"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getconfigvalue",children:"debug_getConfigValue"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves the Nethermind configuration value, e.g. JsonRpc.Enabled"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"category"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"name"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getConfigValue",\n "params": [category, name]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawblock",children:"debug_getRawBlock"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Block format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawBlock",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawheader",children:"debug_getRawHeader"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Header format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawHeader",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawreceipts",children:"debug_getRawReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Receipt format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawtransaction",children:"debug_getRawTransaction"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Transaction format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawTransaction",\n "params": [transactionHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getsyncstage",children:"debug_getSyncStage"}),"\n",(0,l.jsx)(n.p,{children:"Retrives Nethermind Sync Stage, With extra Metadata"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getSyncStage",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"currentStage"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_insertreceipts",children:"debug_insertReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Insert receipts for the block after verifying receipts root correctness."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsxs)(c.A,{value:"params",label:"Parameters",children:[(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"receiptForRpc"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"contractAddress"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logs"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"removed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"topics"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"root"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"status"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]})]}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_insertReceipts",\n "params": [blockParameter, receiptForRpc]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_migratereceipts",children:"debug_migrateReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Sets the block number up to which receipts will be migrated to (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_migrateReceipts",\n "params": [blockNumber]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_resethead",children:"debug_resetHead"}),"\n",(0,l.jsx)(n.p,{children:"Updates / resets head block - use only when the node got stuck due to DB / memory corruption (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_resetHead",\n "params": [blockHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtracebadblocktofile",children:"debug_standardTraceBadBlockToFile"}),"\n",(0,l.jsxs)(n.p,{children:["This method is similar to the ",(0,l.jsx)(n.code,{children:"debug_standardTraceBlockToFile"})," method, but can be used to obtain information about a block that has been rejected as invalid."]}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBadBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtraceblocktofile",children:"debug_standardTraceBlockToFile"}),"\n",(0,l.jsx)(n.p,{children:"Writes to a file the full stack trace of all invoked opcodes of the transaction specified (or all transactions if not specified) that was included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblock",children:"debug_traceBlock"}),"\n",(0,l.jsx)(n.p,{children:"Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlock",\n "params": [blockRlp, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbyhash",children:"debug_traceBlockByHash"}),"\n",(0,l.jsx)(n.p,{children:"Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the database."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByHash",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbynumber",children:"debug_traceBlockByNumber"}),"\n",(0,l.jsx)(n.p,{children:'Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block that is already present in the database.'}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByNumber",\n "params": [blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracecall",children:"debug_traceCall"}),"\n",(0,l.jsx)(n.p,{children:"This method lets you run an eth_call within the context of the given block execution using the final state of parent block as the base. The block can be specified either by hash or by number. It takes the same input object as a eth_call. It returns the same output as debug_traceTransaction."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"call"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"accessList"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chainId"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"input"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isSystemTx"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mint"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"r"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"s"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sourceHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"v"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"yParity"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceCall",\n "params": [call, blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransaction",children:"debug_traceTransaction"}),"\n",(0,l.jsx)(n.p,{children:"This 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."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransaction",\n "params": [transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockandindex",children:"debug_traceTransactionByBlockAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockAndIndex",\n "params": [blockParameter, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockhashandindex",children:"debug_traceTransactionByBlockhashAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockhashAndIndex",\n "params": [blockHash, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyhash",children:"debug_traceTransactionInBlockByHash"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByHash",\n "params": [blockRlp, transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyindex",children:"debug_traceTransactionInBlockByIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByIndex",\n "params": [blockRlp, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function t(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(o,{...e})}):o(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var l=s(4164);const r={tabItem:"tabItem_Ymn6"};var i=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,l.A)(r.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var l=s(6540),r=s(4164),i=s(3104),c=s(6347),d=s(205),h=s(7485),a=s(1682),j=s(679);function x(e){return l.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,l.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function o(e){const{values:n,children:s}=e;return(0,l.useMemo)((()=>{const e=n??function(e){return x(e).map((e=>{let{props:{value:n,label:s,attributes:l,default:r}}=e;return{value:n,label:s,attributes:l,default:r}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function t(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const r=(0,c.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(i),(0,l.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,i=o(e),[c,h]=(0,l.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!t({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const l=s.find((e=>e.default))??s[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:n,tabValues:i}))),[a,x]=u({queryString:s,groupId:r}),[m,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,j.Dv)(s);return[r,(0,l.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:r}),b=(()=>{const e=a??m;return t({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{b&&h(b)}),[b]);return{selectedValue:c,selectValue:(0,l.useCallback)((e=>{if(!t({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);h(e),x(e),g(e)}),[x,g,i]),tabValues:i}}var g=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var p=s(4848);function f(e){let{className:n,block:s,selectedValue:l,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),r=d[s].value;r!==l&&(a(n),c(r))},x=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,p.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,p.jsx)("li",{role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,ref:e=>h.push(e),onKeyDown:x,onClick:j,...i,className:(0,r.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":l===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===i));return e?(0,l.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,p.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,l.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=m(e);return(0,p.jsxs)("div",{className:(0,r.A)("tabs-container",b.tabList),children:[(0,p.jsx)(f,{...n,...e}),(0,p.jsx)(v,{...n,...e})]})}function k(e){const n=(0,g.A)();return(0,p.jsx)(y,{...e,children:x(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var l=s(6540);const r={},i=l.createContext(r);function c(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3653],{2072:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>t,frontMatter:()=>d,metadata:()=>a,toc:()=>x});var l=s(4848),r=s(8453),i=s(1470),c=s(9365);const d={title:"debug namespace",sidebar_label:"debug",sidebar_position:2},h=void 0,a={id:"interacting/json-rpc-ns/debug",title:"debug namespace",description:"debug_deleteChainSlice",source:"@site/docs/interacting/json-rpc-ns/debug.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/debug",permalink:"/next/interacting/json-rpc-ns/debug",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/debug.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"debug namespace",sidebar_label:"debug",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"clique",permalink:"/next/interacting/json-rpc-ns/clique"},next:{title:"eth",permalink:"/next/interacting/json-rpc-ns/eth"}},j={},x=[{value:"debug_deleteChainSlice",id:"debug_deletechainslice",level:3},{value:"debug_getBadBlocks",id:"debug_getbadblocks",level:3},{value:"debug_getBlockRlp",id:"debug_getblockrlp",level:3},{value:"debug_getBlockRlpByHash",id:"debug_getblockrlpbyhash",level:3},{value:"debug_getChainLevel",id:"debug_getchainlevel",level:3},{value:"debug_getConfigValue",id:"debug_getconfigvalue",level:3},{value:"debug_getRawBlock",id:"debug_getrawblock",level:3},{value:"debug_getRawHeader",id:"debug_getrawheader",level:3},{value:"debug_getRawReceipts",id:"debug_getrawreceipts",level:3},{value:"debug_getRawTransaction",id:"debug_getrawtransaction",level:3},{value:"debug_getSyncStage",id:"debug_getsyncstage",level:3},{value:"debug_insertReceipts",id:"debug_insertreceipts",level:3},{value:"debug_migrateReceipts",id:"debug_migratereceipts",level:3},{value:"debug_resetHead",id:"debug_resethead",level:3},{value:"debug_standardTraceBadBlockToFile",id:"debug_standardtracebadblocktofile",level:3},{value:"debug_standardTraceBlockToFile",id:"debug_standardtraceblocktofile",level:3},{value:"debug_traceBlock",id:"debug_traceblock",level:3},{value:"debug_traceBlockByHash",id:"debug_traceblockbyhash",level:3},{value:"debug_traceBlockByNumber",id:"debug_traceblockbynumber",level:3},{value:"debug_traceCall",id:"debug_tracecall",level:3},{value:"debug_traceTransaction",id:"debug_tracetransaction",level:3},{value:"debug_traceTransactionByBlockAndIndex",id:"debug_tracetransactionbyblockandindex",level:3},{value:"debug_traceTransactionByBlockhashAndIndex",id:"debug_tracetransactionbyblockhashandindex",level:3},{value:"debug_traceTransactionInBlockByHash",id:"debug_tracetransactioninblockbyhash",level:3},{value:"debug_traceTransactionInBlockByIndex",id:"debug_tracetransactioninblockbyindex",level:3}];function o(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h3,{id:"debug_deletechainslice",children:"debug_deleteChainSlice"}),"\n",(0,l.jsx)(n.p,{children:"Deletes a slice of a chain from the tree on all branches (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"startNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"force"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_deleteChainSlice",\n "params": [startNumber, force]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getbadblocks",children:"debug_getBadBlocks"}),"\n",(0,l.jsx)(n.p,{children:"Return list of invalid blocks."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBadBlocks",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"block"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"author"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"difficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"extraData"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasLimit"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"miner"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mixHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"signature"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"size"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stateRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"step"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timestamp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactions"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"uncles"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInGwei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInWei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"index"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"validatorIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"rlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlp",children:"debug_getBlockRlp"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlp",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlpbyhash",children:"debug_getBlockRlpByHash"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlpByHash",\n "params": [hash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getchainlevel",children:"debug_getChainLevel"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a representation of tree branches on a given chain level (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getChainLevel",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockInfos"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isFinalized"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"wasProcessed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasBlockOnMainChain"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getconfigvalue",children:"debug_getConfigValue"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves the Nethermind configuration value, e.g. JsonRpc.Enabled"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"category"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"name"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getConfigValue",\n "params": [category, name]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawblock",children:"debug_getRawBlock"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Block format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawBlock",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawheader",children:"debug_getRawHeader"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Header format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawHeader",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawreceipts",children:"debug_getRawReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Receipt format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawtransaction",children:"debug_getRawTransaction"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Transaction format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawTransaction",\n "params": [transactionHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getsyncstage",children:"debug_getSyncStage"}),"\n",(0,l.jsx)(n.p,{children:"Retrives Nethermind Sync Stage, With extra Metadata"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getSyncStage",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"currentStage"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_insertreceipts",children:"debug_insertReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Insert receipts for the block after verifying receipts root correctness."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsxs)(c.A,{value:"params",label:"Parameters",children:[(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"receiptForRpc"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"contractAddress"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logs"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"removed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"topics"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"root"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"status"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]})]}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_insertReceipts",\n "params": [blockParameter, receiptForRpc]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_migratereceipts",children:"debug_migrateReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Sets the block number up to which receipts will be migrated to (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_migrateReceipts",\n "params": [blockNumber]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_resethead",children:"debug_resetHead"}),"\n",(0,l.jsx)(n.p,{children:"Updates / resets head block - use only when the node got stuck due to DB / memory corruption (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_resetHead",\n "params": [blockHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtracebadblocktofile",children:"debug_standardTraceBadBlockToFile"}),"\n",(0,l.jsxs)(n.p,{children:["This method is similar to the ",(0,l.jsx)(n.code,{children:"debug_standardTraceBlockToFile"})," method, but can be used to obtain information about a block that has been rejected as invalid."]}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBadBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtraceblocktofile",children:"debug_standardTraceBlockToFile"}),"\n",(0,l.jsx)(n.p,{children:"Writes to a file the full stack trace of all invoked opcodes of the transaction specified (or all transactions if not specified) that was included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblock",children:"debug_traceBlock"}),"\n",(0,l.jsx)(n.p,{children:"Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlock",\n "params": [blockRlp, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbyhash",children:"debug_traceBlockByHash"}),"\n",(0,l.jsx)(n.p,{children:"Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the database."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByHash",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbynumber",children:"debug_traceBlockByNumber"}),"\n",(0,l.jsx)(n.p,{children:'Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block that is already present in the database.'}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByNumber",\n "params": [blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracecall",children:"debug_traceCall"}),"\n",(0,l.jsx)(n.p,{children:"This method lets you run an eth_call within the context of the given block execution using the final state of parent block as the base. The block can be specified either by hash or by number. It takes the same input object as a eth_call. It returns the same output as debug_traceTransaction."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"call"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"accessList"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chainId"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"input"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isSystemTx"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mint"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"r"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"s"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sourceHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"v"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"yParity"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceCall",\n "params": [call, blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransaction",children:"debug_traceTransaction"}),"\n",(0,l.jsx)(n.p,{children:"This 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."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransaction",\n "params": [transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockandindex",children:"debug_traceTransactionByBlockAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockAndIndex",\n "params": [blockParameter, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockhashandindex",children:"debug_traceTransactionByBlockhashAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockhashAndIndex",\n "params": [blockHash, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyhash",children:"debug_traceTransactionInBlockByHash"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByHash",\n "params": [blockRlp, transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyindex",children:"debug_traceTransactionInBlockByIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByIndex",\n "params": [blockRlp, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function t(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(o,{...e})}):o(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var l=s(4164);const r={tabItem:"tabItem_Ymn6"};var i=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,l.A)(r.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var l=s(6540),r=s(4164),i=s(3104),c=s(6347),d=s(205),h=s(7485),a=s(1682),j=s(679);function x(e){return l.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,l.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function o(e){const{values:n,children:s}=e;return(0,l.useMemo)((()=>{const e=n??function(e){return x(e).map((e=>{let{props:{value:n,label:s,attributes:l,default:r}}=e;return{value:n,label:s,attributes:l,default:r}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function t(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const r=(0,c.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(i),(0,l.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,i=o(e),[c,h]=(0,l.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!t({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const l=s.find((e=>e.default))??s[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:n,tabValues:i}))),[a,x]=u({queryString:s,groupId:r}),[m,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,j.Dv)(s);return[r,(0,l.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:r}),b=(()=>{const e=a??m;return t({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{b&&h(b)}),[b]);return{selectedValue:c,selectValue:(0,l.useCallback)((e=>{if(!t({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);h(e),x(e),g(e)}),[x,g,i]),tabValues:i}}var g=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var p=s(4848);function f(e){let{className:n,block:s,selectedValue:l,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),r=d[s].value;r!==l&&(a(n),c(r))},x=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,p.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,p.jsx)("li",{role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,ref:e=>h.push(e),onKeyDown:x,onClick:j,...i,className:(0,r.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":l===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===i));return e?(0,l.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,p.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,l.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=m(e);return(0,p.jsxs)("div",{className:(0,r.A)("tabs-container",b.tabList),children:[(0,p.jsx)(f,{...n,...e}),(0,p.jsx)(v,{...n,...e})]})}function k(e){const n=(0,g.A)();return(0,p.jsx)(y,{...e,children:x(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var l=s(6540);const r={},i=l.createContext(r);function c(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/99617d39.df2f7a5a.js b/assets/js/99617d39.251308c0.js similarity index 99% rename from assets/js/99617d39.df2f7a5a.js rename to assets/js/99617d39.251308c0.js index ec1881dc6..9b4e80aca 100644 --- a/assets/js/99617d39.df2f7a5a.js +++ b/assets/js/99617d39.251308c0.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7523],{605:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var a=t(4848),s=t(8453),r=t(1470),l=t(9365);const i={title:"Health check",sidebar_position:1},o=void 0,c={id:"monitoring/health-check",title:"Health check",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.27.0/monitoring/health-check.md",sourceDirName:"monitoring",slug:"/monitoring/health-check",permalink:"/1.27.0/monitoring/health-check",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/monitoring/health-check.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Health check",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"dotnet-counters",permalink:"/1.27.0/monitoring/metrics/dotnet-counters"},next:{title:"Validators",permalink:"/1.27.0/validators/"}},h={},d=[{value:"Enabling and configuring Health Checks",id:"enabling-and-configuring-health-checks",level:2},{value:"Enabling Health Checks without UI ",id:"enabling-health-checks-without-ui-",level:4},{value:"Enabling Health Checks UI",id:"enabling-health-checks-ui",level:4},{value:"Enabling Slack reports",id:"enabling-slack-reports",level:4},{value:"Consensus Client health",id:"consensus-client-health",level:4},{value:"health_nodeStatus",id:"health_nodestatus",level:4},{value:"Monitoring available storage space",id:"monitoring-available-storage-space",level:4},{value:"HealthChecks for producing and processing blocks",id:"healthchecks-for-producing-and-processing-blocks",level:4}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h4:"h4",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n","\n",(0,a.jsxs)(n.p,{children:["Nethermind has a pre-packed ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"})," plugin that allows you to monitor your Nethermind node better.\nIt leverages the power\nof ",(0,a.jsx)(n.a,{href:"https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks",children:"AspNetCore.Diagnostics.HealthChecks"}),". It simply adds\nan",(0,a.jsx)(n.code,{children:"/health"}),"endpoint to the JSON RPC service which can be used to check the Nethermind's ",(0,a.jsxs)(n.em,{children:[(0,a.jsx)(n.strong,{children:"liveness"})," -"]})," verify if the\nnode is ",(0,a.jsx)(n.strong,{children:"synced"})," and has ",(0,a.jsx)(n.strong,{children:"at least one peer."})," Useful when you don't want to query the node before it's able to\nprovide you data available only for fully synced nodes like ",(0,a.jsx)(n.code,{children:"eth_getBalance"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"}),"plugin will be automatically loaded on Nethermind start."]}),"\n",(0,a.jsx)(n.h2,{id:"enabling-and-configuring-health-checks",children:"Enabling and configuring Health Checks"}),"\n",(0,a.jsxs)(n.p,{children:["The health checks need to be additionally enabled which can be done either through ",(0,a.jsx)(n.code,{children:"--HealthChecks.*"})," flags or by adding\na ",(0,a.jsx)(n.code,{children:'"HealthChecks"'})," section to the config file. "]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:' "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "WebhooksUri": "https://slack.webhook",\n "UIEnabled": true,\n "PollingInterval": 10,\n "Slug": "/api/health"\n }\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"danger",children:(0,a.jsxs)(n.p,{children:["JSON RPC Service needs to be enabled in order for health checks to work ",(0,a.jsx)(n.code,{children:"--JsonRpc.Enabled true"})]})}),"\n",(0,a.jsxs)(n.p,{children:["Each configuration option is described ",(0,a.jsx)(n.a,{href:"../fundamentals/configuration#healthchecks",children:"here"}),"."]}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-without-ui-",children:"Enabling Health Checks without UI "}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"health"})," endpoint is now available at ",(0,a.jsx)(n.code,{children:"localhost:8545/health"})," by default (if your ",(0,a.jsx)(n.code,{children:"--JsonRpc.Port"})," is ",(0,a.jsx)(n.code,{children:"8545"}),").\nThe ",(0,a.jsx)(n.code,{children:"health"})," endpoint can be configured via ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug"})," parameter e.g. ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug /api/health"}),". We\ncan if it is working with ",(0,a.jsx)(n.code,{children:"curl"}),":"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'// Request\ncurl localhost:8545/health\n\n// Example of response for Unhealthy node\n{"status":"Unhealthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node has 0 peers connected","duration":"00:00:00.0003881","status":"Unhealthy","tags":[]}}}\n\n// Example of response for Healthy node\n{"status":"Healthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node is now fully synced with a network, number of peers: 99","duration":"00:00:00.0003881","status":"Healthy","tags":[]}}}\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Unhealthy"})," returns ",(0,a.jsx)(n.strong,{children:"503"})," (Service Unavailable) status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Healthy"})," returns ",(0,a.jsx)(n.strong,{children:"200"})," status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-ui",children:"Enabling Health Checks UI"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true --HealthChecks.UIEnabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Enabling UI will expose an additional endpoint ",(0,a.jsx)(n.code,{children:"/healthchecks-ui"}),"and will allow seeing node's health on a nice UI. To\nview the UI simply go to ",(0,a.jsx)(n.code,{children:"http://localhost:8545/healthchecks-ui"}),"."]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy status reported on UI page",src:t(5218).A+"",width:"1187",height:"418"})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-slack-reports",children:"Enabling Slack reports"}),"\n",(0,a.jsxs)(n.p,{children:["We may also add Slack Webhook endpoint to which our node's health will be reported. We need to pass\nthe ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled true"})," and add the ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksUri"})," which can be found in your Slack app\nconfiguration."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.Enabled true --HealthChecks.UIEnabled true --HealthChecks.WebhooksEnabled true --HealthChecks.WebhooksUri https://hooks.slack.com/\n"})}),"\n",(0,a.jsxs)(n.p,{children:["If your node will be ",(0,a.jsx)(n.strong,{children:"Unhealthy"})," you should receive a message similar to this:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy",src:t(9953).A+"",width:"690",height:"240"})}),"\n",(0,a.jsxs)(n.p,{children:["with description of why the node is unhealthy, node's name and information about the machine on which the node is\nrunning.",(0,a.jsx)(n.br,{}),"\n","When it becomes ",(0,a.jsx)(n.strong,{children:"Healthy"})," (",(0,a.jsx)(n.strong,{children:"synced"})," and with ",(0,a.jsx)(n.strong,{children:"peers"}),") you should receive:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Healthy",src:t(5725).A+"",width:"492",height:"118"})}),"\n",(0,a.jsx)(n.h4,{id:"consensus-client-health",children:"Consensus Client health"}),"\n",(0,a.jsxs)(n.p,{children:["This check verifies if the client receives messages from the CL. If you see this warning in your logs, it means that\nthere is something wrong with CL/Nethermind communication. Check more about setting up Nethermind and\nCL ",(0,a.jsx)(n.a,{href:"/1.27.0/get-started/consensus-clients",children:"here"}),"."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"No incoming messages from Consensus Client. Consensus Client is required to sync the node. Please make sure that it's working properly.\n"})}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"Note that Consensus Client is required for normal node operations."})}),"\n",(0,a.jsx)(n.h4,{id:"health_nodestatus",children:"health_nodeStatus"}),"\n",(0,a.jsxs)(n.p,{children:["Health checks via JSON RPC requests were introduced in version v.1.10.18. For that, ",(0,a.jsx)(n.code,{children:"HealthChecks.Enabled"})," should be\nset to true."]}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsx)(l.A,{value:"request",label:"Request",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{ "jsonrpc":"2.0","method":"health_nodeStatus","params":[],"id":67 }\n'})})}),(0,a.jsx)(l.A,{label:"Response",value:"response",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{\n "jsonrpc": "2.0",\n "result": {\n "healthy": false,\n "messages": [\n "Sync degraded",\n "No messages from CL"\n ],\n "errors": [\n "SyncDegraded",\n "ClUnavailable"\n ],\n "isSyncing": true\n },\n "id": 67\n}\n'})})})]}),"\n",(0,a.jsx)(n.h4,{id:"monitoring-available-storage-space",children:"Monitoring available storage space"}),"\n",(0,a.jsx)(n.p,{children:"Feature which is helping to track free disk space is enabled by default and monitors a drive which has been used to\nconfigure database location. There are two new configuration options available:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold"})," - Percentage of free disk space below which a warning will be\ndisplayed. If Health Checks UI is enabled, it will also be reported under node's health. Default value is 5 - meaning\n5% of free disk space."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold"})," - Percentage of available disk space below which node will shutdown\nto avoid database corruption. Default value is 1 - meaning 1% of free disk space."]}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.LowStorageSpaceWarningThreshold 5 --HealthChecks.LowStorageSpaceShutdownThreshold 1\n"})}),"\n",(0,a.jsx)(n.h4,{id:"healthchecks-for-producing-and-processing-blocks",children:"HealthChecks for producing and processing blocks"}),"\n",(0,a.jsx)(n.p,{children:"There are two fields for HealthChecks config: MaxIntervalWithoutProcessedBlock and MaxIntervalWithoutProducedBlock. The\nnode will return unhealthy status if the interval elapsed without processing or producing a block. Let's use the below\nconfig as an example. If the node doesn't process a block for 15 seconds, we will return unhealthy status. Analogically,\nwe will be waiting 45 seconds for a newly produced block."}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:'\n "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "UIEnabled": true,\n "Slug": "/api/health",\n "MaxIntervalWithoutProcessedBlock ": 15,\n "MaxIntervalWithoutProducedBlock": 45\n }\n'})}),"\n",(0,a.jsx)(n.p,{children:"If those fields are not set in a config, application will try to use them based on seal engine specification. If there\nis infinite time, unhealthy status can still be reported if processing or producing threads stopped."})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var a=t(4164);const s={tabItem:"tabItem_Ymn6"};var r=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var a=t(6540),s=t(4164),r=t(3104),l=t(6347),i=t(205),o=t(7485),c=t(1682),h=t(679);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:s}}=e;return{value:n,label:t,attributes:a,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,o.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(s.location.search);n.set(r,e),s.replace({...s.location,search:n.toString()})}),[r,s])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=u(e),[l,o]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,d]=g({queryString:t,groupId:s}),[b,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,r]=(0,h.Dv)(t);return[s,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:s}),f=(()=>{const e=c??b;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&o(f)}),[f]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),d(e),m(e)}),[d,m,r]),tabValues:r}}var m=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(4848);function j(e){let{className:n,block:t,selectedValue:a,selectValue:l,tabValues:i}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),h=e=>{const n=e.currentTarget,t=o.indexOf(n),s=i[t].value;s!==a&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>o.push(e),onKeyDown:d,onClick:h,...r,className:(0,s.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function k(e){let{lazy:n,children:t,selectedValue:r}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=b(e);return(0,x.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,x.jsx)(j,{...n,...e}),(0,x.jsx)(k,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,x.jsx)(v,{...e,children:d(e.children)},String(n))}},5725:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(46)-5eaf72852b3e686e71865323e9801102.png"},5218:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(76)-09c7ba2b07d07480a303268d261ffd16.png"},9953:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/unhealthy-98cb6ab004e2ecb6edcbec2e6d03edea.png"},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>i});var a=t(6540);const s={},r=a.createContext(s);function l(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7523],{605:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var a=t(4848),s=t(8453),r=t(1470),l=t(9365);const i={title:"Health check",sidebar_position:1},o=void 0,c={id:"monitoring/health-check",title:"Health check",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.27.0/monitoring/health-check.md",sourceDirName:"monitoring",slug:"/monitoring/health-check",permalink:"/1.27.0/monitoring/health-check",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/monitoring/health-check.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Health check",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"dotnet-counters",permalink:"/1.27.0/monitoring/metrics/dotnet-counters"},next:{title:"Validators",permalink:"/1.27.0/validators/"}},h={},d=[{value:"Enabling and configuring Health Checks",id:"enabling-and-configuring-health-checks",level:2},{value:"Enabling Health Checks without UI ",id:"enabling-health-checks-without-ui-",level:4},{value:"Enabling Health Checks UI",id:"enabling-health-checks-ui",level:4},{value:"Enabling Slack reports",id:"enabling-slack-reports",level:4},{value:"Consensus Client health",id:"consensus-client-health",level:4},{value:"health_nodeStatus",id:"health_nodestatus",level:4},{value:"Monitoring available storage space",id:"monitoring-available-storage-space",level:4},{value:"HealthChecks for producing and processing blocks",id:"healthchecks-for-producing-and-processing-blocks",level:4}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h4:"h4",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n","\n",(0,a.jsxs)(n.p,{children:["Nethermind has a pre-packed ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"})," plugin that allows you to monitor your Nethermind node better.\nIt leverages the power\nof ",(0,a.jsx)(n.a,{href:"https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks",children:"AspNetCore.Diagnostics.HealthChecks"}),". It simply adds\nan",(0,a.jsx)(n.code,{children:"/health"}),"endpoint to the JSON RPC service which can be used to check the Nethermind's ",(0,a.jsxs)(n.em,{children:[(0,a.jsx)(n.strong,{children:"liveness"})," -"]})," verify if the\nnode is ",(0,a.jsx)(n.strong,{children:"synced"})," and has ",(0,a.jsx)(n.strong,{children:"at least one peer."})," Useful when you don't want to query the node before it's able to\nprovide you data available only for fully synced nodes like ",(0,a.jsx)(n.code,{children:"eth_getBalance"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"}),"plugin will be automatically loaded on Nethermind start."]}),"\n",(0,a.jsx)(n.h2,{id:"enabling-and-configuring-health-checks",children:"Enabling and configuring Health Checks"}),"\n",(0,a.jsxs)(n.p,{children:["The health checks need to be additionally enabled which can be done either through ",(0,a.jsx)(n.code,{children:"--HealthChecks.*"})," flags or by adding\na ",(0,a.jsx)(n.code,{children:'"HealthChecks"'})," section to the config file. "]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:' "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "WebhooksUri": "https://slack.webhook",\n "UIEnabled": true,\n "PollingInterval": 10,\n "Slug": "/api/health"\n }\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"danger",children:(0,a.jsxs)(n.p,{children:["JSON RPC Service needs to be enabled in order for health checks to work ",(0,a.jsx)(n.code,{children:"--JsonRpc.Enabled true"})]})}),"\n",(0,a.jsxs)(n.p,{children:["Each configuration option is described ",(0,a.jsx)(n.a,{href:"../fundamentals/configuration#healthchecks",children:"here"}),"."]}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-without-ui-",children:"Enabling Health Checks without UI "}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"health"})," endpoint is now available at ",(0,a.jsx)(n.code,{children:"localhost:8545/health"})," by default (if your ",(0,a.jsx)(n.code,{children:"--JsonRpc.Port"})," is ",(0,a.jsx)(n.code,{children:"8545"}),").\nThe ",(0,a.jsx)(n.code,{children:"health"})," endpoint can be configured via ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug"})," parameter e.g. ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug /api/health"}),". We\ncan if it is working with ",(0,a.jsx)(n.code,{children:"curl"}),":"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'// Request\ncurl localhost:8545/health\n\n// Example of response for Unhealthy node\n{"status":"Unhealthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node has 0 peers connected","duration":"00:00:00.0003881","status":"Unhealthy","tags":[]}}}\n\n// Example of response for Healthy node\n{"status":"Healthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node is now fully synced with a network, number of peers: 99","duration":"00:00:00.0003881","status":"Healthy","tags":[]}}}\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Unhealthy"})," returns ",(0,a.jsx)(n.strong,{children:"503"})," (Service Unavailable) status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Healthy"})," returns ",(0,a.jsx)(n.strong,{children:"200"})," status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-ui",children:"Enabling Health Checks UI"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true --HealthChecks.UIEnabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Enabling UI will expose an additional endpoint ",(0,a.jsx)(n.code,{children:"/healthchecks-ui"}),"and will allow seeing node's health on a nice UI. To\nview the UI simply go to ",(0,a.jsx)(n.code,{children:"http://localhost:8545/healthchecks-ui"}),"."]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy status reported on UI page",src:t(5218).A+"",width:"1187",height:"418"})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-slack-reports",children:"Enabling Slack reports"}),"\n",(0,a.jsxs)(n.p,{children:["We may also add Slack Webhook endpoint to which our node's health will be reported. We need to pass\nthe ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled true"})," and add the ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksUri"})," which can be found in your Slack app\nconfiguration."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.Enabled true --HealthChecks.UIEnabled true --HealthChecks.WebhooksEnabled true --HealthChecks.WebhooksUri https://hooks.slack.com/\n"})}),"\n",(0,a.jsxs)(n.p,{children:["If your node will be ",(0,a.jsx)(n.strong,{children:"Unhealthy"})," you should receive a message similar to this:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy",src:t(9953).A+"",width:"690",height:"240"})}),"\n",(0,a.jsxs)(n.p,{children:["with description of why the node is unhealthy, node's name and information about the machine on which the node is\nrunning.",(0,a.jsx)(n.br,{}),"\n","When it becomes ",(0,a.jsx)(n.strong,{children:"Healthy"})," (",(0,a.jsx)(n.strong,{children:"synced"})," and with ",(0,a.jsx)(n.strong,{children:"peers"}),") you should receive:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Healthy",src:t(5725).A+"",width:"492",height:"118"})}),"\n",(0,a.jsx)(n.h4,{id:"consensus-client-health",children:"Consensus Client health"}),"\n",(0,a.jsxs)(n.p,{children:["This check verifies if the client receives messages from the CL. If you see this warning in your logs, it means that\nthere is something wrong with CL/Nethermind communication. Check more about setting up Nethermind and\nCL ",(0,a.jsx)(n.a,{href:"/1.27.0/get-started/consensus-clients",children:"here"}),"."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"No incoming messages from Consensus Client. Consensus Client is required to sync the node. Please make sure that it's working properly.\n"})}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"Note that Consensus Client is required for normal node operations."})}),"\n",(0,a.jsx)(n.h4,{id:"health_nodestatus",children:"health_nodeStatus"}),"\n",(0,a.jsxs)(n.p,{children:["Health checks via JSON RPC requests were introduced in version v.1.10.18. For that, ",(0,a.jsx)(n.code,{children:"HealthChecks.Enabled"})," should be\nset to true."]}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsx)(l.A,{value:"request",label:"Request",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{ "jsonrpc":"2.0","method":"health_nodeStatus","params":[],"id":67 }\n'})})}),(0,a.jsx)(l.A,{label:"Response",value:"response",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{\n "jsonrpc": "2.0",\n "result": {\n "healthy": false,\n "messages": [\n "Sync degraded",\n "No messages from CL"\n ],\n "errors": [\n "SyncDegraded",\n "ClUnavailable"\n ],\n "isSyncing": true\n },\n "id": 67\n}\n'})})})]}),"\n",(0,a.jsx)(n.h4,{id:"monitoring-available-storage-space",children:"Monitoring available storage space"}),"\n",(0,a.jsx)(n.p,{children:"Feature which is helping to track free disk space is enabled by default and monitors a drive which has been used to\nconfigure database location. There are two new configuration options available:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold"})," - Percentage of free disk space below which a warning will be\ndisplayed. If Health Checks UI is enabled, it will also be reported under node's health. Default value is 5 - meaning\n5% of free disk space."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold"})," - Percentage of available disk space below which node will shutdown\nto avoid database corruption. Default value is 1 - meaning 1% of free disk space."]}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.LowStorageSpaceWarningThreshold 5 --HealthChecks.LowStorageSpaceShutdownThreshold 1\n"})}),"\n",(0,a.jsx)(n.h4,{id:"healthchecks-for-producing-and-processing-blocks",children:"HealthChecks for producing and processing blocks"}),"\n",(0,a.jsx)(n.p,{children:"There are two fields for HealthChecks config: MaxIntervalWithoutProcessedBlock and MaxIntervalWithoutProducedBlock. The\nnode will return unhealthy status if the interval elapsed without processing or producing a block. Let's use the below\nconfig as an example. If the node doesn't process a block for 15 seconds, we will return unhealthy status. Analogically,\nwe will be waiting 45 seconds for a newly produced block."}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:'\n "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "UIEnabled": true,\n "Slug": "/api/health",\n "MaxIntervalWithoutProcessedBlock ": 15,\n "MaxIntervalWithoutProducedBlock": 45\n }\n'})}),"\n",(0,a.jsx)(n.p,{children:"If those fields are not set in a config, application will try to use them based on seal engine specification. If there\nis infinite time, unhealthy status can still be reported if processing or producing threads stopped."})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var a=t(4164);const s={tabItem:"tabItem_Ymn6"};var r=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var a=t(6540),s=t(4164),r=t(3104),l=t(6347),i=t(205),o=t(7485),c=t(1682),h=t(679);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:s}}=e;return{value:n,label:t,attributes:a,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,o.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(s.location.search);n.set(r,e),s.replace({...s.location,search:n.toString()})}),[r,s])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=u(e),[l,o]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,d]=g({queryString:t,groupId:s}),[b,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,r]=(0,h.Dv)(t);return[s,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:s}),f=(()=>{const e=c??b;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&o(f)}),[f]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),d(e),m(e)}),[d,m,r]),tabValues:r}}var m=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(4848);function j(e){let{className:n,block:t,selectedValue:a,selectValue:l,tabValues:i}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),h=e=>{const n=e.currentTarget,t=o.indexOf(n),s=i[t].value;s!==a&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>o.push(e),onKeyDown:d,onClick:h,...r,className:(0,s.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function k(e){let{lazy:n,children:t,selectedValue:r}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=b(e);return(0,x.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,x.jsx)(j,{...n,...e}),(0,x.jsx)(k,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,x.jsx)(v,{...e,children:d(e.children)},String(n))}},5725:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(46)-5eaf72852b3e686e71865323e9801102.png"},5218:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(76)-09c7ba2b07d07480a303268d261ffd16.png"},9953:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/unhealthy-98cb6ab004e2ecb6edcbec2e6d03edea.png"},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>i});var a=t(6540);const s={},r=a.createContext(s);function l(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9a7ec3ac.361ed34d.js b/assets/js/9a7ec3ac.fd7df42a.js similarity index 99% rename from assets/js/9a7ec3ac.361ed34d.js rename to assets/js/9a7ec3ac.fd7df42a.js index 04f0fee11..353539664 100644 --- a/assets/js/9a7ec3ac.361ed34d.js +++ b/assets/js/9a7ec3ac.fd7df42a.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5551],{6419:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var t=i(4848),l=i(8453);const s={title:"Plugins",sidebar_position:1},o=void 0,r={id:"developers/plugins",title:"Plugins",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.25.4/developers/plugins.md",sourceDirName:"developers",slug:"/developers/plugins",permalink:"/1.25.4/developers/plugins",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/developers/plugins.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Plugins",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Building from source",permalink:"/1.25.4/developers/building-from-source"},next:{title:"Custom analytic tools",permalink:"/1.25.4/developers/custom-analytic-tools"}},a={},c=[{value:"RPC Plugin example:",id:"rpc-plugin-example",level:2},{value:"CLI Plugin example:",id:"cli-plugin-example",level:2},{value:"Block Tree Visitor Plugin example:",id:"block-tree-visitor-plugin-example",level:2},{value:"Config plugin example:",id:"config-plugin-example",level:2},{value:"State Tree Visitor example:",id:"state-tree-visitor-example",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,t.jsx)(n.p,{children:"Nethermind plugins is a powerful way of extending your local node capabilities."}),"\n",(0,t.jsxs)(n.p,{children:["(see also an article\nhere: ",(0,t.jsx)(n.a,{href:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59",children:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59"}),")"]}),"\n",(0,t.jsx)(n.p,{children:"Plugins that you can write:"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"Plugin Type"}),(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"What can it be used for?"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"RPC"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Adding additional RPC modules to the client that have full access to the internal Nethermind APIs and can extend capabilities of the node when integrating with your infrastructure / systems."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Block Tree Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Code allowing you to analyze entire block tree from genesis to the head block and execute aggregated calculations and checks."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Devp2p"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allows you to create additional devp2p network protocol for your nodes to communicate over TCP/IP. You can also build custom products that will run attached to Nethermind nodes."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"State Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allow you to run aggregated analysis on the entire raw format state (or just some accounts storages)."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Config"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"You can add additional configuration categories to our config files and then use them in env variables, json files or command line to configure behaviour of your plugins."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool behaviours and listeners."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Tracers"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Custom, powerful EVM tracers capable of extracting elements of EVM execution in real time."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"CLI"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Additional modules for Nethermind CLI that can allow you build some quick scratchpad style JavaScript based behaviors."})]})]})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," When writing a plugin be carefull about exceptions you throw. Especially if you are hooking up event handlers\non some core objects like BlockProcessor or BlockTree. Those exceptions can bring the node down. This is by design. Its\nresponsibility of plugin writer to correctly handle those exceptions."]}),"\n",(0,t.jsx)(n.p,{children:"How to build a plugin? We included an example inside the Nethermind.Analytics plugin:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:i(7200).A+"",width:"547",height:"417"})}),"\n",(0,t.jsx)(n.h2,{id:"rpc-plugin-example",children:"RPC Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' [RpcModule(ModuleType.Clique)]\n public interface IAnalyticsModule : IModule\n {\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from state.", IsImplemented = true)]\n ResultWrapper analytics_verifySupply();\n\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from rewards.", IsImplemented = true)]\n ResultWrapper analytics_verifyRewards();\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"cli-plugin-example",children:"CLI Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'[CliModule("analytics")]\npublic class AnalyticsCliModule : CliModuleBase\n{\n [CliFunction("analytics", "verifySupply")]\n public string VerifySupply()\n {\n return NodeManager.Post("analytics_verifySupply").Result;\n }\n\n [CliFunction("analytics", "verifyRewards")]\n public string VerifyRewards()\n {\n return NodeManager.Post("analytics_verifyRewards").Result;\n }\n\n public AnalyticsCliModule(ICliEngine cliEngine, INodeManager nodeManager)\n : base(cliEngine, nodeManager) { }\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"block-tree-visitor-plugin-example",children:"Block Tree Visitor Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive { get; }\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n\n public UInt256 BlockRewards { get; private set; }\n\n public RewardsVerifier(ILogManager logManager, long endLevelExclusive)\n {\n _logger = logManager.GetClassLogger();\n EndLevelExclusive = endLevelExclusive;\n BlockRewards = _genesisAllocations;\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n BlockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {BlockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(HeaderVisitOutcome.None);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"config-plugin-example",children:"Config plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:"public class AnalyticsConfig : IAnalyticsConfig\n{\n public bool PluginsEnabled { get; set; }\n public bool StreamTransactions { get; set; }\n public bool StreamBlocks { get; set; }\n public bool LogPublishedData { get; set; }\n}\n"})}),"\n",(0,t.jsx)(n.h2,{id:"state-tree-visitor-example",children:"State Tree Visitor example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'public class SupplyVerifier : ITreeVisitor\n{\n private readonly ILogger _logger;\n private HashSet _ignoreThisOne = new HashSet();\n private int _accountsVisited;\n private int _nodesVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public UInt256 Balance { get; set; } = UInt256.Zero;\n\n public bool ShouldVisit(Keccak nextNode)\n {\n if (_ignoreThisOne.Count > 16)\n {\n _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");\n }\n\n if (_ignoreThisOne.Contains(nextNode))\n {\n _ignoreThisOne.Remove(nextNode);\n return false;\n }\n\n return true;\n }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)\n {\n }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)\n {\n _logger.Warn($"Missing node {nodeHash}");\n }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n for (int i = 0; i < 16; i++)\n {\n Keccak childHash = node.GetChildHash(i);\n if (childHash != null)\n {\n _ignoreThisOne.Add(childHash);\n }\n }\n }\n }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n if (trieVisitContext.IsStorage)\n {\n _ignoreThisOne.Add(node.GetChildHash(0));\n }\n }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n Balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n }\n}\n'})})]})}function u(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},7200:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png"},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var t=i(6540);const l={},s=t.createContext(l);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5551],{6419:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var t=i(4848),l=i(8453);const s={title:"Plugins",sidebar_position:1},o=void 0,r={id:"developers/plugins",title:"Plugins",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.25.4/developers/plugins.md",sourceDirName:"developers",slug:"/developers/plugins",permalink:"/1.25.4/developers/plugins",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/developers/plugins.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Plugins",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Building from source",permalink:"/1.25.4/developers/building-from-source"},next:{title:"Custom analytic tools",permalink:"/1.25.4/developers/custom-analytic-tools"}},a={},c=[{value:"RPC Plugin example:",id:"rpc-plugin-example",level:2},{value:"CLI Plugin example:",id:"cli-plugin-example",level:2},{value:"Block Tree Visitor Plugin example:",id:"block-tree-visitor-plugin-example",level:2},{value:"Config plugin example:",id:"config-plugin-example",level:2},{value:"State Tree Visitor example:",id:"state-tree-visitor-example",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,t.jsx)(n.p,{children:"Nethermind plugins is a powerful way of extending your local node capabilities."}),"\n",(0,t.jsxs)(n.p,{children:["(see also an article\nhere: ",(0,t.jsx)(n.a,{href:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59",children:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59"}),")"]}),"\n",(0,t.jsx)(n.p,{children:"Plugins that you can write:"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"Plugin Type"}),(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"What can it be used for?"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"RPC"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Adding additional RPC modules to the client that have full access to the internal Nethermind APIs and can extend capabilities of the node when integrating with your infrastructure / systems."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Block Tree Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Code allowing you to analyze entire block tree from genesis to the head block and execute aggregated calculations and checks."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Devp2p"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allows you to create additional devp2p network protocol for your nodes to communicate over TCP/IP. You can also build custom products that will run attached to Nethermind nodes."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"State Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allow you to run aggregated analysis on the entire raw format state (or just some accounts storages)."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Config"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"You can add additional configuration categories to our config files and then use them in env variables, json files or command line to configure behaviour of your plugins."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool behaviours and listeners."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Tracers"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Custom, powerful EVM tracers capable of extracting elements of EVM execution in real time."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"CLI"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Additional modules for Nethermind CLI that can allow you build some quick scratchpad style JavaScript based behaviors."})]})]})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," When writing a plugin be carefull about exceptions you throw. Especially if you are hooking up event handlers\non some core objects like BlockProcessor or BlockTree. Those exceptions can bring the node down. This is by design. Its\nresponsibility of plugin writer to correctly handle those exceptions."]}),"\n",(0,t.jsx)(n.p,{children:"How to build a plugin? We included an example inside the Nethermind.Analytics plugin:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:i(7200).A+"",width:"547",height:"417"})}),"\n",(0,t.jsx)(n.h2,{id:"rpc-plugin-example",children:"RPC Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' [RpcModule(ModuleType.Clique)]\n public interface IAnalyticsModule : IModule\n {\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from state.", IsImplemented = true)]\n ResultWrapper analytics_verifySupply();\n\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from rewards.", IsImplemented = true)]\n ResultWrapper analytics_verifyRewards();\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"cli-plugin-example",children:"CLI Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'[CliModule("analytics")]\npublic class AnalyticsCliModule : CliModuleBase\n{\n [CliFunction("analytics", "verifySupply")]\n public string VerifySupply()\n {\n return NodeManager.Post("analytics_verifySupply").Result;\n }\n\n [CliFunction("analytics", "verifyRewards")]\n public string VerifyRewards()\n {\n return NodeManager.Post("analytics_verifyRewards").Result;\n }\n\n public AnalyticsCliModule(ICliEngine cliEngine, INodeManager nodeManager)\n : base(cliEngine, nodeManager) { }\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"block-tree-visitor-plugin-example",children:"Block Tree Visitor Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive { get; }\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n\n public UInt256 BlockRewards { get; private set; }\n\n public RewardsVerifier(ILogManager logManager, long endLevelExclusive)\n {\n _logger = logManager.GetClassLogger();\n EndLevelExclusive = endLevelExclusive;\n BlockRewards = _genesisAllocations;\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n BlockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {BlockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(HeaderVisitOutcome.None);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"config-plugin-example",children:"Config plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:"public class AnalyticsConfig : IAnalyticsConfig\n{\n public bool PluginsEnabled { get; set; }\n public bool StreamTransactions { get; set; }\n public bool StreamBlocks { get; set; }\n public bool LogPublishedData { get; set; }\n}\n"})}),"\n",(0,t.jsx)(n.h2,{id:"state-tree-visitor-example",children:"State Tree Visitor example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'public class SupplyVerifier : ITreeVisitor\n{\n private readonly ILogger _logger;\n private HashSet _ignoreThisOne = new HashSet();\n private int _accountsVisited;\n private int _nodesVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public UInt256 Balance { get; set; } = UInt256.Zero;\n\n public bool ShouldVisit(Keccak nextNode)\n {\n if (_ignoreThisOne.Count > 16)\n {\n _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");\n }\n\n if (_ignoreThisOne.Contains(nextNode))\n {\n _ignoreThisOne.Remove(nextNode);\n return false;\n }\n\n return true;\n }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)\n {\n }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)\n {\n _logger.Warn($"Missing node {nodeHash}");\n }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n for (int i = 0; i < 16; i++)\n {\n Keccak childHash = node.GetChildHash(i);\n if (childHash != null)\n {\n _ignoreThisOne.Add(childHash);\n }\n }\n }\n }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n if (trieVisitContext.IsStorage)\n {\n _ignoreThisOne.Add(node.GetChildHash(0));\n }\n }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n Balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n }\n}\n'})})]})}function u(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},7200:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png"},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var t=i(6540);const l={},s=t.createContext(l);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9af4741d.19b62b6e.js b/assets/js/9af4741d.3bf24006.js similarity index 99% rename from assets/js/9af4741d.19b62b6e.js rename to assets/js/9af4741d.3bf24006.js index 3c3c5c131..71dedbee4 100644 --- a/assets/js/9af4741d.19b62b6e.js +++ b/assets/js/9af4741d.3bf24006.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7793],{8730:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),r=t(8453);const i={title:"dotnet-counters",sidebar_position:1},s=void 0,c={id:"monitoring/metrics/dotnet-counters",title:"dotnet-counters",description:"This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.",source:"@site/versioned_docs/version-1.27.0/monitoring/metrics/dotnet-counters.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/dotnet-counters",permalink:"/1.27.0/monitoring/metrics/dotnet-counters",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/monitoring/metrics/dotnet-counters.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"dotnet-counters",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Grafana and Prometheus",permalink:"/1.27.0/monitoring/metrics/grafana-and-prometheus"},next:{title:"Health check",permalink:"/1.27.0/monitoring/health-check"}},l={},d=[{value:"Step 1: Install dotnet-counters",id:"step-1-install-dotnet-counters",level:2},{value:"Installing locally",id:"installing-locally",level:3},{value:"Installing in a Docker container",id:"installing-in-a-docker-container",level:3},{value:"Step 2: Run Nethermind",id:"step-2-run-nethermind",level:2},{value:"Running locally",id:"running-locally",level:3},{value:"Running in a Docker container",id:"running-in-a-docker-container",level:3},{value:"Step 3: Collect metrics",id:"step-3-collect-metrics",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["This guide will walk you through setting up performance counters using the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"dotnet-counters"})," performance monitoring tool that observes counters published via the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventcounter",children:"EventCounters API"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"step-1-install-dotnet-counters",children:"Step 1: Install dotnet-counters"}),"\n",(0,o.jsx)(n.p,{children:"dotnet-counters can be either installed locally or in a Docker container."}),"\n",(0,o.jsx)(n.h3,{id:"installing-locally",children:"Installing locally"}),"\n",(0,o.jsx)(n.p,{children:"Use the dotnet tool install command as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet tool install -g dotnet-counters\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Once installed, you can run the tool from the command line by typing ",(0,o.jsx)(n.code,{children:"dotnet-counters"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"installing-in-a-docker-container",children:"Installing in a Docker container"}),"\n",(0,o.jsx)(n.p,{children:"To install dotnet-counters in a Docker container, create a Dockerfile with the following content:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-docker",metastring:'title="Dockerfile"',children:'FROM mcr.microsoft.com/dotnet/sdk:8.0\n\nRUN dotnet tool install -g dotnet-counters\n\nENV PATH="$PATH:/root/.dotnet/tools"\n\nENTRYPOINT ["/bin/bash"]\n'})}),"\n",(0,o.jsx)(n.p,{children:"Then, build the Docker image:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker build -t dotnet-counters .\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-2-run-nethermind",children:"Step 2: Run Nethermind"}),"\n",(0,o.jsxs)(n.p,{children:["To enable performance counters in Nethermind, use the command line option ",(0,o.jsx)(n.code,{children:"--Metrics.CountersEnabled true"}),". For more options, see the ",(0,o.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["A ",(0,o.jsx)(n.a,{href:"/1.27.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,o.jsx)(n.h3,{id:"running-locally",children:"Running locally"}),"\n",(0,o.jsx)(n.p,{children:"To enable performance counters, run Nethermind as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.CountersEnabled true\n"})}),"\n",(0,o.jsx)(n.h3,{id:"running-in-a-docker-container",children:"Running in a Docker container"}),"\n",(0,o.jsxs)(n.p,{children:["The easiest way of collecting metrics in a Docker container is to use Docker Compose. Below, we use the Nethermind official Docker image and the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," image we created earlier:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n\n dotnet-counters:\n image: dotnet-counters\n container_name: dotnet-counters\n stdin_open: true\n tty: true\n pid: service:nethermind\n volumes:\n - metrics:/tmp\n depends_on:\n - nethermind\n \n nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n command: -c mainnet --Metrics.CountersEnabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n - metrics:/tmp\n\nvolumes:\n metrics:\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:["dotnet-counters uses IPC socket communication to monitor the target process. For this, we use the ",(0,o.jsx)(n.code,{children:"metrics"})," volume to share the IPC socket directory with the ",(0,o.jsx)(n.code,{children:"nethermind"})," and ",(0,o.jsx)(n.code,{children:"dotnet-counter"})," services. The ",(0,o.jsx)(n.code,{children:"pid"})," option in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," service is used to share the PID namespace with the ",(0,o.jsx)(n.code,{children:"nethermind"})," service. This is necessary for ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," to be able to see the Nethermind process."]})}),"\n",(0,o.jsx)(n.p,{children:"We can run the above file as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-3-collect-metrics",children:"Step 3: Collect metrics"}),"\n",(0,o.jsxs)(n.p,{children:["Once dotnet-counters is installed and Nethermind is running, we can start collecting the metrics. If you chose to collect metrics in the containers, run the following command in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," container:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind\n"})}),"\n",(0,o.jsx)(n.p,{children:"By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind -f json -o /tmp/counters.json\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For more info about dotnet-counters, see its ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"official docs"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>c});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7793],{8730:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),r=t(8453);const i={title:"dotnet-counters",sidebar_position:1},s=void 0,c={id:"monitoring/metrics/dotnet-counters",title:"dotnet-counters",description:"This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.",source:"@site/versioned_docs/version-1.27.0/monitoring/metrics/dotnet-counters.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/dotnet-counters",permalink:"/1.27.0/monitoring/metrics/dotnet-counters",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/monitoring/metrics/dotnet-counters.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"dotnet-counters",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Grafana and Prometheus",permalink:"/1.27.0/monitoring/metrics/grafana-and-prometheus"},next:{title:"Health check",permalink:"/1.27.0/monitoring/health-check"}},l={},d=[{value:"Step 1: Install dotnet-counters",id:"step-1-install-dotnet-counters",level:2},{value:"Installing locally",id:"installing-locally",level:3},{value:"Installing in a Docker container",id:"installing-in-a-docker-container",level:3},{value:"Step 2: Run Nethermind",id:"step-2-run-nethermind",level:2},{value:"Running locally",id:"running-locally",level:3},{value:"Running in a Docker container",id:"running-in-a-docker-container",level:3},{value:"Step 3: Collect metrics",id:"step-3-collect-metrics",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["This guide will walk you through setting up performance counters using the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"dotnet-counters"})," performance monitoring tool that observes counters published via the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventcounter",children:"EventCounters API"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"step-1-install-dotnet-counters",children:"Step 1: Install dotnet-counters"}),"\n",(0,o.jsx)(n.p,{children:"dotnet-counters can be either installed locally or in a Docker container."}),"\n",(0,o.jsx)(n.h3,{id:"installing-locally",children:"Installing locally"}),"\n",(0,o.jsx)(n.p,{children:"Use the dotnet tool install command as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet tool install -g dotnet-counters\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Once installed, you can run the tool from the command line by typing ",(0,o.jsx)(n.code,{children:"dotnet-counters"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"installing-in-a-docker-container",children:"Installing in a Docker container"}),"\n",(0,o.jsx)(n.p,{children:"To install dotnet-counters in a Docker container, create a Dockerfile with the following content:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-docker",metastring:'title="Dockerfile"',children:'FROM mcr.microsoft.com/dotnet/sdk:8.0\n\nRUN dotnet tool install -g dotnet-counters\n\nENV PATH="$PATH:/root/.dotnet/tools"\n\nENTRYPOINT ["/bin/bash"]\n'})}),"\n",(0,o.jsx)(n.p,{children:"Then, build the Docker image:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker build -t dotnet-counters .\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-2-run-nethermind",children:"Step 2: Run Nethermind"}),"\n",(0,o.jsxs)(n.p,{children:["To enable performance counters in Nethermind, use the command line option ",(0,o.jsx)(n.code,{children:"--Metrics.CountersEnabled true"}),". For more options, see the ",(0,o.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["A ",(0,o.jsx)(n.a,{href:"/1.27.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,o.jsx)(n.h3,{id:"running-locally",children:"Running locally"}),"\n",(0,o.jsx)(n.p,{children:"To enable performance counters, run Nethermind as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.CountersEnabled true\n"})}),"\n",(0,o.jsx)(n.h3,{id:"running-in-a-docker-container",children:"Running in a Docker container"}),"\n",(0,o.jsxs)(n.p,{children:["The easiest way of collecting metrics in a Docker container is to use Docker Compose. Below, we use the Nethermind official Docker image and the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," image we created earlier:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n\n dotnet-counters:\n image: dotnet-counters\n container_name: dotnet-counters\n stdin_open: true\n tty: true\n pid: service:nethermind\n volumes:\n - metrics:/tmp\n depends_on:\n - nethermind\n \n nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n command: -c mainnet --Metrics.CountersEnabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n - metrics:/tmp\n\nvolumes:\n metrics:\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:["dotnet-counters uses IPC socket communication to monitor the target process. For this, we use the ",(0,o.jsx)(n.code,{children:"metrics"})," volume to share the IPC socket directory with the ",(0,o.jsx)(n.code,{children:"nethermind"})," and ",(0,o.jsx)(n.code,{children:"dotnet-counter"})," services. The ",(0,o.jsx)(n.code,{children:"pid"})," option in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," service is used to share the PID namespace with the ",(0,o.jsx)(n.code,{children:"nethermind"})," service. This is necessary for ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," to be able to see the Nethermind process."]})}),"\n",(0,o.jsx)(n.p,{children:"We can run the above file as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-3-collect-metrics",children:"Step 3: Collect metrics"}),"\n",(0,o.jsxs)(n.p,{children:["Once dotnet-counters is installed and Nethermind is running, we can start collecting the metrics. If you chose to collect metrics in the containers, run the following command in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," container:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind\n"})}),"\n",(0,o.jsx)(n.p,{children:"By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind -f json -o /tmp/counters.json\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For more info about dotnet-counters, see its ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"official docs"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>c});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9bc320b7.eddeabb9.js b/assets/js/9bc320b7.33dfd960.js similarity index 99% rename from assets/js/9bc320b7.eddeabb9.js rename to assets/js/9bc320b7.33dfd960.js index 9582a59df..dc576caa4 100644 --- a/assets/js/9bc320b7.eddeabb9.js +++ b/assets/js/9bc320b7.33dfd960.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6015],{6539:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=s(4848),l=s(8453),i=s(1470),t=s(9365);const a={title:"admin namespace",sidebar_label:"admin",sidebar_position:0},d=void 0,c={id:"interacting/json-rpc-ns/admin",title:"admin namespace",description:"admin_addPeer",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/admin.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/admin",permalink:"/1.26.0/interacting/json-rpc-ns/admin",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/admin.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"admin namespace",sidebar_label:"admin",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"JSON-RPC server",permalink:"/1.26.0/interacting/json-rpc-server"},next:{title:"clique",permalink:"/1.26.0/interacting/json-rpc-ns/clique"}},o={},u=[{value:"admin_addPeer",id:"admin_addpeer",level:3},{value:"admin_nodeInfo",id:"admin_nodeinfo",level:3},{value:"admin_peers",id:"admin_peers",level:3},{value:"admin_prune",id:"admin_prune",level:3},{value:"admin_removePeer",id:"admin_removepeer",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"admin_addpeer",children:"admin_addPeer"}),"\n",(0,r.jsx)(n.p,{children:"Adds given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"addToStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_addPeer",\n "params": [enode, addToStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Added node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_nodeinfo",children:"admin_nodeInfo"}),"\n",(0,r.jsx)(n.p,{children:"Displays relevant information about this node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_nodeInfo",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Information about this node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ip"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listenAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ports"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"discovery"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listener"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"genesisHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"newtorkId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_peers",children:"admin_peers"}),"\n",(0,r.jsxs)(n.p,{children:["Displays a list of connected peers including information about them (",(0,r.jsx)(n.code,{children:"clientId"}),", ",(0,r.jsx)(n.code,{children:"host"}),", ",(0,r.jsx)(n.code,{children:"port"}),", ",(0,r.jsx)(n.code,{children:"address"}),", ",(0,r.jsx)(n.code,{children:"isBootnode"}),", ",(0,r.jsx)(n.code,{children:"isStatic"}),", ",(0,r.jsx)(n.code,{children:"enode"}),")."]}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeDetails"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_peers",\n "params": [includeDetails]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"List of connected peers including information"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ethDetails"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"host"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isBootnode"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isStatic"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isTrusted"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"lastSignal"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"port"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_prune",children:"admin_prune"}),"\n",(0,r.jsx)(n.p,{children:"Runs full pruning if enabled."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_prune",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"integer"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_removepeer",children:"admin_removePeer"}),"\n",(0,r.jsx)(n.p,{children:"Removes given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"removeFromStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_removePeer",\n "params": [enode, removeFromStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Removed node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var i=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),l=s(4164),i=s(3104),t=s(6347),a=s(205),d=s(7485),c=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function x(e){let{queryString:n=!1,groupId:s}=e;const l=(0,t.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(l.location.search);n.set(i,e),l.replace({...l.location,search:n.toString()})}),[i,l])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,i=h(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[c,u]=x({queryString:s,groupId:l}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,i]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:l}),b=(()=>{const e=c??m;return j({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{b&&d(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),p(e)}),[u,p,i]),tabValues:i}}var p=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:a}=e;const d=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),l=a[s].value;l!==r&&(c(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:a.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:u,onClick:o,...i,className:(0,l.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function _(e){const n=m(e);return(0,g.jsxs)("div",{className:(0,l.A)("tabs-container",b.tabList),children:[(0,g.jsx)(f,{...n,...e}),(0,g.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,g.jsx)(_,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const l={},i=r.createContext(l);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6015],{6539:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=s(4848),l=s(8453),i=s(1470),t=s(9365);const a={title:"admin namespace",sidebar_label:"admin",sidebar_position:0},d=void 0,c={id:"interacting/json-rpc-ns/admin",title:"admin namespace",description:"admin_addPeer",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/admin.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/admin",permalink:"/1.26.0/interacting/json-rpc-ns/admin",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/admin.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"admin namespace",sidebar_label:"admin",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"JSON-RPC server",permalink:"/1.26.0/interacting/json-rpc-server"},next:{title:"clique",permalink:"/1.26.0/interacting/json-rpc-ns/clique"}},o={},u=[{value:"admin_addPeer",id:"admin_addpeer",level:3},{value:"admin_nodeInfo",id:"admin_nodeinfo",level:3},{value:"admin_peers",id:"admin_peers",level:3},{value:"admin_prune",id:"admin_prune",level:3},{value:"admin_removePeer",id:"admin_removepeer",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"admin_addpeer",children:"admin_addPeer"}),"\n",(0,r.jsx)(n.p,{children:"Adds given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"addToStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_addPeer",\n "params": [enode, addToStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Added node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_nodeinfo",children:"admin_nodeInfo"}),"\n",(0,r.jsx)(n.p,{children:"Displays relevant information about this node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_nodeInfo",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Information about this node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ip"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listenAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ports"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"discovery"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listener"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"genesisHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"newtorkId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_peers",children:"admin_peers"}),"\n",(0,r.jsxs)(n.p,{children:["Displays a list of connected peers including information about them (",(0,r.jsx)(n.code,{children:"clientId"}),", ",(0,r.jsx)(n.code,{children:"host"}),", ",(0,r.jsx)(n.code,{children:"port"}),", ",(0,r.jsx)(n.code,{children:"address"}),", ",(0,r.jsx)(n.code,{children:"isBootnode"}),", ",(0,r.jsx)(n.code,{children:"isStatic"}),", ",(0,r.jsx)(n.code,{children:"enode"}),")."]}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeDetails"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_peers",\n "params": [includeDetails]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"List of connected peers including information"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ethDetails"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"host"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isBootnode"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isStatic"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isTrusted"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"lastSignal"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"port"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_prune",children:"admin_prune"}),"\n",(0,r.jsx)(n.p,{children:"Runs full pruning if enabled."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_prune",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"integer"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_removepeer",children:"admin_removePeer"}),"\n",(0,r.jsx)(n.p,{children:"Removes given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"removeFromStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_removePeer",\n "params": [enode, removeFromStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Removed node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var i=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),l=s(4164),i=s(3104),t=s(6347),a=s(205),d=s(7485),c=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function x(e){let{queryString:n=!1,groupId:s}=e;const l=(0,t.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(l.location.search);n.set(i,e),l.replace({...l.location,search:n.toString()})}),[i,l])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,i=h(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[c,u]=x({queryString:s,groupId:l}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,i]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:l}),b=(()=>{const e=c??m;return j({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{b&&d(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),p(e)}),[u,p,i]),tabValues:i}}var p=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:a}=e;const d=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),l=a[s].value;l!==r&&(c(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:a.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:u,onClick:o,...i,className:(0,l.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function _(e){const n=m(e);return(0,g.jsxs)("div",{className:(0,l.A)("tabs-container",b.tabList),children:[(0,g.jsx)(f,{...n,...e}),(0,g.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,g.jsx)(_,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const l={},i=r.createContext(l);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9d9f8394.1975ef2b.js b/assets/js/9d9f8394.095144f7.js similarity index 99% rename from assets/js/9d9f8394.1975ef2b.js rename to assets/js/9d9f8394.095144f7.js index 7a37542c5..2ce654312 100644 --- a/assets/js/9d9f8394.1975ef2b.js +++ b/assets/js/9d9f8394.095144f7.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9013],{4343:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=n(4848),s=n(8453),i=n(1470),a=n(9365);const o={title:"Troubleshooting",sidebar_position:8},l=void 0,c={id:"troubleshooting",title:"Troubleshooting",description:"File descriptor limits",source:"@site/docs/troubleshooting.md",sourceDirName:".",slug:"/troubleshooting",permalink:"/next/troubleshooting",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/troubleshooting.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"Troubleshooting",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Custom analytic tools",permalink:"/next/developers/custom-analytic-tools"}},u={},d=[{value:"File descriptor limits",id:"file-descriptor-limits",level:2},{value:"Database corruption issues",id:"database-corruption-issues",level:2},{value:"TrieNodeException errors",id:"trienodeexception-errors",level:2},{value:"Issues with lock files",id:"issues-with-lock-files",level:2},{value:"Block checksum mismatch",id:"block-checksum-mismatch",level:2},{value:"Plugin loading failure",id:"plugin-loading-failure",level:2}];function h(e){const t={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"file-descriptor-limits",children:"File descriptor limits"}),"\n",(0,r.jsx)(t.p,{children:'In some cases, file descriptor limits may cause errors like "Too many open files". To solve that, see the instructions for your platform below.'}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,r.jsxs)(t.p,{children:["To increase the limits for the user running Nethermind (given the process name of ",(0,r.jsx)(t.code,{children:"nethermind"}),"), run:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:'sudo echo "nethermind soft nofile 100000" > /etc/security/limits.d/nethermind.conf\nsudo echo "nethermind hard nofile 100000" >> /etc/security/limits.d/nethermind.conf\n'})})]}),(0,r.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(t.p,{children:"To increase the limits, run:"}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"ulimit -n 10000\n"})}),(0,r.jsxs)(t.p,{children:["If you run into issues with the above command, see the ",(0,r.jsx)(t.a,{href:"https://developer.apple.com/forums/thread/735798?answerId=762679022#762679022",children:"workaround"}),"."]}),(0,r.jsxs)(t.p,{children:["Note that the changes above are temporary and will be reset after the system reboot. To make them permanent, you can add them to your ",(0,r.jsx)(t.code,{children:"~/.bashrc"})," or ",(0,r.jsx)(t.code,{children:"~/.bash_profile"})," shell configuration file."]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"database-corruption-issues",children:"Database corruption issues"}),"\n",(0,r.jsx)(t.p,{children:"Database corruption is one of the issues that happen now and then; it has many possible causes among them:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Hardware failures: disk failures, memory errors, hardware overheating, etc."}),"\n",(0,r.jsx)(t.li,{children:"Power cuts and abrupt shutdowns"}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["There's no shortcut in such situations, and ",(0,r.jsx)(t.a,{href:"/next/fundamentals/sync#resync-a-node-from-scratch",children:"resyncing Nethermind from scratch"})," is the recommended remedy."]}),"\n",(0,r.jsx)(t.h2,{id:"trienodeexception-errors",children:"TrieNodeException errors"}),"\n",(0,r.jsxs)(t.p,{children:["If Nethermind reports ",(0,r.jsx)(t.code,{children:"Nethermind.Trie.TrieNodeException"})," or ",(0,r.jsx)(t.code,{children:"Nethermind.Trie.MissingTrieNodeException"})," errors, that usually indicates database corruption or missing data. The following steps may help:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"If the node is still syncing, wait until it has been fully synced and observe for errors"}),"\n",(0,r.jsx)(t.li,{children:"Restart the node and observe for errors"}),"\n",(0,r.jsx)(t.li,{children:"Update to the latest version of Nethermind"}),"\n",(0,r.jsxs)(t.li,{children:["If the above steps fail, a ",(0,r.jsx)(t.a,{href:"/next/fundamentals/sync#resync-a-node-from-scratch",children:"resync"})," may be required"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"issues-with-lock-files",children:"Issues with lock files"}),"\n",(0,r.jsx)(t.p,{children:"If Nethermind complains about the lock files, it perhaps because of one of the following:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Another Nethermind process is running using the same database"}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The database has not been appropriately closed on the last run.",(0,r.jsx)(t.br,{}),"\n","In this case, run the following command from the Nethermind database directory:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"find . -type f -name 'LOCK' -delete\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"block-checksum-mismatch",children:"Block checksum mismatch"}),"\n",(0,r.jsx)(t.p,{children:"Sometimes Nethermind may fail with an error similar the following:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"Corruption: block checksum mismatch: expected 2087346143, got 2983326672 in...\n"})}),"\n",(0,r.jsxs)(t.p,{children:["This tends to happen on XFS file systems under very high memory pressure. The issue can be mitigated by using the ",(0,r.jsx)(t.code,{children:"--Db.UseDirectIoForFlushAndCompactions true"})," option although at the cost of performance."]}),"\n",(0,r.jsx)(t.p,{children:"However, quite often, this is because of memory module issues."}),"\n",(0,r.jsx)(t.h2,{id:"plugin-loading-failure",children:"Plugin loading failure"}),"\n",(0,r.jsxs)(t.p,{children:["If Nethermind fails to start with a message like ",(0,r.jsx)(t.code,{children:"Failed to load plugin..."}),", this is most likely due to a missing or incompatible plugin. Reinstalling Nethermind usually fixes the issue."]}),"\n",(0,r.jsxs)(t.admonition,{type:"tip",children:[(0,r.jsxs)(t.p,{children:["If you install Nethermind over an existing installation, remove the old installation first, particularly the ",(0,r.jsx)(t.code,{children:"plugins"})," directory. Package managers do this automatically."]}),(0,r.jsx)(t.p,{children:"Watch out not to accidentally delete the database directory with the sync data, if any."})]})]})}function m(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>a});n(6540);var r=n(4164);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function a(e){let{children:t,hidden:n,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,a),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(4164),i=n(3104),a=n(6347),o=n(205),l=n(7485),c=n(1682),u=n(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const s=(0,a.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[a,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,d]=p({queryString:n,groupId:s}),[f,b]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,u.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),x=(()=>{const e=c??f;return m({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{x&&l(x)}),[x]);return{selectedValue:a,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,i]),tabValues:i}}var b=n(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=n(4848);function v(e){let{className:t,block:n,selectedValue:r,selectValue:a,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),u=e=>{const t=e.currentTarget,n=l.indexOf(t),s=o[n].value;s!==r&&(c(t),a(s))},d=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>l.push(e),onKeyDown:d,onClick:u,...i,className:(0,s.A)("tabs__item",x.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function y(e){let{lazy:t,children:n,selectedValue:i}=e;const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function j(e){const t=f(e);return(0,g.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,g.jsx)(v,{...t,...e}),(0,g.jsx)(y,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,g.jsx)(j,{...e,children:d(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function a(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9013],{4343:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=n(4848),s=n(8453),i=n(1470),a=n(9365);const o={title:"Troubleshooting",sidebar_position:8},l=void 0,c={id:"troubleshooting",title:"Troubleshooting",description:"File descriptor limits",source:"@site/docs/troubleshooting.md",sourceDirName:".",slug:"/troubleshooting",permalink:"/next/troubleshooting",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/troubleshooting.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"Troubleshooting",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Custom analytic tools",permalink:"/next/developers/custom-analytic-tools"}},u={},d=[{value:"File descriptor limits",id:"file-descriptor-limits",level:2},{value:"Database corruption issues",id:"database-corruption-issues",level:2},{value:"TrieNodeException errors",id:"trienodeexception-errors",level:2},{value:"Issues with lock files",id:"issues-with-lock-files",level:2},{value:"Block checksum mismatch",id:"block-checksum-mismatch",level:2},{value:"Plugin loading failure",id:"plugin-loading-failure",level:2}];function h(e){const t={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"file-descriptor-limits",children:"File descriptor limits"}),"\n",(0,r.jsx)(t.p,{children:'In some cases, file descriptor limits may cause errors like "Too many open files". To solve that, see the instructions for your platform below.'}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,r.jsxs)(t.p,{children:["To increase the limits for the user running Nethermind (given the process name of ",(0,r.jsx)(t.code,{children:"nethermind"}),"), run:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:'sudo echo "nethermind soft nofile 100000" > /etc/security/limits.d/nethermind.conf\nsudo echo "nethermind hard nofile 100000" >> /etc/security/limits.d/nethermind.conf\n'})})]}),(0,r.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(t.p,{children:"To increase the limits, run:"}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"ulimit -n 10000\n"})}),(0,r.jsxs)(t.p,{children:["If you run into issues with the above command, see the ",(0,r.jsx)(t.a,{href:"https://developer.apple.com/forums/thread/735798?answerId=762679022#762679022",children:"workaround"}),"."]}),(0,r.jsxs)(t.p,{children:["Note that the changes above are temporary and will be reset after the system reboot. To make them permanent, you can add them to your ",(0,r.jsx)(t.code,{children:"~/.bashrc"})," or ",(0,r.jsx)(t.code,{children:"~/.bash_profile"})," shell configuration file."]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"database-corruption-issues",children:"Database corruption issues"}),"\n",(0,r.jsx)(t.p,{children:"Database corruption is one of the issues that happen now and then; it has many possible causes among them:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Hardware failures: disk failures, memory errors, hardware overheating, etc."}),"\n",(0,r.jsx)(t.li,{children:"Power cuts and abrupt shutdowns"}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["There's no shortcut in such situations, and ",(0,r.jsx)(t.a,{href:"/next/fundamentals/sync#resync-a-node-from-scratch",children:"resyncing Nethermind from scratch"})," is the recommended remedy."]}),"\n",(0,r.jsx)(t.h2,{id:"trienodeexception-errors",children:"TrieNodeException errors"}),"\n",(0,r.jsxs)(t.p,{children:["If Nethermind reports ",(0,r.jsx)(t.code,{children:"Nethermind.Trie.TrieNodeException"})," or ",(0,r.jsx)(t.code,{children:"Nethermind.Trie.MissingTrieNodeException"})," errors, that usually indicates database corruption or missing data. The following steps may help:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"If the node is still syncing, wait until it has been fully synced and observe for errors"}),"\n",(0,r.jsx)(t.li,{children:"Restart the node and observe for errors"}),"\n",(0,r.jsx)(t.li,{children:"Update to the latest version of Nethermind"}),"\n",(0,r.jsxs)(t.li,{children:["If the above steps fail, a ",(0,r.jsx)(t.a,{href:"/next/fundamentals/sync#resync-a-node-from-scratch",children:"resync"})," may be required"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"issues-with-lock-files",children:"Issues with lock files"}),"\n",(0,r.jsx)(t.p,{children:"If Nethermind complains about the lock files, it perhaps because of one of the following:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Another Nethermind process is running using the same database"}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The database has not been appropriately closed on the last run.",(0,r.jsx)(t.br,{}),"\n","In this case, run the following command from the Nethermind database directory:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"find . -type f -name 'LOCK' -delete\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"block-checksum-mismatch",children:"Block checksum mismatch"}),"\n",(0,r.jsx)(t.p,{children:"Sometimes Nethermind may fail with an error similar the following:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"Corruption: block checksum mismatch: expected 2087346143, got 2983326672 in...\n"})}),"\n",(0,r.jsxs)(t.p,{children:["This tends to happen on XFS file systems under very high memory pressure. The issue can be mitigated by using the ",(0,r.jsx)(t.code,{children:"--Db.UseDirectIoForFlushAndCompactions true"})," option although at the cost of performance."]}),"\n",(0,r.jsx)(t.p,{children:"However, quite often, this is because of memory module issues."}),"\n",(0,r.jsx)(t.h2,{id:"plugin-loading-failure",children:"Plugin loading failure"}),"\n",(0,r.jsxs)(t.p,{children:["If Nethermind fails to start with a message like ",(0,r.jsx)(t.code,{children:"Failed to load plugin..."}),", this is most likely due to a missing or incompatible plugin. Reinstalling Nethermind usually fixes the issue."]}),"\n",(0,r.jsxs)(t.admonition,{type:"tip",children:[(0,r.jsxs)(t.p,{children:["If you install Nethermind over an existing installation, remove the old installation first, particularly the ",(0,r.jsx)(t.code,{children:"plugins"})," directory. Package managers do this automatically."]}),(0,r.jsx)(t.p,{children:"Watch out not to accidentally delete the database directory with the sync data, if any."})]})]})}function m(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>a});n(6540);var r=n(4164);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function a(e){let{children:t,hidden:n,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,a),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(4164),i=n(3104),a=n(6347),o=n(205),l=n(7485),c=n(1682),u=n(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const s=(0,a.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[a,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,d]=p({queryString:n,groupId:s}),[f,b]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,u.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),x=(()=>{const e=c??f;return m({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{x&&l(x)}),[x]);return{selectedValue:a,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,i]),tabValues:i}}var b=n(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=n(4848);function v(e){let{className:t,block:n,selectedValue:r,selectValue:a,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),u=e=>{const t=e.currentTarget,n=l.indexOf(t),s=o[n].value;s!==r&&(c(t),a(s))},d=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>l.push(e),onKeyDown:d,onClick:u,...i,className:(0,s.A)("tabs__item",x.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function y(e){let{lazy:t,children:n,selectedValue:i}=e;const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function j(e){const t=f(e);return(0,g.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,g.jsx)(v,{...t,...e}),(0,g.jsx)(y,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,g.jsx)(j,{...e,children:d(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function a(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9daa0d24.b8c72608.js b/assets/js/9daa0d24.ab3040f1.js similarity index 99% rename from assets/js/9daa0d24.b8c72608.js rename to assets/js/9daa0d24.ab3040f1.js index fbf553bb0..c672917f4 100644 --- a/assets/js/9daa0d24.b8c72608.js +++ b/assets/js/9daa0d24.ab3040f1.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9908],{740:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const s={title:"Pruning",sidebar_position:6},o=void 0,a={id:"fundamentals/pruning",title:"Pruning",description:"Overview",source:"@site/versioned_docs/version-1.26.0/fundamentals/pruning.md",sourceDirName:"fundamentals",slug:"/fundamentals/pruning",permalink:"/1.26.0/fundamentals/pruning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/pruning.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:6,frontMatter:{title:"Pruning",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Database",permalink:"/1.26.0/fundamentals/database"},next:{title:"Performance tuning",permalink:"/1.26.0/fundamentals/performance-tuning"}},l={},d=[{value:"Overview",id:"overview",level:2},{value:"How it works",id:"how-it-works",level:2},{value:"Preparation for full pruning",id:"preparation-for-full-pruning",level:2},{value:"Configuring full pruning",id:"configuring-full-pruning",level:2},{value:"Manual",id:"manual",level:3},{value:"State database size threshold",id:"state-db-threshold",level:3},{value:"Remaining storage space threshold",id:"storage-left-threshold",level:3},{value:"Monitoring progress",id:"monitoring-progress",level:2},{value:"Additional settings",id:"additional-settings",level:2},{value:"Memory budget",id:"memory-budget",level:3},{value:"Pruning completion behavior",id:"pruning-completion-behavior",level:3},{value:"Number of pruning concurrent tasks",id:"number-of-pruning-concurrent-tasks",level:3},{value:"In-memory cache size",id:"in-memory-cache-size",level:3},{value:"Side notes",id:"side-notes",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsx)(n.p,{children:"Pruning pertains to eliminating or cleaning obsolete historical data to optimize disk space. Clients are responsible for maintaining the world state, which comprises a database that portrays the current Ethereum network status. The world state encompasses accounts, contracts, and other information."}),"\n",(0,r.jsxs)(n.p,{children:["Pruning aims to reduce disk requirements by storing only the current world state and removing historical data. This differs from archive nodes that retain complete transaction and state history. Pruning is helpful for users who don't require historical data and prefer to interact solely with the current state of the network. However, pruning may limit the client's ability to fulfill requests that depend on historical information. Nethermind provides two kinds of pruning \u2013 ",(0,r.jsx)(n.em,{children:"full pruning"})," and ",(0,r.jsx)(n.em,{children:"in-memory pruning"}),"; both are enabled by default, also called ",(0,r.jsx)(n.em,{children:"hybrid pruning"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,r.jsx)(n.p,{children:"During synchronization using the snap sync method, Nethermind produces a local copy of the Ethereum network state, which typically amounts to approximately 160 GB (state database). The entire database may rise to 600\u2013650GB. Although this size increases by around 30 GB each week, specific historical data is retained that is not necessary for node operation or to maintain the current Ethereum state."}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is activated and initiated, a thorough examination of the entire state tree is conducted to determine which data is no longer required and can be treated as historical. It then determines which information corresponds to the current state and duplicates it alongside the existing version. During verification of each node in the state, the new pruned state replaces the previous one. Once the verifier confirms everything is functioning correctly, the old state database is eliminated, resulting in significant savings in disk space. As a result, the size of the database will be close to its initial size again."}),"\n",(0,r.jsx)(n.p,{children:"In-memory pruning is a continuous process that occurs under regular operation. Instead of saving a new state on each block, Nethermind will keep it in memory until a certain threshold is reached. At that point, Nethermind will only store data required by the newer state and discard unnecessary ones. This significantly reduces the total amount of data written while improving block processing performance. In-memory pruning is independent of full pruning."}),"\n",(0,r.jsx)(n.h2,{id:"preparation-for-full-pruning",children:"Preparation for full pruning"}),"\n",(0,r.jsx)(n.p,{children:"Because full pruning is executed while the node is connected to the network, it can affect the node's performance.\nThe process can consume significant memory, CPU, and disk resources, impacting block processing time.\nThis, in turn, can lead to reduced rewards for validator setups, particularly for proof-of-stake chains."}),"\n",(0,r.jsx)(n.p,{children:"Currently, full pruning takes between 20 to 30 hours to complete, although the duration may vary based on the hardware configuration. At least 200 GB of storage is required to ensure pruning runs smoothly. Nevertheless, it's recommended to have 300 GB or more."}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["Do not turn on full pruning on an archive node, as these are two opposing features. Archive nodes are designed to store\ncomplete historical data, whereas full pruning eliminates it. Use the option ",(0,r.jsx)(n.code,{children:"--Pruning.Mode None"})," to ensure that pruning is turned off completely."]})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-full-pruning",children:"Configuring full pruning"}),"\n",(0,r.jsxs)(n.p,{children:["As a very first point, check out the ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#pruning",children:"pruning configuration options"}),".",(0,r.jsx)(n.br,{}),"\n","To activate full pruning, use either the ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," or ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Full"})," command line options."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Setting ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," enables both ",(0,r.jsx)(n.code,{children:"InMemory"})," and ",(0,r.jsx)(n.code,{children:"Full"})," modes. The ",(0,r.jsx)(n.code,{children:"InMemory"})," mode helps the node storage grow slower than the ",(0,r.jsx)(n.code,{children:"Full"})," mode. Because of this, full pruning is executed less frequently, promoting\nhealthier disk operation. Since full pruning is hardware-intensive, this configuration also benefits attestation results."]})}),"\n",(0,r.jsx)(n.p,{children:"The next step is to determine the trigger conditions for full pruning. Currently, there are 3 options available:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#manual",children:"Manual"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#state-db-threshold",children:"State database size threshold"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#storage-left-threshold",children:"Remaining storage space threshold"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"manual",children:"Manual"}),"\n",(0,r.jsxs)(n.p,{children:["Manual mode triggers full pruning only upon request, providing complete control. To configure this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger Manual"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Pruning can also be triggered using the ",(0,r.jsx)(n.a,{href:"/1.26.0/interacting/json-rpc-ns/admin#admin_prune",children:(0,r.jsx)(n.code,{children:"admin_prune"})})," JSON-RPC method. Here's how to configure it:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Add the ",(0,r.jsx)(n.code,{children:"admin"})," namespace to ",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"}),". For instance,",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules [eth,net,...,admin]"})]}),"\n",(0,r.jsxs)(n.li,{children:["Create a separate port for ",(0,r.jsx)(n.code,{children:"admin"})," namespace only:",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls http://localhost:8555|http|admin"})]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Restart the client, and if everything is configured correctly, you should be able to call the ",(0,r.jsx)(n.code,{children:"admin_prune"})," method, and full pruning should start."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"One potential disadvantage of the manual mode is that if full pruning is not triggered on time, it cannot be performed later because of insufficient disk space. In such cases, the only option to free up the disk space is to resync the node from scratch."})}),"\n",(0,r.jsx)(n.h3,{id:"state-db-threshold",children:"State database size threshold"}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning automatically when the state database reaches the specified size.\nTo enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger StateDbSize --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning automatically whenever the state database size exceeds 256,000\nMB (250 GB). Assuming the state database has initially around 160 GB, pruning will be triggered when the database size grows by more than 90 GB."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"To avoid unexpected behavior and ensure that full pruning can be completed in full, it's recommended to set the threshold value to trigger pruning before the free disk space drops below 250 GB as a minimum. This ensures that sufficient free disk space is available for the pruning process."})}),"\n",(0,r.jsx)(n.h3,{id:"storage-left-threshold",children:"Remaining storage space threshold"}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsx)(n.p,{children:"This is the recommended approach as it ensures that pruning is executed on time."})}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning when the storage space reaches the specified minimum. To enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger VolumeFreeSpace --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements. However, it should not be set below the default value of ",(0,r.jsx)(n.code,{children:"256000"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning whenever free disk space drops to 256,000 MB (250 GB) or below. This ensures that pruning is invoked as infrequently as possible while also ensuring that sufficient free storage is always available to trigger it."}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsx)(n.p,{children:"It's recommended not to set the value below 250 GB for stability reasons. In reality, full pruning should require approximately the same amount of storage as a fresh state database (around 160 GB). Still, it also needs a threshold for processing and other operations since it creates a copy of the existing state database. Therefore, it's essential to maintain a minimum amount of storage to ensure a robust pruning performance."})}),"\n",(0,r.jsx)(n.h2,{id:"monitoring-progress",children:"Monitoring progress"}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is triggered correctly, the corresponding messages appear in the Nethermind logs."}),"\n",(0,r.jsx)(n.p,{children:"The very first ones should be:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Ready to start: pruning garbage before state with root .\nWARN: Full Pruning Started on root hash : do not close the node until finished or progress will be lost.\n"})}),"\n",(0,r.jsx)(n.p,{children:"From that moment, ensure that no restarts will be performed on Nethermind to ensure that full pruning runs correctly.\nAfter a few minutes first logs with progress would start to appear. For instance:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning In Progress: 00:00:57.0603307 1.00 mln nodes mirrored.\nFull Pruning In Progress: 00:01:40.3677103 2.00 mln nodes mirrored.\nFull Pruning In Progress: 00:02:25.6437030 3.00 mln nodes mirrored.\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Pruning may take even ",(0,r.jsx)(n.em,{children:"more than 30 hours"}),", depending on hardware configuration."]}),"\n",(0,r.jsx)(n.p,{children:"When pruning is completed, there is a log message similar the following:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Finished: 15:25:59.1620756 1,560.29 mln nodes mirrored.\n"})}),"\n",(0,r.jsx)(n.p,{children:"As you may notice, it took around 15 hours in this example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Since the amount of mirrored nodes is not a static value, providing a simple progress indicator in percentage is impossible. Therefore, the approximate value given should be used to determine when full pruning is expected to be completed."})}),"\n",(0,r.jsx)(n.h2,{id:"additional-settings",children:"Additional settings"}),"\n",(0,r.jsx)(n.h3,{id:"memory-budget",children:"Memory budget"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," configuration option controls the memory budget allocated for the trie visit during\nthe full pruning process. During pruning, pending nodes are queued to a pool of nodes whose size is determined by this value. This allows multiple nodes to share a single I/O. By increasing this value, the required read IOP per second can be significantly reduced, resulting in a faster full pruning operation. However, this improvement comes at the expense of increased memory usage."]}),"\n",(0,r.jsxs)(n.p,{children:["Assuming your system has 64GB of RAM, with Nethermind, the consensus client, and system expenses consuming 20GB,\nyou need to determine the maximum value for ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," while ensuring the system remains stable and respects the given limit. In this case, you have 44 GB (64 GB - 20 GB) of available memory for increasing the ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," value. To calculate the maximum value in MB, multiply the available memory by 1024: ",(0,r.jsx)(n.code,{children:"44 GB * 1024 = 45,056 MB"})]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Because of the workload on Ethereum Mainnet, setting the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," higher than 16 GB may not provide any additional performance benefits."]})}),"\n",(0,r.jsx)(n.p,{children:"Please note that this example assumes the remaining 44 GB of memory is sufficient for the full pruning memory budget.\nDepending on the specific use case and system requirements, it may be necessary to adjust the value further to optimize performance and resource usage."}),"\n",(0,r.jsx)(n.h3,{id:"pruning-completion-behavior",children:"Pruning completion behavior"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})," configuration option determines Nethermind's behavior after full pruning is completed. By default, Nethermind will continue to progress as usual. However, if a user wishes to shut down the node after pruning, there are three options available:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"None"}),": No action taken"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Nethermind shuts down if pruning succeeds"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"AlwaysShutdown"}),": Nethermind shuts down once pruning completes, regardless of whether it succeeds or fails"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"number-of-pruning-concurrent-tasks",children:"Number of pruning concurrent tasks"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})," configuration option determines the number of parallel tasks/threads that can be used by pruning:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"-1"}),": uses the number of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"0"}),": uses 25% of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"1"}),": runs on a single thread"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The recommended value depends on the type of node being used. If the node needs to be responsive (e.g., RPC or validator), using a value below the number of logical processors is recommended. The default value is recommended if the node doesn't have many other responsibilities but needs to follow the chain without delays and produce live logs reliably. If the node doesn't need to be responsive, has very fast I/O (such as NVMe), and the shortest pruning time\nis desired, this can be set to 2\u20133 times the number of logical processors."}),"\n",(0,r.jsx)(n.h3,{id:"in-memory-cache-size",children:"In-memory cache size"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.CacheMb"})," configuration option determines the size, in MB, of the memory pool of nodes used for in-memory pruning. The default value is 1024. Increasing this value can help reduce the rate at which the state database grows."]}),"\n",(0,r.jsx)(n.h2,{id:"side-notes",children:"Side notes"}),"\n",(0,r.jsx)(n.p,{children:"For pruning, keep in mind the following:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Full pruning is a cumbersome task, but it's performed in the background, so the node continues progressing and following the chain."}),"\n",(0,r.jsx)(n.li,{children:"The process' heaviness may affect the effectiveness of the validator rewards. Still, since it's executed only once every few months, it shouldn't have a significant impact on overall results (we've xperienced approximately 5\u201310% loss of rewards during full pruning)."}),"\n",(0,r.jsx)(n.li,{children:"Ensure that your storage has at least 250 GB of free space after syncing the node. Otherwise, full pruning will never complete successfully."}),"\n",(0,r.jsxs)(n.li,{children:["Several things can be done to reduce the size of the database after syncing: setting ",(0,r.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})," and ",(0,r.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})," to a proper value higher than 0, using a consensus client that requires less storage, and setting logs to the lowest level to avoid log spamming."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>a});var r=i(6540);const t={},s=r.createContext(t);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9908],{740:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const s={title:"Pruning",sidebar_position:6},o=void 0,a={id:"fundamentals/pruning",title:"Pruning",description:"Overview",source:"@site/versioned_docs/version-1.26.0/fundamentals/pruning.md",sourceDirName:"fundamentals",slug:"/fundamentals/pruning",permalink:"/1.26.0/fundamentals/pruning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/pruning.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:6,frontMatter:{title:"Pruning",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Database",permalink:"/1.26.0/fundamentals/database"},next:{title:"Performance tuning",permalink:"/1.26.0/fundamentals/performance-tuning"}},l={},d=[{value:"Overview",id:"overview",level:2},{value:"How it works",id:"how-it-works",level:2},{value:"Preparation for full pruning",id:"preparation-for-full-pruning",level:2},{value:"Configuring full pruning",id:"configuring-full-pruning",level:2},{value:"Manual",id:"manual",level:3},{value:"State database size threshold",id:"state-db-threshold",level:3},{value:"Remaining storage space threshold",id:"storage-left-threshold",level:3},{value:"Monitoring progress",id:"monitoring-progress",level:2},{value:"Additional settings",id:"additional-settings",level:2},{value:"Memory budget",id:"memory-budget",level:3},{value:"Pruning completion behavior",id:"pruning-completion-behavior",level:3},{value:"Number of pruning concurrent tasks",id:"number-of-pruning-concurrent-tasks",level:3},{value:"In-memory cache size",id:"in-memory-cache-size",level:3},{value:"Side notes",id:"side-notes",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsx)(n.p,{children:"Pruning pertains to eliminating or cleaning obsolete historical data to optimize disk space. Clients are responsible for maintaining the world state, which comprises a database that portrays the current Ethereum network status. The world state encompasses accounts, contracts, and other information."}),"\n",(0,r.jsxs)(n.p,{children:["Pruning aims to reduce disk requirements by storing only the current world state and removing historical data. This differs from archive nodes that retain complete transaction and state history. Pruning is helpful for users who don't require historical data and prefer to interact solely with the current state of the network. However, pruning may limit the client's ability to fulfill requests that depend on historical information. Nethermind provides two kinds of pruning \u2013 ",(0,r.jsx)(n.em,{children:"full pruning"})," and ",(0,r.jsx)(n.em,{children:"in-memory pruning"}),"; both are enabled by default, also called ",(0,r.jsx)(n.em,{children:"hybrid pruning"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,r.jsx)(n.p,{children:"During synchronization using the snap sync method, Nethermind produces a local copy of the Ethereum network state, which typically amounts to approximately 160 GB (state database). The entire database may rise to 600\u2013650GB. Although this size increases by around 30 GB each week, specific historical data is retained that is not necessary for node operation or to maintain the current Ethereum state."}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is activated and initiated, a thorough examination of the entire state tree is conducted to determine which data is no longer required and can be treated as historical. It then determines which information corresponds to the current state and duplicates it alongside the existing version. During verification of each node in the state, the new pruned state replaces the previous one. Once the verifier confirms everything is functioning correctly, the old state database is eliminated, resulting in significant savings in disk space. As a result, the size of the database will be close to its initial size again."}),"\n",(0,r.jsx)(n.p,{children:"In-memory pruning is a continuous process that occurs under regular operation. Instead of saving a new state on each block, Nethermind will keep it in memory until a certain threshold is reached. At that point, Nethermind will only store data required by the newer state and discard unnecessary ones. This significantly reduces the total amount of data written while improving block processing performance. In-memory pruning is independent of full pruning."}),"\n",(0,r.jsx)(n.h2,{id:"preparation-for-full-pruning",children:"Preparation for full pruning"}),"\n",(0,r.jsx)(n.p,{children:"Because full pruning is executed while the node is connected to the network, it can affect the node's performance.\nThe process can consume significant memory, CPU, and disk resources, impacting block processing time.\nThis, in turn, can lead to reduced rewards for validator setups, particularly for proof-of-stake chains."}),"\n",(0,r.jsx)(n.p,{children:"Currently, full pruning takes between 20 to 30 hours to complete, although the duration may vary based on the hardware configuration. At least 200 GB of storage is required to ensure pruning runs smoothly. Nevertheless, it's recommended to have 300 GB or more."}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["Do not turn on full pruning on an archive node, as these are two opposing features. Archive nodes are designed to store\ncomplete historical data, whereas full pruning eliminates it. Use the option ",(0,r.jsx)(n.code,{children:"--Pruning.Mode None"})," to ensure that pruning is turned off completely."]})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-full-pruning",children:"Configuring full pruning"}),"\n",(0,r.jsxs)(n.p,{children:["As a very first point, check out the ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#pruning",children:"pruning configuration options"}),".",(0,r.jsx)(n.br,{}),"\n","To activate full pruning, use either the ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," or ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Full"})," command line options."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Setting ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," enables both ",(0,r.jsx)(n.code,{children:"InMemory"})," and ",(0,r.jsx)(n.code,{children:"Full"})," modes. The ",(0,r.jsx)(n.code,{children:"InMemory"})," mode helps the node storage grow slower than the ",(0,r.jsx)(n.code,{children:"Full"})," mode. Because of this, full pruning is executed less frequently, promoting\nhealthier disk operation. Since full pruning is hardware-intensive, this configuration also benefits attestation results."]})}),"\n",(0,r.jsx)(n.p,{children:"The next step is to determine the trigger conditions for full pruning. Currently, there are 3 options available:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#manual",children:"Manual"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#state-db-threshold",children:"State database size threshold"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#storage-left-threshold",children:"Remaining storage space threshold"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"manual",children:"Manual"}),"\n",(0,r.jsxs)(n.p,{children:["Manual mode triggers full pruning only upon request, providing complete control. To configure this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger Manual"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Pruning can also be triggered using the ",(0,r.jsx)(n.a,{href:"/1.26.0/interacting/json-rpc-ns/admin#admin_prune",children:(0,r.jsx)(n.code,{children:"admin_prune"})})," JSON-RPC method. Here's how to configure it:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Add the ",(0,r.jsx)(n.code,{children:"admin"})," namespace to ",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"}),". For instance,",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules [eth,net,...,admin]"})]}),"\n",(0,r.jsxs)(n.li,{children:["Create a separate port for ",(0,r.jsx)(n.code,{children:"admin"})," namespace only:",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls http://localhost:8555|http|admin"})]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Restart the client, and if everything is configured correctly, you should be able to call the ",(0,r.jsx)(n.code,{children:"admin_prune"})," method, and full pruning should start."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"One potential disadvantage of the manual mode is that if full pruning is not triggered on time, it cannot be performed later because of insufficient disk space. In such cases, the only option to free up the disk space is to resync the node from scratch."})}),"\n",(0,r.jsx)(n.h3,{id:"state-db-threshold",children:"State database size threshold"}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning automatically when the state database reaches the specified size.\nTo enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger StateDbSize --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning automatically whenever the state database size exceeds 256,000\nMB (250 GB). Assuming the state database has initially around 160 GB, pruning will be triggered when the database size grows by more than 90 GB."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"To avoid unexpected behavior and ensure that full pruning can be completed in full, it's recommended to set the threshold value to trigger pruning before the free disk space drops below 250 GB as a minimum. This ensures that sufficient free disk space is available for the pruning process."})}),"\n",(0,r.jsx)(n.h3,{id:"storage-left-threshold",children:"Remaining storage space threshold"}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsx)(n.p,{children:"This is the recommended approach as it ensures that pruning is executed on time."})}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning when the storage space reaches the specified minimum. To enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger VolumeFreeSpace --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements. However, it should not be set below the default value of ",(0,r.jsx)(n.code,{children:"256000"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning whenever free disk space drops to 256,000 MB (250 GB) or below. This ensures that pruning is invoked as infrequently as possible while also ensuring that sufficient free storage is always available to trigger it."}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsx)(n.p,{children:"It's recommended not to set the value below 250 GB for stability reasons. In reality, full pruning should require approximately the same amount of storage as a fresh state database (around 160 GB). Still, it also needs a threshold for processing and other operations since it creates a copy of the existing state database. Therefore, it's essential to maintain a minimum amount of storage to ensure a robust pruning performance."})}),"\n",(0,r.jsx)(n.h2,{id:"monitoring-progress",children:"Monitoring progress"}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is triggered correctly, the corresponding messages appear in the Nethermind logs."}),"\n",(0,r.jsx)(n.p,{children:"The very first ones should be:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Ready to start: pruning garbage before state with root .\nWARN: Full Pruning Started on root hash : do not close the node until finished or progress will be lost.\n"})}),"\n",(0,r.jsx)(n.p,{children:"From that moment, ensure that no restarts will be performed on Nethermind to ensure that full pruning runs correctly.\nAfter a few minutes first logs with progress would start to appear. For instance:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning In Progress: 00:00:57.0603307 1.00 mln nodes mirrored.\nFull Pruning In Progress: 00:01:40.3677103 2.00 mln nodes mirrored.\nFull Pruning In Progress: 00:02:25.6437030 3.00 mln nodes mirrored.\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Pruning may take even ",(0,r.jsx)(n.em,{children:"more than 30 hours"}),", depending on hardware configuration."]}),"\n",(0,r.jsx)(n.p,{children:"When pruning is completed, there is a log message similar the following:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Finished: 15:25:59.1620756 1,560.29 mln nodes mirrored.\n"})}),"\n",(0,r.jsx)(n.p,{children:"As you may notice, it took around 15 hours in this example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Since the amount of mirrored nodes is not a static value, providing a simple progress indicator in percentage is impossible. Therefore, the approximate value given should be used to determine when full pruning is expected to be completed."})}),"\n",(0,r.jsx)(n.h2,{id:"additional-settings",children:"Additional settings"}),"\n",(0,r.jsx)(n.h3,{id:"memory-budget",children:"Memory budget"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," configuration option controls the memory budget allocated for the trie visit during\nthe full pruning process. During pruning, pending nodes are queued to a pool of nodes whose size is determined by this value. This allows multiple nodes to share a single I/O. By increasing this value, the required read IOP per second can be significantly reduced, resulting in a faster full pruning operation. However, this improvement comes at the expense of increased memory usage."]}),"\n",(0,r.jsxs)(n.p,{children:["Assuming your system has 64GB of RAM, with Nethermind, the consensus client, and system expenses consuming 20GB,\nyou need to determine the maximum value for ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," while ensuring the system remains stable and respects the given limit. In this case, you have 44 GB (64 GB - 20 GB) of available memory for increasing the ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," value. To calculate the maximum value in MB, multiply the available memory by 1024: ",(0,r.jsx)(n.code,{children:"44 GB * 1024 = 45,056 MB"})]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Because of the workload on Ethereum Mainnet, setting the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," higher than 16 GB may not provide any additional performance benefits."]})}),"\n",(0,r.jsx)(n.p,{children:"Please note that this example assumes the remaining 44 GB of memory is sufficient for the full pruning memory budget.\nDepending on the specific use case and system requirements, it may be necessary to adjust the value further to optimize performance and resource usage."}),"\n",(0,r.jsx)(n.h3,{id:"pruning-completion-behavior",children:"Pruning completion behavior"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})," configuration option determines Nethermind's behavior after full pruning is completed. By default, Nethermind will continue to progress as usual. However, if a user wishes to shut down the node after pruning, there are three options available:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"None"}),": No action taken"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Nethermind shuts down if pruning succeeds"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"AlwaysShutdown"}),": Nethermind shuts down once pruning completes, regardless of whether it succeeds or fails"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"number-of-pruning-concurrent-tasks",children:"Number of pruning concurrent tasks"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})," configuration option determines the number of parallel tasks/threads that can be used by pruning:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"-1"}),": uses the number of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"0"}),": uses 25% of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"1"}),": runs on a single thread"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The recommended value depends on the type of node being used. If the node needs to be responsive (e.g., RPC or validator), using a value below the number of logical processors is recommended. The default value is recommended if the node doesn't have many other responsibilities but needs to follow the chain without delays and produce live logs reliably. If the node doesn't need to be responsive, has very fast I/O (such as NVMe), and the shortest pruning time\nis desired, this can be set to 2\u20133 times the number of logical processors."}),"\n",(0,r.jsx)(n.h3,{id:"in-memory-cache-size",children:"In-memory cache size"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.CacheMb"})," configuration option determines the size, in MB, of the memory pool of nodes used for in-memory pruning. The default value is 1024. Increasing this value can help reduce the rate at which the state database grows."]}),"\n",(0,r.jsx)(n.h2,{id:"side-notes",children:"Side notes"}),"\n",(0,r.jsx)(n.p,{children:"For pruning, keep in mind the following:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Full pruning is a cumbersome task, but it's performed in the background, so the node continues progressing and following the chain."}),"\n",(0,r.jsx)(n.li,{children:"The process' heaviness may affect the effectiveness of the validator rewards. Still, since it's executed only once every few months, it shouldn't have a significant impact on overall results (we've xperienced approximately 5\u201310% loss of rewards during full pruning)."}),"\n",(0,r.jsx)(n.li,{children:"Ensure that your storage has at least 250 GB of free space after syncing the node. Otherwise, full pruning will never complete successfully."}),"\n",(0,r.jsxs)(n.li,{children:["Several things can be done to reduce the size of the database after syncing: setting ",(0,r.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})," and ",(0,r.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})," to a proper value higher than 0, using a consensus client that requires less storage, and setting logs to the lowest level to avoid log spamming."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>a});var r=i(6540);const t={},s=r.createContext(t);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a0484a41.8f74ef48.js b/assets/js/a0484a41.dbeab880.js similarity index 99% rename from assets/js/a0484a41.8f74ef48.js rename to assets/js/a0484a41.dbeab880.js index 46d521d24..bcbeacc27 100644 --- a/assets/js/a0484a41.8f74ef48.js +++ b/assets/js/a0484a41.dbeab880.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4240],{4876:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>o,toc:()=>d});var i=s(4848),r=s(8453);const t={title:"Validators",sidebar_position:0},a=void 0,o={id:"validators/validators",title:"Validators",description:"General considerations",source:"@site/versioned_docs/version-1.29.0/validators/validators.md",sourceDirName:"validators",slug:"/validators/",permalink:"/validators/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/validators/validators.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Health check",permalink:"/monitoring/health-check"},next:{title:"Aura-based validators",permalink:"/validators/aura"}},l={},d=[{value:"General considerations",id:"general-considerations",level:2},{value:"Hardware configurations",id:"hardware-configurations",level:2},{value:"On-premises",id:"on-premises",level:3},{value:"AWS",id:"aws",level:3},{value:"Azure",id:"azure",level:3},{value:"GCP",id:"gcp",level:3},{value:"Gnosis validators",id:"gnosis-validators",level:2}];function c(e){const n={a:"a",admonition:"admonition",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"general-considerations",children:"General considerations"}),"\n",(0,i.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,i.jsxs)(n.p,{children:["Please check out the ",(0,i.jsx)(n.a,{href:"/fundamentals/security",children:"security considerations"})," before using Nethermind as a validator."]})}),"\n",(0,i.jsxs)(n.p,{children:["For Ethereum validators, we highly recommend checking out ",(0,i.jsx)(n.a,{href:"https://ethereum.org/staking",children:"Staking with Ethereum"})," and ",(0,i.jsx)(n.a,{href:"https://launchpad.ethereum.org/en/checklist",children:"Validator checklist"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"hardware-configurations",children:"Hardware configurations"}),"\n",(0,i.jsx)(n.p,{children:"The following hardware configurations for Ethereum Mainnet validators have been battle-tested by us and our users. We have observed excellent validator performance and stability with these configurations."}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Before setting up your infrastructure, check out ",(0,i.jsx)(n.a,{href:"/get-started/system-requirements#hardware-requirements",children:"Nethermind hardware requirements"}),"."]})}),"\n",(0,i.jsx)(n.h3,{id:"on-premises",children:"On-premises"}),"\n",(0,i.jsx)(n.p,{children:"A single validator on Intel NUC 11:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"CPU: Intel Core i7-1165G7"}),"\n",(0,i.jsx)(n.li,{children:"Memory: Crucial 32GB DDR4-3200 SODIMM"}),"\n",(0,i.jsx)(n.li,{children:"Storage: Samsung 980 PRO PCIe NVMe SSD 2TB"}),"\n",(0,i.jsx)(n.li,{children:"Internet speed: 620 Mbps download, 160 Mbps upload"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"aws",children:"AWS"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following EC2 instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m6i/",children:"m6i.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m7g/",children:"m7g.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/t4/",children:"t4g.small"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"azure",children:"Azure"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following VM instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dv5-dsv5-series#dv5-series",children:"Standard_D8_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dpsv5-dpdsv5-series#dpsv5-series",children:"Standard_D8ps_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dplsv5-dpldsv5-series#dplsv5-series",children:"Standard_D2pls_v5"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"gcp",children:"GCP"}),"\n",(0,i.jsxs)(n.p,{children:["Multiple validators on the ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/compute-optimized-machines#c2d-high-mem",children:"c2d-highmem-4"})," instance: 4 vCPU, 32 GB memory"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/general-purpose-machines#sharedcore",children:"e2-small"})," instances."]}),"\n",(0,i.jsx)(n.h2,{id:"gnosis-validators",children:"Gnosis validators"}),"\n",(0,i.jsxs)(n.p,{children:["To set up a Gnosis Chain validator, see the ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node",children:"Gnosis Chain documentation"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>o});var i=s(6540);const r={},t=i.createContext(r);function a(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4240],{4876:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>o,toc:()=>d});var i=s(4848),r=s(8453);const t={title:"Validators",sidebar_position:0},a=void 0,o={id:"validators/validators",title:"Validators",description:"General considerations",source:"@site/versioned_docs/version-1.29.0/validators/validators.md",sourceDirName:"validators",slug:"/validators/",permalink:"/validators/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/validators/validators.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Health check",permalink:"/monitoring/health-check"},next:{title:"Aura-based validators",permalink:"/validators/aura"}},l={},d=[{value:"General considerations",id:"general-considerations",level:2},{value:"Hardware configurations",id:"hardware-configurations",level:2},{value:"On-premises",id:"on-premises",level:3},{value:"AWS",id:"aws",level:3},{value:"Azure",id:"azure",level:3},{value:"GCP",id:"gcp",level:3},{value:"Gnosis validators",id:"gnosis-validators",level:2}];function c(e){const n={a:"a",admonition:"admonition",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"general-considerations",children:"General considerations"}),"\n",(0,i.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,i.jsxs)(n.p,{children:["Please check out the ",(0,i.jsx)(n.a,{href:"/fundamentals/security",children:"security considerations"})," before using Nethermind as a validator."]})}),"\n",(0,i.jsxs)(n.p,{children:["For Ethereum validators, we highly recommend checking out ",(0,i.jsx)(n.a,{href:"https://ethereum.org/staking",children:"Staking with Ethereum"})," and ",(0,i.jsx)(n.a,{href:"https://launchpad.ethereum.org/en/checklist",children:"Validator checklist"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"hardware-configurations",children:"Hardware configurations"}),"\n",(0,i.jsx)(n.p,{children:"The following hardware configurations for Ethereum Mainnet validators have been battle-tested by us and our users. We have observed excellent validator performance and stability with these configurations."}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Before setting up your infrastructure, check out ",(0,i.jsx)(n.a,{href:"/get-started/system-requirements#hardware-requirements",children:"Nethermind hardware requirements"}),"."]})}),"\n",(0,i.jsx)(n.h3,{id:"on-premises",children:"On-premises"}),"\n",(0,i.jsx)(n.p,{children:"A single validator on Intel NUC 11:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"CPU: Intel Core i7-1165G7"}),"\n",(0,i.jsx)(n.li,{children:"Memory: Crucial 32GB DDR4-3200 SODIMM"}),"\n",(0,i.jsx)(n.li,{children:"Storage: Samsung 980 PRO PCIe NVMe SSD 2TB"}),"\n",(0,i.jsx)(n.li,{children:"Internet speed: 620 Mbps download, 160 Mbps upload"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"aws",children:"AWS"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following EC2 instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m6i/",children:"m6i.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m7g/",children:"m7g.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/t4/",children:"t4g.small"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"azure",children:"Azure"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following VM instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dv5-dsv5-series#dv5-series",children:"Standard_D8_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dpsv5-dpdsv5-series#dpsv5-series",children:"Standard_D8ps_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dplsv5-dpldsv5-series#dplsv5-series",children:"Standard_D2pls_v5"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"gcp",children:"GCP"}),"\n",(0,i.jsxs)(n.p,{children:["Multiple validators on the ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/compute-optimized-machines#c2d-high-mem",children:"c2d-highmem-4"})," instance: 4 vCPU, 32 GB memory"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/general-purpose-machines#sharedcore",children:"e2-small"})," instances."]}),"\n",(0,i.jsx)(n.h2,{id:"gnosis-validators",children:"Gnosis validators"}),"\n",(0,i.jsxs)(n.p,{children:["To set up a Gnosis Chain validator, see the ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node",children:"Gnosis Chain documentation"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>o});var i=s(6540);const r={},t=i.createContext(r);function a(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a05b08ae.425c63d3.js b/assets/js/a05b08ae.612e1596.js similarity index 99% rename from assets/js/a05b08ae.425c63d3.js rename to assets/js/a05b08ae.612e1596.js index e2839f02c..6dbd0e44f 100644 --- a/assets/js/a05b08ae.425c63d3.js +++ b/assets/js/a05b08ae.612e1596.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3451],{6894:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>m,frontMatter:()=>l,metadata:()=>o,toc:()=>h});var r=t(4848),s=t(8453),i=t(1470),a=t(9365);const l={title:"Installing Nethermind",sidebar_position:2},d=void 0,o={id:"get-started/installing-nethermind",title:"Installing Nethermind",description:"Nethermind can be installed in several ways:",source:"@site/versioned_docs/version-1.29.0/get-started/installing-nethermind.md",sourceDirName:"get-started",slug:"/get-started/installing-nethermind",permalink:"/get-started/installing-nethermind",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/get-started/installing-nethermind.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Installing Nethermind",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"System requirements",permalink:"/get-started/system-requirements"},next:{title:"Running a node",permalink:"/get-started/running-node/"}},c={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Package managers",id:"package-managers",level:2},{value:"Standalone downloads",id:"standalone-downloads",level:2},{value:"Configuring as a Linux service",id:"configuring-as-a-linux-service",level:3},{value:"Docker container",id:"docker-container",level:2}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"Nethermind can be installed in several ways:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#package-managers",children:"Via a package manager"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"As a standalone download"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#docker-container",children:"As a Docker container"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/developers/building-from-source",children:"By building from source code"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Does not apply to Docker distributions."})}),"\n",(0,r.jsx)(n.p,{children:"Before installing Nethermind, your specific platform might need the following prerequisites."}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsx)(a.A,{value:"linux",label:"Linux",children:"None"}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsxs)(n.p,{children:["Although the modern versions of Windows are bundled with a recent version of ",(0,r.jsx)(n.a,{href:"https://aka.ms/vcredist",children:"Microsoft Visual C++ Redistributable"}),", in some cases, it may need an update:"]}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install Microsoft.VCRedist.2015+.x64\n"})})]}),(0,r.jsx)(a.A,{value:"macos",label:"macOS",children:"None"})]}),"\n",(0,r.jsx)(n.h2,{id:"package-managers",children:"Package managers"}),"\n",(0,r.jsx)(n.p,{children:"Package managers are the easiest and fastest way of installing Nethermind."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsxs)(n.p,{children:["If you're using a package manager, it's highly recommended to set the ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#datadir",children:(0,r.jsx)(n.code,{children:"-dd, --datadir"})})," flag to specify the data directory. Otherwise, Nethermind will use the default data directory where the package is installed, which may not be preserved on further updates or uninstall."]})}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,r.jsx)(n.p,{children:"On Ubuntu and other Linux distros supporting PPA, Nethermind can be installed via Launchpad PPA."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo add-apt-repository ppa:nethermindeth/nethermind\n"})}),(0,r.jsxs)(n.admonition,{type:"note",children:[(0,r.jsx)(n.p,{children:"If the command is not found, run:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install software-properties-common\n"})})]}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get update\nsudo apt-get install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsx)(n.p,{children:"On Windows, Nethermind can be installed via Windows Package Manager as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(n.p,{children:"On macOS, Nethermind can be installed via Homebrew."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew tap nethermindeth/nethermind\n"})}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew install nethermind\n"})})]})]}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"/get-started/running-node/",children:"Running a node"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"standalone-downloads",children:"Standalone downloads"}),"\n",(0,r.jsx)(n.p,{children:"Standalone downloads give users more flexibility by allowing them to install a specific version of Nethermind, choose the installation location, and prevent automatic updates."}),"\n",(0,r.jsxs)(n.p,{children:["Standalone downloads are available on ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub Releases"})," and at ",(0,r.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads.nethermind.io"})," as ZIP archives for x64 and AArch64 (ARM64) CPU architectures for Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h3,{id:"configuring-as-a-linux-service",children:"Configuring as a Linux service"}),"\n",(0,r.jsxs)(n.p,{children:["To install Nethermind as a Linux service, see the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/scripts/nethermind.service",children:"nethermind.service"})," unit file as an example.\nAs it's configured to run Nethermind as the specific user and group and looks for the executable in a predefined location, the following steps need to be fulfilled:"]}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsxs)(n.p,{children:["Any of these steps can be omitted by replacing them with corresponding changes in the unit file.\nFor instance, if you want to run Nethermind as a different user, change the ",(0,r.jsx)(n.code,{children:"User"})," and ",(0,r.jsx)(n.code,{children:"Group"})," options in the unit file."]})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Create a new user and group:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:" # Create a new user and group\n sudo useradd -m -s /bin/bash nethermind\n\n # Increase the maximum number of open files\n sudo bash -c 'echo \"nethermind soft nofile 100000\" > /etc/security/limits.d/nethermind.conf'\n sudo bash -c 'echo \"nethermind hard nofile 100000\" >> /etc/security/limits.d/nethermind.conf'\n\n # Switch to the nethermind user\n sudo su -l nethermind\n\n # Create required directories\n # Note that the home directory (~) is now /home/nethermind\n mkdir ~/build\n mkdir ~/data\n"})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"Download Nethermind"})," and extract the package contents to the ",(0,r.jsx)(n.code,{children:"~/build"})," directory."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Configure options in the ",(0,r.jsx)(n.code,{children:"~/.env"})," file:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",metastring:'title="~/.env"',children:'# Required\nNETHERMIND_CONFIG="mainnet"\n\n# Optional\nNETHERMIND_HEALTHCHECKSCONFIG_ENABLED="true"\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Now, let's set up the Linux service:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# Download the unit file\ncurl -L https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/nethermind.service -o nethermind.service\n\n# Move the unit file to the systemd directory\nsudo mv nethermind.service /etc/systemd/system\n\n# Reload the systemd daemon\nsudo systemctl daemon-reload\n\n# Start the service\nsudo systemctl start nethermind\n\n# Optionally, enable the service to start on boot\nsudo systemctl enable nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To ensure the service is up and running, check its status as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo systemctl status nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To monitor the Nethermind output, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"journalctl -u nethermind -f\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"/get-started/running-node/",children:"Running a node"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"docker-container",children:"Docker container"}),"\n",(0,r.jsxs)(n.p,{children:["The Docker images of Nethermind are available on ",(0,r.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind",children:"Docker Hub"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"This registry provides production versions of Nethermind with 3 types of tags:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:latest"})," is the latest version of Nethermind (the default tag)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:"})," is the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is the actual version of Nethermind."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:-chiseled"})," is a ",(0,r.jsx)(n.em,{children:"rootless"})," and ",(0,r.jsx)(n.a,{href:"https://ubuntu.com/engage/chiselled-ubuntu-images-for-containers",children:"chiseled"})," image with the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is either ",(0,r.jsx)(n.code,{children:"latest"})," or the actual version of Nethermind.",(0,r.jsx)(n.br,{}),"\n","For security reasons, this image contains only the absolutely necessary components and is intended to run as a non-root ",(0,r.jsx)(n.code,{children:"app"})," user with UID/GID of ",(0,r.jsx)(n.code,{children:"64198"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To download the image from the registry, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker pull nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Starting a node is achieved by:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"The following ports are exposed by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8545"}),": TCP, for the JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8551"}),": TCP, for the consensus client JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"30303"}),": TCP and UDP, for P2P networking"]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"It's highly recommended to mount data volumes as the Nethermind's data directories to ensure the synced data is preserved between the container restarts."})}),"\n",(0,r.jsx)(n.p,{children:"The following volume mount points are available by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/nethermind_db"}),": used to store the database"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/logs"}),": used to store the logs"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/keystore"}),": used to store the keys"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To mount separate volumes for each directory listed above, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/db,target=/nethermind/nethermind_db \\\n --mount type=bind,source=path/to/logs,target=/nethermind/logs \\\n --mount type=bind,source=path/to/keystore,target=/nethermind/keystore \\\n nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Alternatively, a single volume can be specified as the Nethermind data directory as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/data_dir,target=/nethermind/data_dir \\\n nethermind/nethermind -dd /nethermind/data_dir\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Note that any Nethermind-specific configuration option can be specified at the end. For instance, the ",(0,r.jsx)(n.code,{children:"-dd"})," option in this case. For further instructions, see ",(0,r.jsx)(n.a,{href:"/get-started/running-node/",children:"Running a node"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["To build the Docker image yourself, see ",(0,r.jsx)(n.a,{href:"/developers/building-from-source#bulding-docker-image",children:"Building Docker image"}),"."]})]})}function m(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>a});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var i=t(4848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,a),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var r=t(6540),s=t(4164),i=t(3104),a=t(6347),l=t(205),d=t(7485),o=t(1682),c=t(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const s=(0,a.W6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(s.location.search);n.set(i,e),s.replace({...s.location,search:n.toString()})}),[i,s])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,i=u(e),[a,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[o,h]=p({queryString:t,groupId:s}),[x,g]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,i]=(0,c.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:s}),f=(()=>{const e=o??x;return m({value:e,tabValues:i})?e:null})();(0,l.A)((()=>{f&&d(f)}),[f]);return{selectedValue:a,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,i]),tabValues:i}}var g=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function b(e){let{className:n,block:t,selectedValue:r,selectValue:a,tabValues:l}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,i.a_)(),c=e=>{const n=e.currentTarget,t=d.indexOf(n),s=l[t].value;s!==r&&(o(n),a(s))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=d.indexOf(e.currentTarget)+1;n=d[t]??d[0];break}case"ArrowLeft":{const t=d.indexOf(e.currentTarget)-1;n=d[t]??d[d.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:l.map((e=>{let{value:n,label:t,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:c,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:i}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=x(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(b,{...n,...e}),(0,j.jsx)(v,{...n,...e})]})}function w(e){const n=(0,g.A)();return(0,j.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>l});var r=t(6540);const s={},i=r.createContext(s);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3451],{6894:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>m,frontMatter:()=>l,metadata:()=>o,toc:()=>h});var r=t(4848),s=t(8453),i=t(1470),a=t(9365);const l={title:"Installing Nethermind",sidebar_position:2},d=void 0,o={id:"get-started/installing-nethermind",title:"Installing Nethermind",description:"Nethermind can be installed in several ways:",source:"@site/versioned_docs/version-1.29.0/get-started/installing-nethermind.md",sourceDirName:"get-started",slug:"/get-started/installing-nethermind",permalink:"/get-started/installing-nethermind",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/get-started/installing-nethermind.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Installing Nethermind",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"System requirements",permalink:"/get-started/system-requirements"},next:{title:"Running a node",permalink:"/get-started/running-node/"}},c={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Package managers",id:"package-managers",level:2},{value:"Standalone downloads",id:"standalone-downloads",level:2},{value:"Configuring as a Linux service",id:"configuring-as-a-linux-service",level:3},{value:"Docker container",id:"docker-container",level:2}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"Nethermind can be installed in several ways:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#package-managers",children:"Via a package manager"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"As a standalone download"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#docker-container",children:"As a Docker container"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/developers/building-from-source",children:"By building from source code"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Does not apply to Docker distributions."})}),"\n",(0,r.jsx)(n.p,{children:"Before installing Nethermind, your specific platform might need the following prerequisites."}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsx)(a.A,{value:"linux",label:"Linux",children:"None"}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsxs)(n.p,{children:["Although the modern versions of Windows are bundled with a recent version of ",(0,r.jsx)(n.a,{href:"https://aka.ms/vcredist",children:"Microsoft Visual C++ Redistributable"}),", in some cases, it may need an update:"]}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install Microsoft.VCRedist.2015+.x64\n"})})]}),(0,r.jsx)(a.A,{value:"macos",label:"macOS",children:"None"})]}),"\n",(0,r.jsx)(n.h2,{id:"package-managers",children:"Package managers"}),"\n",(0,r.jsx)(n.p,{children:"Package managers are the easiest and fastest way of installing Nethermind."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsxs)(n.p,{children:["If you're using a package manager, it's highly recommended to set the ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#datadir",children:(0,r.jsx)(n.code,{children:"-dd, --datadir"})})," flag to specify the data directory. Otherwise, Nethermind will use the default data directory where the package is installed, which may not be preserved on further updates or uninstall."]})}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,r.jsx)(n.p,{children:"On Ubuntu and other Linux distros supporting PPA, Nethermind can be installed via Launchpad PPA."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo add-apt-repository ppa:nethermindeth/nethermind\n"})}),(0,r.jsxs)(n.admonition,{type:"note",children:[(0,r.jsx)(n.p,{children:"If the command is not found, run:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install software-properties-common\n"})})]}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get update\nsudo apt-get install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsx)(n.p,{children:"On Windows, Nethermind can be installed via Windows Package Manager as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(n.p,{children:"On macOS, Nethermind can be installed via Homebrew."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew tap nethermindeth/nethermind\n"})}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew install nethermind\n"})})]})]}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"/get-started/running-node/",children:"Running a node"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"standalone-downloads",children:"Standalone downloads"}),"\n",(0,r.jsx)(n.p,{children:"Standalone downloads give users more flexibility by allowing them to install a specific version of Nethermind, choose the installation location, and prevent automatic updates."}),"\n",(0,r.jsxs)(n.p,{children:["Standalone downloads are available on ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub Releases"})," and at ",(0,r.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads.nethermind.io"})," as ZIP archives for x64 and AArch64 (ARM64) CPU architectures for Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h3,{id:"configuring-as-a-linux-service",children:"Configuring as a Linux service"}),"\n",(0,r.jsxs)(n.p,{children:["To install Nethermind as a Linux service, see the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/scripts/nethermind.service",children:"nethermind.service"})," unit file as an example.\nAs it's configured to run Nethermind as the specific user and group and looks for the executable in a predefined location, the following steps need to be fulfilled:"]}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsxs)(n.p,{children:["Any of these steps can be omitted by replacing them with corresponding changes in the unit file.\nFor instance, if you want to run Nethermind as a different user, change the ",(0,r.jsx)(n.code,{children:"User"})," and ",(0,r.jsx)(n.code,{children:"Group"})," options in the unit file."]})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Create a new user and group:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:" # Create a new user and group\n sudo useradd -m -s /bin/bash nethermind\n\n # Increase the maximum number of open files\n sudo bash -c 'echo \"nethermind soft nofile 100000\" > /etc/security/limits.d/nethermind.conf'\n sudo bash -c 'echo \"nethermind hard nofile 100000\" >> /etc/security/limits.d/nethermind.conf'\n\n # Switch to the nethermind user\n sudo su -l nethermind\n\n # Create required directories\n # Note that the home directory (~) is now /home/nethermind\n mkdir ~/build\n mkdir ~/data\n"})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"Download Nethermind"})," and extract the package contents to the ",(0,r.jsx)(n.code,{children:"~/build"})," directory."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Configure options in the ",(0,r.jsx)(n.code,{children:"~/.env"})," file:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",metastring:'title="~/.env"',children:'# Required\nNETHERMIND_CONFIG="mainnet"\n\n# Optional\nNETHERMIND_HEALTHCHECKSCONFIG_ENABLED="true"\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Now, let's set up the Linux service:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# Download the unit file\ncurl -L https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/nethermind.service -o nethermind.service\n\n# Move the unit file to the systemd directory\nsudo mv nethermind.service /etc/systemd/system\n\n# Reload the systemd daemon\nsudo systemctl daemon-reload\n\n# Start the service\nsudo systemctl start nethermind\n\n# Optionally, enable the service to start on boot\nsudo systemctl enable nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To ensure the service is up and running, check its status as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo systemctl status nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To monitor the Nethermind output, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"journalctl -u nethermind -f\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"/get-started/running-node/",children:"Running a node"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"docker-container",children:"Docker container"}),"\n",(0,r.jsxs)(n.p,{children:["The Docker images of Nethermind are available on ",(0,r.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind",children:"Docker Hub"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"This registry provides production versions of Nethermind with 3 types of tags:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:latest"})," is the latest version of Nethermind (the default tag)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:"})," is the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is the actual version of Nethermind."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:-chiseled"})," is a ",(0,r.jsx)(n.em,{children:"rootless"})," and ",(0,r.jsx)(n.a,{href:"https://ubuntu.com/engage/chiselled-ubuntu-images-for-containers",children:"chiseled"})," image with the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is either ",(0,r.jsx)(n.code,{children:"latest"})," or the actual version of Nethermind.",(0,r.jsx)(n.br,{}),"\n","For security reasons, this image contains only the absolutely necessary components and is intended to run as a non-root ",(0,r.jsx)(n.code,{children:"app"})," user with UID/GID of ",(0,r.jsx)(n.code,{children:"64198"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To download the image from the registry, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker pull nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Starting a node is achieved by:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"The following ports are exposed by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8545"}),": TCP, for the JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8551"}),": TCP, for the consensus client JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"30303"}),": TCP and UDP, for P2P networking"]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"It's highly recommended to mount data volumes as the Nethermind's data directories to ensure the synced data is preserved between the container restarts."})}),"\n",(0,r.jsx)(n.p,{children:"The following volume mount points are available by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/nethermind_db"}),": used to store the database"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/logs"}),": used to store the logs"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/keystore"}),": used to store the keys"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To mount separate volumes for each directory listed above, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/db,target=/nethermind/nethermind_db \\\n --mount type=bind,source=path/to/logs,target=/nethermind/logs \\\n --mount type=bind,source=path/to/keystore,target=/nethermind/keystore \\\n nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Alternatively, a single volume can be specified as the Nethermind data directory as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/data_dir,target=/nethermind/data_dir \\\n nethermind/nethermind -dd /nethermind/data_dir\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Note that any Nethermind-specific configuration option can be specified at the end. For instance, the ",(0,r.jsx)(n.code,{children:"-dd"})," option in this case. For further instructions, see ",(0,r.jsx)(n.a,{href:"/get-started/running-node/",children:"Running a node"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["To build the Docker image yourself, see ",(0,r.jsx)(n.a,{href:"/developers/building-from-source#bulding-docker-image",children:"Building Docker image"}),"."]})]})}function m(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>a});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var i=t(4848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,a),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var r=t(6540),s=t(4164),i=t(3104),a=t(6347),l=t(205),d=t(7485),o=t(1682),c=t(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const s=(0,a.W6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(s.location.search);n.set(i,e),s.replace({...s.location,search:n.toString()})}),[i,s])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,i=u(e),[a,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[o,h]=p({queryString:t,groupId:s}),[x,g]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,i]=(0,c.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:s}),f=(()=>{const e=o??x;return m({value:e,tabValues:i})?e:null})();(0,l.A)((()=>{f&&d(f)}),[f]);return{selectedValue:a,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,i]),tabValues:i}}var g=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function b(e){let{className:n,block:t,selectedValue:r,selectValue:a,tabValues:l}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,i.a_)(),c=e=>{const n=e.currentTarget,t=d.indexOf(n),s=l[t].value;s!==r&&(o(n),a(s))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=d.indexOf(e.currentTarget)+1;n=d[t]??d[0];break}case"ArrowLeft":{const t=d.indexOf(e.currentTarget)-1;n=d[t]??d[d.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:l.map((e=>{let{value:n,label:t,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:c,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:i}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=x(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(b,{...n,...e}),(0,j.jsx)(v,{...n,...e})]})}function w(e){const n=(0,g.A)();return(0,j.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>l});var r=t(6540);const s={},i=r.createContext(s);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a0964226.8020e4f9.js b/assets/js/a0964226.e5542994.js similarity index 99% rename from assets/js/a0964226.8020e4f9.js rename to assets/js/a0964226.e5542994.js index 3252f8a62..2acecfee6 100644 --- a/assets/js/a0964226.8020e4f9.js +++ b/assets/js/a0964226.e5542994.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7083],{8829:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>j,frontMatter:()=>c,metadata:()=>o,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),t=s(9365);const c={title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},d=void 0,o={id:"interacting/json-rpc-ns/txpool",title:"txpool namespace",description:"txpool_content",source:"@site/docs/interacting/json-rpc-ns/txpool.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/txpool",permalink:"/next/interacting/json-rpc-ns/txpool",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/txpool.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:9,frontMatter:{title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"trace",permalink:"/next/interacting/json-rpc-ns/trace"},next:{title:"web3",permalink:"/next/interacting/json-rpc-ns/web3"}},a={},h=[{value:"txpool_content",id:"txpool_content",level:3},{value:"txpool_inspect",id:"txpool_inspect",level:3},{value:"txpool_status",id:"txpool_status",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"txpool_content",children:"txpool_content"}),"\n",(0,r.jsx)(n.p,{children:"Returns tx pool content."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_content",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_inspect",children:"txpool_inspect"}),"\n",(0,r.jsx)(n.p,{children:"Returns a detailed info on tx pool transactions."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_inspect",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_status",children:"txpool_status"}),"\n",(0,r.jsx)(n.p,{children:"Returns a tx pool status."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_status",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),t=s(6347),c=s(205),d=s(7485),o=s(1682),a=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[o,h]=u({queryString:s,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,a.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),g=(()=>{const e=o??m;return j({value:e,tabValues:l})?e:null})();(0,c.A)((()=>{g&&d(g)}),[g]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:c}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,l.a_)(),a=e=>{const n=e.currentTarget,s=d.indexOf(n),i=c[s].value;i!==r&&(o(n),t(i))},h=e=>{let n=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:c.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:a,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,p.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>c});var r=s(6540);const i={},l=r.createContext(i);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7083],{8829:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>j,frontMatter:()=>c,metadata:()=>o,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),t=s(9365);const c={title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},d=void 0,o={id:"interacting/json-rpc-ns/txpool",title:"txpool namespace",description:"txpool_content",source:"@site/docs/interacting/json-rpc-ns/txpool.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/txpool",permalink:"/next/interacting/json-rpc-ns/txpool",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/txpool.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:9,frontMatter:{title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"trace",permalink:"/next/interacting/json-rpc-ns/trace"},next:{title:"web3",permalink:"/next/interacting/json-rpc-ns/web3"}},a={},h=[{value:"txpool_content",id:"txpool_content",level:3},{value:"txpool_inspect",id:"txpool_inspect",level:3},{value:"txpool_status",id:"txpool_status",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"txpool_content",children:"txpool_content"}),"\n",(0,r.jsx)(n.p,{children:"Returns tx pool content."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_content",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_inspect",children:"txpool_inspect"}),"\n",(0,r.jsx)(n.p,{children:"Returns a detailed info on tx pool transactions."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_inspect",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_status",children:"txpool_status"}),"\n",(0,r.jsx)(n.p,{children:"Returns a tx pool status."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_status",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),t=s(6347),c=s(205),d=s(7485),o=s(1682),a=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[o,h]=u({queryString:s,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,a.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),g=(()=>{const e=o??m;return j({value:e,tabValues:l})?e:null})();(0,c.A)((()=>{g&&d(g)}),[g]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:c}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,l.a_)(),a=e=>{const n=e.currentTarget,s=d.indexOf(n),i=c[s].value;i!==r&&(o(n),t(i))},h=e=>{let n=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:c.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:a,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,p.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>c});var r=s(6540);const i={},l=r.createContext(i);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a1b6351b.0944c807.js b/assets/js/a1b6351b.dc299df2.js similarity index 99% rename from assets/js/a1b6351b.0944c807.js rename to assets/js/a1b6351b.dc299df2.js index e1afdc06c..860208a85 100644 --- a/assets/js/a1b6351b.0944c807.js +++ b/assets/js/a1b6351b.dc299df2.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7328],{807:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var t=s(4848),i=s(8453);const r={title:"System requirements",sidebar_position:1},d=void 0,a={id:"get-started/system-requirements",title:"System requirements",description:"Supported operating systems",source:"@site/versioned_docs/version-1.28.0/get-started/system-requirements.md",sourceDirName:"get-started",slug:"/get-started/system-requirements",permalink:"/1.28.0/get-started/system-requirements",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/get-started/system-requirements.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"System requirements",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/1.28.0/"},next:{title:"Installing Nethermind",permalink:"/1.28.0/get-started/installing-nethermind"}},o={},l=[{value:"Supported operating systems",id:"supported-operating-systems",level:2},{value:"Hardware requirements",id:"hardware-requirements",level:2},{value:"Disk requirements",id:"disk-requirements",level:3},{value:"Database growth",id:"database-growth",level:4},{value:"Disk speed",id:"disk-speed",level:4},{value:"Sync modes and disk usage",id:"sync-modes-and-disk-usage",level:4}];function c(e){const n={a:"a",br:"br",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"supported-operating-systems",children:"Supported operating systems"}),"\n",(0,t.jsx)(n.p,{children:"Nethermind supports a broad range of modern operating systems (64-bit-only) including but not limited to:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Linux"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Alpine 3.17+"}),"\n",(0,t.jsx)(n.li,{children:"CentOS Stream 9+"}),"\n",(0,t.jsx)(n.li,{children:"Debian 11+"}),"\n",(0,t.jsx)(n.li,{children:"Fedora 37+"}),"\n",(0,t.jsx)(n.li,{children:"openSUSE 15+"}),"\n",(0,t.jsx)(n.li,{children:"RHEL 8+"}),"\n",(0,t.jsx)(n.li,{children:"SLES 15+"}),"\n",(0,t.jsx)(n.li,{children:"Ubuntu 20.04+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Windows"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Windows 10+"}),"\n",(0,t.jsx)(n.li,{children:"Windows Server 2012+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"macOS"})," 10.15+"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"hardware-requirements",children:"Hardware requirements"}),"\n",(0,t.jsx)(n.p,{children:"Suggested requirements can be found below."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Network"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Memory"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"CPU cores"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"4"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet archive"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"128 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Gnosis"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Energy Web"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Volta"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]})]})]}),"\n",(0,t.jsx)(n.h3,{id:"disk-requirements",children:"Disk requirements"}),"\n",(0,t.jsxs)(n.p,{children:["Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as NVMe or a fast SSD. However, ",(0,t.jsx)(n.strong,{children:"2\nTB is recommended"})," to minimize maintenance requirements. To choose a specific disk model, we recommend\nchecking out ",(0,t.jsx)(n.a,{href:"https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good",children:"this guide"}),".",(0,t.jsx)(n.br,{}),"\n","Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking.\nNonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic."]}),"\n",(0,t.jsx)(n.h4,{id:"database-growth",children:"Database growth"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind requires approximately 898 GB of disk space (as of Jan 2024) after a fresh Ethereum Mainnet sync using default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to bring it back to its optimal database size. For more info on managing node disk usage growth, see ",(0,t.jsx)(n.a,{href:"/1.28.0/fundamentals/database#reducing-database-size",children:"how to reduce database size"}),".",(0,t.jsx)(n.br,{}),"\n","Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements."]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.28.0/fundamentals/database#database-size",children:"Database size"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"disk-speed",children:"Disk speed"}),"\n",(0,t.jsx)(n.p,{children:"The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully."}),"\n",(0,t.jsx)(n.h4,{id:"sync-modes-and-disk-usage",children:"Sync modes and disk usage"}),"\n",(0,t.jsx)(n.p,{children:"A node can be run using different syncing options, and each option has different characteristics of disk space usage."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Archive node."})," This mode stores the full historical state for all blocks. As of July 2023, an archive node requires at least 14 TB of disk space, and it grows by approximately 60 GB per week."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Ancient barriers."})," Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Non-validator mode."})," This mode drops all historical receipts and bodies, but it cannot be used for validation."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.28.0/fundamentals/sync",children:"sync modes"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>a});var t=s(6540);const i={},r=t.createContext(i);function d(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7328],{807:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var t=s(4848),i=s(8453);const r={title:"System requirements",sidebar_position:1},d=void 0,a={id:"get-started/system-requirements",title:"System requirements",description:"Supported operating systems",source:"@site/versioned_docs/version-1.28.0/get-started/system-requirements.md",sourceDirName:"get-started",slug:"/get-started/system-requirements",permalink:"/1.28.0/get-started/system-requirements",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/get-started/system-requirements.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"System requirements",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/1.28.0/"},next:{title:"Installing Nethermind",permalink:"/1.28.0/get-started/installing-nethermind"}},o={},l=[{value:"Supported operating systems",id:"supported-operating-systems",level:2},{value:"Hardware requirements",id:"hardware-requirements",level:2},{value:"Disk requirements",id:"disk-requirements",level:3},{value:"Database growth",id:"database-growth",level:4},{value:"Disk speed",id:"disk-speed",level:4},{value:"Sync modes and disk usage",id:"sync-modes-and-disk-usage",level:4}];function c(e){const n={a:"a",br:"br",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"supported-operating-systems",children:"Supported operating systems"}),"\n",(0,t.jsx)(n.p,{children:"Nethermind supports a broad range of modern operating systems (64-bit-only) including but not limited to:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Linux"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Alpine 3.17+"}),"\n",(0,t.jsx)(n.li,{children:"CentOS Stream 9+"}),"\n",(0,t.jsx)(n.li,{children:"Debian 11+"}),"\n",(0,t.jsx)(n.li,{children:"Fedora 37+"}),"\n",(0,t.jsx)(n.li,{children:"openSUSE 15+"}),"\n",(0,t.jsx)(n.li,{children:"RHEL 8+"}),"\n",(0,t.jsx)(n.li,{children:"SLES 15+"}),"\n",(0,t.jsx)(n.li,{children:"Ubuntu 20.04+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Windows"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Windows 10+"}),"\n",(0,t.jsx)(n.li,{children:"Windows Server 2012+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"macOS"})," 10.15+"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"hardware-requirements",children:"Hardware requirements"}),"\n",(0,t.jsx)(n.p,{children:"Suggested requirements can be found below."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Network"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Memory"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"CPU cores"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"4"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet archive"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"128 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Gnosis"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Energy Web"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Volta"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]})]})]}),"\n",(0,t.jsx)(n.h3,{id:"disk-requirements",children:"Disk requirements"}),"\n",(0,t.jsxs)(n.p,{children:["Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as NVMe or a fast SSD. However, ",(0,t.jsx)(n.strong,{children:"2\nTB is recommended"})," to minimize maintenance requirements. To choose a specific disk model, we recommend\nchecking out ",(0,t.jsx)(n.a,{href:"https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good",children:"this guide"}),".",(0,t.jsx)(n.br,{}),"\n","Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking.\nNonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic."]}),"\n",(0,t.jsx)(n.h4,{id:"database-growth",children:"Database growth"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind requires approximately 898 GB of disk space (as of Jan 2024) after a fresh Ethereum Mainnet sync using default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to bring it back to its optimal database size. For more info on managing node disk usage growth, see ",(0,t.jsx)(n.a,{href:"/1.28.0/fundamentals/database#reducing-database-size",children:"how to reduce database size"}),".",(0,t.jsx)(n.br,{}),"\n","Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements."]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.28.0/fundamentals/database#database-size",children:"Database size"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"disk-speed",children:"Disk speed"}),"\n",(0,t.jsx)(n.p,{children:"The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully."}),"\n",(0,t.jsx)(n.h4,{id:"sync-modes-and-disk-usage",children:"Sync modes and disk usage"}),"\n",(0,t.jsx)(n.p,{children:"A node can be run using different syncing options, and each option has different characteristics of disk space usage."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Archive node."})," This mode stores the full historical state for all blocks. As of July 2023, an archive node requires at least 14 TB of disk space, and it grows by approximately 60 GB per week."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Ancient barriers."})," Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Non-validator mode."})," This mode drops all historical receipts and bodies, but it cannot be used for validation."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.28.0/fundamentals/sync",children:"sync modes"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>a});var t=s(6540);const i={},r=t.createContext(i);function d(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a1f97203.5c391a4b.js b/assets/js/a1f97203.16101513.js similarity index 99% rename from assets/js/a1f97203.5c391a4b.js rename to assets/js/a1f97203.16101513.js index 11a9cae11..74ac2501d 100644 --- a/assets/js/a1f97203.5c391a4b.js +++ b/assets/js/a1f97203.16101513.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8530],{9803:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>j,frontMatter:()=>t,metadata:()=>d,toc:()=>u});var r=s(4848),l=s(8453),a=s(1470),i=s(9365);const t={title:"clique namespace",sidebar_label:"clique",sidebar_position:1},c=void 0,d={id:"interacting/json-rpc-ns/clique",title:"clique namespace",description:"clique_discard",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/clique.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/clique",permalink:"/1.28.0/interacting/json-rpc-ns/clique",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/clique.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"clique namespace",sidebar_label:"clique",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"admin",permalink:"/1.28.0/interacting/json-rpc-ns/admin"},next:{title:"debug",permalink:"/1.28.0/interacting/json-rpc-ns/debug"}},o={},u=[{value:"clique_discard",id:"clique_discard",level:3},{value:"clique_getBlockSigner",id:"clique_getblocksigner",level:3},{value:"clique_getSigners",id:"clique_getsigners",level:3},{value:"clique_getSignersAnnotated",id:"clique_getsignersannotated",level:3},{value:"clique_getSignersAtHash",id:"clique_getsignersathash",level:3},{value:"clique_getSignersAtHashAnnotated",id:"clique_getsignersathashannotated",level:3},{value:"clique_getSignersAtNumber",id:"clique_getsignersatnumber",level:3},{value:"clique_getSnapshot",id:"clique_getsnapshot",level:3},{value:"clique_getSnapshotAtHash",id:"clique_getsnapshotathash",level:3},{value:"clique_produceBlock",id:"clique_produceblock",level:3},{value:"clique_propose",id:"clique_propose",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"clique_discard",children:"clique_discard"}),"\n",(0,r.jsx)(n.p,{children:"This method drops a currently running proposal. The signer will not cast further votes (either for or against) the address."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_discard",\n "params": [signer]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getblocksigner",children:"clique_getBlockSigner"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getBlockSigner",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsigners",children:"clique_getSigners"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSigners",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersannotated",children:"clique_getSignersAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAnnotated",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathash",children:"clique_getSignersAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathashannotated",children:"clique_getSignersAtHashAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHashAnnotated",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersatnumber",children:"clique_getSignersAtNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by block number."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtNumber",\n "params": [number]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshot",children:"clique_getSnapshot"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a snapshot of all clique state at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshot",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshotathash",children:"clique_getSnapshotAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the state snapshot at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshotAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_produceblock",children:"clique_produceBlock"}),"\n",(0,r.jsx)(n.p,{children:"Forces Clique block producer to produce a new block"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_produceBlock",\n "params": [parentHash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_propose",children:"clique_propose"}),"\n",(0,r.jsxs)(n.p,{children:["Adds a new authorization proposal that the signer will attempt to push through. If the ",(0,r.jsx)(n.code,{children:"vote"})," parameter is true, the local signer votes for the given address to be included in the set of authorized signers. With ",(0,r.jsx)(n.code,{children:"vote"})," set to false, the signer is against the address."]}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"vote"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_propose",\n "params": [signer, vote]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>i});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var a=s(4848);function i(e){let{children:n,hidden:s,className:i}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,i),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>A});var r=s(6540),l=s(4164),a=s(3104),i=s(6347),t=s(205),c=s(7485),d=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const l=(0,i.W6)(),a=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(l.location.search);n.set(a,e),l.replace({...l.location,search:n.toString()})}),[a,l])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,a=h(e),[i,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[d,u]=p({queryString:s,groupId:l}),[x,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,a]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&a.set(e)}),[s,a])]}({groupId:l}),m=(()=>{const e=d??x;return j({value:e,tabValues:a})?e:null})();(0,t.A)((()=>{m&&c(m)}),[m]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),g(e)}),[u,g,a]),tabValues:a}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:i,tabValues:t}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),l=t[s].value;l!==r&&(d(n),i(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:a}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:u,onClick:o,...a,className:(0,l.A)("tabs__item",m.tabItem,a?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:a}=e;const i=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=i.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function q(e){const n=x(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",m.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(f,{...n,...e})]})}function A(e){const n=(0,g.A)();return(0,b.jsx)(q,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>t});var r=s(6540);const l={},a=r.createContext(l);function i(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:i(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8530],{9803:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>j,frontMatter:()=>t,metadata:()=>d,toc:()=>u});var r=s(4848),l=s(8453),a=s(1470),i=s(9365);const t={title:"clique namespace",sidebar_label:"clique",sidebar_position:1},c=void 0,d={id:"interacting/json-rpc-ns/clique",title:"clique namespace",description:"clique_discard",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/clique.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/clique",permalink:"/1.28.0/interacting/json-rpc-ns/clique",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/clique.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"clique namespace",sidebar_label:"clique",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"admin",permalink:"/1.28.0/interacting/json-rpc-ns/admin"},next:{title:"debug",permalink:"/1.28.0/interacting/json-rpc-ns/debug"}},o={},u=[{value:"clique_discard",id:"clique_discard",level:3},{value:"clique_getBlockSigner",id:"clique_getblocksigner",level:3},{value:"clique_getSigners",id:"clique_getsigners",level:3},{value:"clique_getSignersAnnotated",id:"clique_getsignersannotated",level:3},{value:"clique_getSignersAtHash",id:"clique_getsignersathash",level:3},{value:"clique_getSignersAtHashAnnotated",id:"clique_getsignersathashannotated",level:3},{value:"clique_getSignersAtNumber",id:"clique_getsignersatnumber",level:3},{value:"clique_getSnapshot",id:"clique_getsnapshot",level:3},{value:"clique_getSnapshotAtHash",id:"clique_getsnapshotathash",level:3},{value:"clique_produceBlock",id:"clique_produceblock",level:3},{value:"clique_propose",id:"clique_propose",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"clique_discard",children:"clique_discard"}),"\n",(0,r.jsx)(n.p,{children:"This method drops a currently running proposal. The signer will not cast further votes (either for or against) the address."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_discard",\n "params": [signer]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getblocksigner",children:"clique_getBlockSigner"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getBlockSigner",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsigners",children:"clique_getSigners"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSigners",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersannotated",children:"clique_getSignersAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAnnotated",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathash",children:"clique_getSignersAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathashannotated",children:"clique_getSignersAtHashAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHashAnnotated",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersatnumber",children:"clique_getSignersAtNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by block number."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtNumber",\n "params": [number]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshot",children:"clique_getSnapshot"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a snapshot of all clique state at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshot",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshotathash",children:"clique_getSnapshotAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the state snapshot at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshotAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_produceblock",children:"clique_produceBlock"}),"\n",(0,r.jsx)(n.p,{children:"Forces Clique block producer to produce a new block"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_produceBlock",\n "params": [parentHash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_propose",children:"clique_propose"}),"\n",(0,r.jsxs)(n.p,{children:["Adds a new authorization proposal that the signer will attempt to push through. If the ",(0,r.jsx)(n.code,{children:"vote"})," parameter is true, the local signer votes for the given address to be included in the set of authorized signers. With ",(0,r.jsx)(n.code,{children:"vote"})," set to false, the signer is against the address."]}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"vote"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_propose",\n "params": [signer, vote]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>i});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var a=s(4848);function i(e){let{children:n,hidden:s,className:i}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,i),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>A});var r=s(6540),l=s(4164),a=s(3104),i=s(6347),t=s(205),c=s(7485),d=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const l=(0,i.W6)(),a=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(l.location.search);n.set(a,e),l.replace({...l.location,search:n.toString()})}),[a,l])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,a=h(e),[i,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[d,u]=p({queryString:s,groupId:l}),[x,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,a]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&a.set(e)}),[s,a])]}({groupId:l}),m=(()=>{const e=d??x;return j({value:e,tabValues:a})?e:null})();(0,t.A)((()=>{m&&c(m)}),[m]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),g(e)}),[u,g,a]),tabValues:a}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:i,tabValues:t}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),l=t[s].value;l!==r&&(d(n),i(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:a}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:u,onClick:o,...a,className:(0,l.A)("tabs__item",m.tabItem,a?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:a}=e;const i=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=i.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function q(e){const n=x(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",m.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(f,{...n,...e})]})}function A(e){const n=(0,g.A)();return(0,b.jsx)(q,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>t});var r=s(6540);const l={},a=r.createContext(l);function i(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:i(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a3b5b014.ee73548c.js b/assets/js/a3b5b014.47708ee9.js similarity index 99% rename from assets/js/a3b5b014.ee73548c.js rename to assets/js/a3b5b014.47708ee9.js index 0c44d8a4e..0b1fc4b45 100644 --- a/assets/js/a3b5b014.ee73548c.js +++ b/assets/js/a3b5b014.47708ee9.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6685],{3060:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),s=t(8453),a=t(1470),l=t(9365);const o={title:"net namespace",sidebar_label:"net",sidebar_position:4},i=void 0,c={id:"interacting/json-rpc-ns/net",title:"net namespace",description:"net_listening",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/net.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/net",permalink:"/1.27.0/interacting/json-rpc-ns/net",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/net.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"net namespace",sidebar_label:"net",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"eth",permalink:"/1.27.0/interacting/json-rpc-ns/eth"},next:{title:"parity",permalink:"/1.27.0/interacting/json-rpc-ns/parity"}},u={},d=[{value:"net_listening",id:"net_listening",level:3},{value:"net_localAddress",id:"net_localaddress",level:3},{value:"net_localEnode",id:"net_localenode",level:3},{value:"net_peerCount",id:"net_peercount",level:3},{value:"net_version",id:"net_version",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"net_listening",children:"net_listening"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_listening",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localaddress",children:"net_localAddress"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localAddress",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localenode",children:"net_localEnode"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localEnode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_peercount",children:"net_peerCount"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_peerCount",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_version",children:"net_version"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_version",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var a=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>A});var r=t(6540),s=t(4164),a=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(s.location.search);n.set(a,e),s.replace({...s.location,search:n.toString()})}),[a,s])]}function j(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[c,d]=m({queryString:t,groupId:s}),[j,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,a]=(0,u.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:s}),x=(()=>{const e=c??j;return h({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{x&&i(x)}),[x]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=t(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=t(4848);function f(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),s=o[t].value;s!==r&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:a}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function _(e){const n=j(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,v.jsx)(f,{...n,...e}),(0,v.jsx)(g,{...n,...e})]})}function A(e){const n=(0,b.A)();return(0,v.jsx)(_,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const s={},a=r.createContext(s);function l(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6685],{3060:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),s=t(8453),a=t(1470),l=t(9365);const o={title:"net namespace",sidebar_label:"net",sidebar_position:4},i=void 0,c={id:"interacting/json-rpc-ns/net",title:"net namespace",description:"net_listening",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/net.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/net",permalink:"/1.27.0/interacting/json-rpc-ns/net",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/net.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"net namespace",sidebar_label:"net",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"eth",permalink:"/1.27.0/interacting/json-rpc-ns/eth"},next:{title:"parity",permalink:"/1.27.0/interacting/json-rpc-ns/parity"}},u={},d=[{value:"net_listening",id:"net_listening",level:3},{value:"net_localAddress",id:"net_localaddress",level:3},{value:"net_localEnode",id:"net_localenode",level:3},{value:"net_peerCount",id:"net_peercount",level:3},{value:"net_version",id:"net_version",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"net_listening",children:"net_listening"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_listening",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localaddress",children:"net_localAddress"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localAddress",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localenode",children:"net_localEnode"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localEnode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_peercount",children:"net_peerCount"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_peerCount",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_version",children:"net_version"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_version",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var a=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>A});var r=t(6540),s=t(4164),a=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(s.location.search);n.set(a,e),s.replace({...s.location,search:n.toString()})}),[a,s])]}function j(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[c,d]=m({queryString:t,groupId:s}),[j,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,a]=(0,u.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:s}),x=(()=>{const e=c??j;return h({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{x&&i(x)}),[x]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=t(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=t(4848);function f(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),s=o[t].value;s!==r&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:a}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function _(e){const n=j(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,v.jsx)(f,{...n,...e}),(0,v.jsx)(g,{...n,...e})]})}function A(e){const n=(0,b.A)();return(0,v.jsx)(_,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const s={},a=r.createContext(s);function l(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a3cdb4fa.78a6bd4a.js b/assets/js/a3cdb4fa.186e7b9b.js similarity index 99% rename from assets/js/a3cdb4fa.78a6bd4a.js rename to assets/js/a3cdb4fa.186e7b9b.js index 25fa1a4c0..59cd12e1b 100644 --- a/assets/js/a3cdb4fa.78a6bd4a.js +++ b/assets/js/a3cdb4fa.186e7b9b.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[639],{8831:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>r,metadata:()=>i,toc:()=>c});var a=t(4848),o=t(8453);t(1470),t(9365);const r={title:"Health check",sidebar_position:1},s=void 0,i={id:"monitoring/health-check",title:"Health check",description:"To monitor liveness and readiness of your node, Nethermind provides a simple yet powerful health check feature. It is available at the default /health endpoint of the JSON-RPC server.",source:"@site/versioned_docs/version-1.29.0/monitoring/health-check.md",sourceDirName:"monitoring",slug:"/monitoring/health-check",permalink:"/monitoring/health-check",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/monitoring/health-check.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Health check",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"dotnet-counters",permalink:"/monitoring/metrics/dotnet-counters"},next:{title:"Validators",permalink:"/validators/"}},l={},c=[{value:"Basic configuration",id:"basic-configuration",level:2},{value:"Configuring a webhook",id:"webhook",level:2},{value:"Monitoring storage space",id:"storage-space",level:2},{value:"Monitoring blocks",id:"blocks",level:2},{value:"Monitoring consensus client",id:"consensus-client",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.p,{children:["To monitor liveness and readiness of your node, Nethermind provides a simple yet powerful health check feature. It is available at the default ",(0,a.jsx)(n.code,{children:"/health"})," endpoint of the ",(0,a.jsx)(n.a,{href:"/interacting/json-rpc-server",children:"JSON-RPC server"}),"."]}),"\n",(0,a.jsx)(n.h2,{id:"basic-configuration",children:"Basic configuration"}),"\n",(0,a.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,a.jsxs)(n.p,{children:["The health check service requires the ",(0,a.jsx)(n.a,{href:"/interacting/json-rpc-server#http",children:"JSON-RPC API"})," to be enabled."]})}),"\n",(0,a.jsxs)(n.p,{children:["The health check service is disabled by default. To enable it, set the ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-enabled",children:(0,a.jsx)(n.code,{children:"HealthChecks.Enabled"})})," configuration option as follows:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --HealthChecks.Enabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Once Nethermind is up and running, the health check service can be accessed at the ",(0,a.jsx)(n.code,{children:"/health"})," endpoint:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"curl localhost:8545/health\n"})}),"\n",(0,a.jsx)(n.p,{children:"with a response similar to the following if healthy:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HTTP 200 OK"',children:'{\n "status": "Healthy",\n "totalDuration": "00:00:00.0006931",\n "entries": {\n "node-health": {\n "data": {\n "IsSyncing": false,\n "Errors": []\n },\n "description": "The node is now fully synced with a network. Peers: 89.",\n "duration": "00:00:00.0003797",\n "status": "Healthy",\n "tags": []\n }\n }\n}\n'})}),"\n",(0,a.jsx)(n.p,{children:"or similar to the following if unhealthy:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HTTP 503 Service Unavailable"',children:'{\n "status": "Unhealthy",\n "totalDuration": "00:00:00.0009477",\n "entries": {\n "node-health": {\n "data": {\n "IsSyncing": false,\n "Errors": [ "NoPeers" ]\n },\n "description": "The node is now fully synced with a network. Node is not connected to any peers.",\n "duration": "00:00:00.0001356",\n "status": "Unhealthy",\n "tags": []\n }\n }\n}\n'})}),"\n",(0,a.jsxs)(n.p,{children:["It is also possible to replace the default ",(0,a.jsx)(n.code,{children:"/health"})," endpoint with a custom one using the ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-slug",children:(0,a.jsx)(n.code,{children:"HealthChecks.Slug"})})," configuration option. For example:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"--HealthChecks.Slug /my/custom/endpoint\n"})}),"\n",(0,a.jsx)(n.h2,{id:"webhook",children:"Configuring a webhook"}),"\n",(0,a.jsxs)(n.p,{children:["The health check service can be configured to send notifications to a webhook on node failure or recovery. This is achieved with the ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-uienabled",children:(0,a.jsx)(n.code,{children:"HealthChecks.UIEnabled"})}),", ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-webhooksenabled",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksEnabled"})}),", and ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-webhooksuri",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksUri"})})," configuration options. Optionally, the webhook payload data can be customized with the ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-webhookspayload",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksPayload"})})," and ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-webhooksrestorepayload",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksRestorePayload"})})," configuration options for failure and recovery events respectively."]}),"\n",(0,a.jsx)(n.p,{children:"The following example demonstrates how to configure a basic Slack webhook:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --HealthChecks.Enabled true \\\n --HealthChecks.UIEnabled true \\\n --HealthChecks.WebhooksEnabled true \\\n --HealthChecks.WebhooksUri https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX \\\n --HealthChecks.WebhooksPayload \'{"text": "Node is unhealthy"}\' \\\n --HealthChecks.WebhooksRestorePayload \'{"text": "Node is healthy"}\'\n'})}),"\n",(0,a.jsx)(n.h2,{id:"storage-space",children:"Monitoring storage space"}),"\n",(0,a.jsx)(n.p,{children:"Monitoring the available storage space is a crucial aspect of running a node. Nethermind provides a feature to track the free storage space and take action when the available space falls below a certain threshold. The following options are available:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-lowstoragecheckawaitonstartup",children:(0,a.jsx)(n.code,{children:"HealthChecks.LowStorageCheckAwaitOnStartup"})})," to check for low disk space on startup and suspend Nethermind until enough space is available"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-lowstoragespaceshutdownthreshold",children:(0,a.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceShutdownThreshold"})})," to shut down Nethermind when the percentage of available disk space falls below the specified threshold"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-lowstoragespacewarningthreshold",children:(0,a.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceWarningThreshold"})})," to issue a warning when the percentage of available disk space falls below the specified threshold"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"blocks",children:"Monitoring blocks"}),"\n",(0,a.jsx)(n.p,{children:"Another critical aspect of running a node is monitoring the production and processing of blocks. For that, Nethermind provides the following options:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-maxintervalwithoutprocessedblock",children:(0,a.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProcessedBlock"})})," to specify the max interval without processing a block before the node is considered unhealthy"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-maxintervalwithoutproducedblock",children:(0,a.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProducedBlock"})})," to specify the max interval without producing a block before the node is considered unhealthy"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"consensus-client",children:"Monitoring consensus client"}),"\n",(0,a.jsxs)(n.p,{children:["The health check service can also monitor the communication between Nethermind and the consensus client which can be configured by the ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-maxintervalclrequesttime",children:(0,a.jsx)(n.code,{children:"HealthChecks.MaxIntervalClRequestTime"})})," configuration option."]})]})}function d(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(4164);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var a=t(6540),o=t(4164),r=t(3104),s=t(6347),i=t(205),l=t(7485),c=t(1682),h=t(679);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function f(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=u(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!f({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,d]=p({queryString:t,groupId:o}),[b,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,h.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),g=(()=>{const e=c??b;return f({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!f({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),m(e)}),[d,m,r]),tabValues:r}}var m=t(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var k=t(4848);function v(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),h=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(c(n),s(o))},d=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,k.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,k.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:d,onClick:h,...r,className:(0,o.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function x(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,k.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function j(e){const n=b(e);return(0,k.jsxs)("div",{className:(0,o.A)("tabs-container",g.tabList),children:[(0,k.jsx)(v,{...n,...e}),(0,k.jsx)(x,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,k.jsx)(j,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>i});var a=t(6540);const o={},r=a.createContext(o);function s(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[639],{8831:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>r,metadata:()=>i,toc:()=>c});var a=t(4848),o=t(8453);t(1470),t(9365);const r={title:"Health check",sidebar_position:1},s=void 0,i={id:"monitoring/health-check",title:"Health check",description:"To monitor liveness and readiness of your node, Nethermind provides a simple yet powerful health check feature. It is available at the default /health endpoint of the JSON-RPC server.",source:"@site/versioned_docs/version-1.29.0/monitoring/health-check.md",sourceDirName:"monitoring",slug:"/monitoring/health-check",permalink:"/monitoring/health-check",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/monitoring/health-check.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Health check",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"dotnet-counters",permalink:"/monitoring/metrics/dotnet-counters"},next:{title:"Validators",permalink:"/validators/"}},l={},c=[{value:"Basic configuration",id:"basic-configuration",level:2},{value:"Configuring a webhook",id:"webhook",level:2},{value:"Monitoring storage space",id:"storage-space",level:2},{value:"Monitoring blocks",id:"blocks",level:2},{value:"Monitoring consensus client",id:"consensus-client",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.p,{children:["To monitor liveness and readiness of your node, Nethermind provides a simple yet powerful health check feature. It is available at the default ",(0,a.jsx)(n.code,{children:"/health"})," endpoint of the ",(0,a.jsx)(n.a,{href:"/interacting/json-rpc-server",children:"JSON-RPC server"}),"."]}),"\n",(0,a.jsx)(n.h2,{id:"basic-configuration",children:"Basic configuration"}),"\n",(0,a.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,a.jsxs)(n.p,{children:["The health check service requires the ",(0,a.jsx)(n.a,{href:"/interacting/json-rpc-server#http",children:"JSON-RPC API"})," to be enabled."]})}),"\n",(0,a.jsxs)(n.p,{children:["The health check service is disabled by default. To enable it, set the ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-enabled",children:(0,a.jsx)(n.code,{children:"HealthChecks.Enabled"})})," configuration option as follows:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --HealthChecks.Enabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Once Nethermind is up and running, the health check service can be accessed at the ",(0,a.jsx)(n.code,{children:"/health"})," endpoint:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"curl localhost:8545/health\n"})}),"\n",(0,a.jsx)(n.p,{children:"with a response similar to the following if healthy:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HTTP 200 OK"',children:'{\n "status": "Healthy",\n "totalDuration": "00:00:00.0006931",\n "entries": {\n "node-health": {\n "data": {\n "IsSyncing": false,\n "Errors": []\n },\n "description": "The node is now fully synced with a network. Peers: 89.",\n "duration": "00:00:00.0003797",\n "status": "Healthy",\n "tags": []\n }\n }\n}\n'})}),"\n",(0,a.jsx)(n.p,{children:"or similar to the following if unhealthy:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HTTP 503 Service Unavailable"',children:'{\n "status": "Unhealthy",\n "totalDuration": "00:00:00.0009477",\n "entries": {\n "node-health": {\n "data": {\n "IsSyncing": false,\n "Errors": [ "NoPeers" ]\n },\n "description": "The node is now fully synced with a network. Node is not connected to any peers.",\n "duration": "00:00:00.0001356",\n "status": "Unhealthy",\n "tags": []\n }\n }\n}\n'})}),"\n",(0,a.jsxs)(n.p,{children:["It is also possible to replace the default ",(0,a.jsx)(n.code,{children:"/health"})," endpoint with a custom one using the ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-slug",children:(0,a.jsx)(n.code,{children:"HealthChecks.Slug"})})," configuration option. For example:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"--HealthChecks.Slug /my/custom/endpoint\n"})}),"\n",(0,a.jsx)(n.h2,{id:"webhook",children:"Configuring a webhook"}),"\n",(0,a.jsxs)(n.p,{children:["The health check service can be configured to send notifications to a webhook on node failure or recovery. This is achieved with the ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-uienabled",children:(0,a.jsx)(n.code,{children:"HealthChecks.UIEnabled"})}),", ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-webhooksenabled",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksEnabled"})}),", and ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-webhooksuri",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksUri"})})," configuration options. Optionally, the webhook payload data can be customized with the ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-webhookspayload",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksPayload"})})," and ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-webhooksrestorepayload",children:(0,a.jsx)(n.code,{children:"HealthChecks.WebhooksRestorePayload"})})," configuration options for failure and recovery events respectively."]}),"\n",(0,a.jsx)(n.p,{children:"The following example demonstrates how to configure a basic Slack webhook:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --HealthChecks.Enabled true \\\n --HealthChecks.UIEnabled true \\\n --HealthChecks.WebhooksEnabled true \\\n --HealthChecks.WebhooksUri https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX \\\n --HealthChecks.WebhooksPayload \'{"text": "Node is unhealthy"}\' \\\n --HealthChecks.WebhooksRestorePayload \'{"text": "Node is healthy"}\'\n'})}),"\n",(0,a.jsx)(n.h2,{id:"storage-space",children:"Monitoring storage space"}),"\n",(0,a.jsx)(n.p,{children:"Monitoring the available storage space is a crucial aspect of running a node. Nethermind provides a feature to track the free storage space and take action when the available space falls below a certain threshold. The following options are available:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-lowstoragecheckawaitonstartup",children:(0,a.jsx)(n.code,{children:"HealthChecks.LowStorageCheckAwaitOnStartup"})})," to check for low disk space on startup and suspend Nethermind until enough space is available"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-lowstoragespaceshutdownthreshold",children:(0,a.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceShutdownThreshold"})})," to shut down Nethermind when the percentage of available disk space falls below the specified threshold"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-lowstoragespacewarningthreshold",children:(0,a.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceWarningThreshold"})})," to issue a warning when the percentage of available disk space falls below the specified threshold"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"blocks",children:"Monitoring blocks"}),"\n",(0,a.jsx)(n.p,{children:"Another critical aspect of running a node is monitoring the production and processing of blocks. For that, Nethermind provides the following options:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-maxintervalwithoutprocessedblock",children:(0,a.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProcessedBlock"})})," to specify the max interval without processing a block before the node is considered unhealthy"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-maxintervalwithoutproducedblock",children:(0,a.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProducedBlock"})})," to specify the max interval without producing a block before the node is considered unhealthy"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"consensus-client",children:"Monitoring consensus client"}),"\n",(0,a.jsxs)(n.p,{children:["The health check service can also monitor the communication between Nethermind and the consensus client which can be configured by the ",(0,a.jsx)(n.a,{href:"/fundamentals/configuration#healthchecks-maxintervalclrequesttime",children:(0,a.jsx)(n.code,{children:"HealthChecks.MaxIntervalClRequestTime"})})," configuration option."]})]})}function d(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(4164);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var a=t(6540),o=t(4164),r=t(3104),s=t(6347),i=t(205),l=t(7485),c=t(1682),h=t(679);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function f(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=u(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!f({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,d]=p({queryString:t,groupId:o}),[b,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,h.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),g=(()=>{const e=c??b;return f({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!f({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),m(e)}),[d,m,r]),tabValues:r}}var m=t(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var k=t(4848);function v(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),h=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(c(n),s(o))},d=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,k.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,k.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:d,onClick:h,...r,className:(0,o.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function x(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,k.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function j(e){const n=b(e);return(0,k.jsxs)("div",{className:(0,o.A)("tabs-container",g.tabList),children:[(0,k.jsx)(v,{...n,...e}),(0,k.jsx)(x,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,k.jsx)(j,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>i});var a=t(6540);const o={},r=a.createContext(o);function s(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a65a4280.f07faf91.js b/assets/js/a65a4280.f49ee68f.js similarity index 99% rename from assets/js/a65a4280.f07faf91.js rename to assets/js/a65a4280.f49ee68f.js index 2742889cf..ef1624038 100644 --- a/assets/js/a65a4280.f07faf91.js +++ b/assets/js/a65a4280.f49ee68f.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8134],{1266:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),a=t(8453),s=t(1470),l=t(9365);const o={title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},i=void 0,c={id:"interacting/json-rpc-ns/web3",title:"web3 namespace",description:"web3_clientVersion",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/web3.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/web3",permalink:"/1.25.4/interacting/json-rpc-ns/web3",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/web3.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:10,frontMatter:{title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"txpool",permalink:"/1.25.4/interacting/json-rpc-ns/txpool"},next:{title:"Metrics",permalink:"/1.25.4/monitoring/metrics/"}},u={},d=[{value:"web3_clientVersion",id:"web3_clientversion",level:3},{value:"web3_sha3",id:"web3_sha3",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"web3_clientversion",children:"web3_clientVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns the current client version."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_clientVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"web3_sha3",children:"web3_sha3"}),"\n",(0,r.jsx)(n.p,{children:"Returns Keccak of the given data."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_sha3",\n "params": [data]\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const a={tabItem:"tabItem_Ymn6"};var s=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>y});var r=t(6540),a=t(4164),s=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const a=(0,l.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(s),(0,r.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(a.location.search);n.set(s,e),a.replace({...a.location,search:n.toString()})}),[s,a])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s}))),[c,d]=b({queryString:t,groupId:a}),[m,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,s]=(0,u.Dv)(t);return[a,(0,r.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:a}),v=(()=>{const e=c??m;return h({value:e,tabValues:s})?e:null})();(0,o.A)((()=>{v&&i(v)}),[v]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)}),[d,f,s]),tabValues:s}}var f=t(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function x(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),a=o[t].value;a!==r&&(c(n),l(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...s,className:(0,a.A)("tabs__item",v.tabItem,s?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:s}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===s));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function w(e){const n=m(e);return(0,j.jsxs)("div",{className:(0,a.A)("tabs-container",v.tabList),children:[(0,j.jsx)(x,{...n,...e}),(0,j.jsx)(g,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,j.jsx)(w,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const a={},s=r.createContext(a);function l(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8134],{1266:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),a=t(8453),s=t(1470),l=t(9365);const o={title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},i=void 0,c={id:"interacting/json-rpc-ns/web3",title:"web3 namespace",description:"web3_clientVersion",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/web3.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/web3",permalink:"/1.25.4/interacting/json-rpc-ns/web3",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/web3.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:10,frontMatter:{title:"web3 namespace",sidebar_label:"web3",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"txpool",permalink:"/1.25.4/interacting/json-rpc-ns/txpool"},next:{title:"Metrics",permalink:"/1.25.4/monitoring/metrics/"}},u={},d=[{value:"web3_clientVersion",id:"web3_clientversion",level:3},{value:"web3_sha3",id:"web3_sha3",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"web3_clientversion",children:"web3_clientVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns the current client version."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_clientVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"web3_sha3",children:"web3_sha3"}),"\n",(0,r.jsx)(n.p,{children:"Returns Keccak of the given data."}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsx)(l.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "web3_sha3",\n "params": [data]\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const a={tabItem:"tabItem_Ymn6"};var s=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>y});var r=t(6540),a=t(4164),s=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const a=(0,l.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(s),(0,r.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(a.location.search);n.set(s,e),a.replace({...a.location,search:n.toString()})}),[s,a])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s}))),[c,d]=b({queryString:t,groupId:a}),[m,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,s]=(0,u.Dv)(t);return[a,(0,r.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:a}),v=(()=>{const e=c??m;return h({value:e,tabValues:s})?e:null})();(0,o.A)((()=>{v&&i(v)}),[v]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)}),[d,f,s]),tabValues:s}}var f=t(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function x(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),a=o[t].value;a!==r&&(c(n),l(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...s,className:(0,a.A)("tabs__item",v.tabItem,s?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:s}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===s));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function w(e){const n=m(e);return(0,j.jsxs)("div",{className:(0,a.A)("tabs-container",v.tabList),children:[(0,j.jsx)(x,{...n,...e}),(0,j.jsx)(g,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,j.jsx)(w,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const a={},s=r.createContext(a);function l(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a87fa4c0.19ff5a2b.js b/assets/js/a87fa4c0.9072c17e.js similarity index 99% rename from assets/js/a87fa4c0.19ff5a2b.js rename to assets/js/a87fa4c0.9072c17e.js index 5ed873b56..73add9235 100644 --- a/assets/js/a87fa4c0.19ff5a2b.js +++ b/assets/js/a87fa4c0.9072c17e.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6137],{7477:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>a});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"eth namespace",sidebar_label:"eth",sidebar_position:3},h=void 0,x={id:"interacting/json-rpc-ns/eth",title:"eth namespace",description:"eth_blobBaseFee",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/eth.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/eth",permalink:"/1.28.0/interacting/json-rpc-ns/eth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/eth.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"eth namespace",sidebar_label:"eth",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"debug",permalink:"/1.28.0/interacting/json-rpc-ns/debug"},next:{title:"net",permalink:"/1.28.0/interacting/json-rpc-ns/net"}},t={},a=[{value:"eth_blobBaseFee",id:"eth_blobbasefee",level:3},{value:"eth_blockNumber",id:"eth_blocknumber",level:3},{value:"eth_call",id:"eth_call",level:3},{value:"eth_chainId",id:"eth_chainid",level:3},{value:"eth_createAccessList",id:"eth_createaccesslist",level:3},{value:"eth_estimateGas",id:"eth_estimategas",level:3},{value:"eth_feeHistory",id:"eth_feehistory",level:3},{value:"eth_gasPrice",id:"eth_gasprice",level:3},{value:"eth_getAccount",id:"eth_getaccount",level:3},{value:"eth_getBalance",id:"eth_getbalance",level:3},{value:"eth_getBlockByHash",id:"eth_getblockbyhash",level:3},{value:"eth_getBlockByNumber",id:"eth_getblockbynumber",level:3},{value:"eth_getBlockReceipts",id:"eth_getblockreceipts",level:3},{value:"eth_getBlockTransactionCountByHash",id:"eth_getblocktransactioncountbyhash",level:3},{value:"eth_getBlockTransactionCountByNumber",id:"eth_getblocktransactioncountbynumber",level:3},{value:"eth_getCode",id:"eth_getcode",level:3},{value:"eth_getFilterChanges",id:"eth_getfilterchanges",level:3},{value:"eth_getFilterLogs",id:"eth_getfilterlogs",level:3},{value:"eth_getLogs",id:"eth_getlogs",level:3},{value:"eth_getProof",id:"eth_getproof",level:3},{value:"eth_getStorageAt",id:"eth_getstorageat",level:3},{value:"eth_getTransactionByBlockHashAndIndex",id:"eth_gettransactionbyblockhashandindex",level:3},{value:"eth_getTransactionByBlockNumberAndIndex",id:"eth_gettransactionbyblocknumberandindex",level:3},{value:"eth_getTransactionByHash",id:"eth_gettransactionbyhash",level:3},{value:"eth_getTransactionCount",id:"eth_gettransactioncount",level:3},{value:"eth_getTransactionReceipt",id:"eth_gettransactionreceipt",level:3},{value:"eth_getUncleByBlockHashAndIndex",id:"eth_getunclebyblockhashandindex",level:3},{value:"eth_getUncleByBlockNumberAndIndex",id:"eth_getunclebyblocknumberandindex",level:3},{value:"eth_getUncleCountByBlockHash",id:"eth_getunclecountbyblockhash",level:3},{value:"eth_getUncleCountByBlockNumber",id:"eth_getunclecountbyblocknumber",level:3},{value:"eth_newBlockFilter",id:"eth_newblockfilter",level:3},{value:"eth_newFilter",id:"eth_newfilter",level:3},{value:"eth_newPendingTransactionFilter",id:"eth_newpendingtransactionfilter",level:3},{value:"eth_pendingTransactions",id:"eth_pendingtransactions",level:3},{value:"eth_protocolVersion",id:"eth_protocolversion",level:3},{value:"eth_sendRawTransaction",id:"eth_sendrawtransaction",level:3},{value:"eth_sendTransaction",id:"eth_sendtransaction",level:3},{value:"eth_simulateV1",id:"eth_simulatev1",level:3},{value:"eth_subscribe",id:"eth_subscribe",level:3},{value:"Subscription topics",id:"subscription-topics",level:4},{value:"newHeads",id:"newheads",level:5},{value:"logs",id:"logs",level:5},{value:"newPendingTransactions",id:"newpendingtransactions",level:5},{value:"droppedPendingTransactions",id:"droppedpendingtransactions",level:5},{value:"syncing",id:"syncing",level:5},{value:"eth_syncing",id:"eth_syncing",level:3},{value:"eth_uninstallFilter",id:"eth_uninstallfilter",level:3},{value:"eth_unsubscribe",id:"eth_unsubscribe",level:3}];function j(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h3:"h3",h4:"h4",h5:"h5",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"eth_blobbasefee",children:"eth_blobBaseFee"}),"\n",(0,r.jsx)(n.p,{children:"Returns the base fee per blob gas in wei"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blobBaseFee",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_blocknumber",children:"eth_blockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns current block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blockNumber",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_call",children:"eth_call"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_call",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_chainid",children:"eth_chainId"}),"\n",(0,r.jsx)(n.p,{children:"Returns ChainID"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_chainId",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_createaccesslist",children:"eth_createAccessList"}),"\n",(0,r.jsxs)(n.p,{children:["Creates an ",(0,r.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-2930",children:"EIP2930"})," type AccessList for the given transaction"]}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"optimize"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_createAccessList",\n "params": [transactionCall, blockParameter, optimize]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_estimategas",children:"eth_estimateGas"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call and returns gas used (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_estimateGas",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_feehistory",children:"eth_feeHistory"}),"\n",(0,r.jsx)(n.p,{children:"Returns block fee history."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockCount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"newestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"rewardPercentiles"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_feeHistory",\n "params": [blockCount, newestBlock, rewardPercentiles]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerBlobGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oldestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"reward"}),": array of array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gasprice",children:"eth_gasPrice"}),"\n",(0,r.jsx)(n.p,{children:"Returns miner's gas price"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_gasPrice",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getaccount",children:"eth_getAccount"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves Accounts via Address and Blocknumber"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getAccount",\n "params": [accountAddress, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getbalance",children:"eth_getBalance"}),"\n",(0,r.jsx)(n.p,{children:"Returns account balance"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBalance",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbyhash",children:"eth_getBlockByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByHash",\n "params": [blockHash, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbynumber",children:"eth_getBlockByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByNumber",\n "params": [blockParameter, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockreceipts",children:"eth_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbyhash",children:"eth_getBlockTransactionCountByHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbynumber",children:"eth_getBlockTransactionCountByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getcode",children:"eth_getCode"}),"\n",(0,r.jsx)(n.p,{children:"Returns account code at given address and block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getCode",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterchanges",children:"eth_getFilterChanges"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterChanges",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterlogs",children:"eth_getFilterLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterLogs",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getlogs",children:"eth_getLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads logs"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getLogs",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getproof",children:"eth_getProof"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"https://github.com/ethereum/EIPs/issues/1186",children:"https://github.com/ethereum/EIPs/issues/1186"})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"hashRate"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getProof",\n "params": [accountAddress, hashRate, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageProofs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hasValue"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"span"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getstorageat",children:"eth_getStorageAt"}),"\n",(0,r.jsx)(n.p,{children:"Returns storage data at address. storage_index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getStorageAt",\n "params": [address, positionIndex, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblockhashandindex",children:"eth_getTransactionByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block hash and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockHashAndIndex",\n "params": [blockHash, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblocknumberandindex",children:"eth_getTransactionByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block number and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyhash",children:"eth_getTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactioncount",children:"eth_getTransactionCount"}),"\n",(0,r.jsx)(n.p,{children:"Returns account nonce (number of trnsactions from the account since genesis) at the given block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionCount",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionreceipt",children:"eth_getTransactionReceipt"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction receipt by tx hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionReceipt",\n "params": [txHashData]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblockhashandindex",children:"eth_getUncleByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block hash and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockHashAndIndex",\n "params": [blockHashData, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblocknumberandindex",children:"eth_getUncleByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block number and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblockhash",children:"eth_getUncleCountByBlockHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblocknumber",children:"eth_getUncleCountByBlockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newblockfilter",children:"eth_newBlockFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newBlockFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newfilter",children:"eth_newFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newFilter",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newpendingtransactionfilter",children:"eth_newPendingTransactionFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newPendingTransactionFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_pendingtransactions",children:"eth_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns the pending transactions list"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_pendingTransactions",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_protocolversion",children:"eth_protocolVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns ETH protocol version"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_protocolVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendrawtransaction",children:"eth_sendRawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a raw transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transaction"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendRawTransaction",\n "params": [transaction]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendtransaction",children:"eth_sendTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rpcTx"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendTransaction",\n "params": [rpcTx]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_simulatev1",children:"eth_simulateV1"}),"\n",(0,r.jsx)(n.p,{children:"Executes a simulation across multiple blocks (does not create a transaction or block)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockStateCalls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockOverrides"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobBaseFee"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"feeRecipient"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prevRandao"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"time"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"calls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateOverrides"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"movePrecompileToAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateDiff"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceTransfers"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validation"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_simulateV1",\n "params": [payload, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"calls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"message"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"returnData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_subscribe",children:"eth_subscribe"}),"\n",(0,r.jsx)(n.p,{children:"Starts a subscription to a particular event over WebSockets. A JSON-RPC notification with event payload and subscription id is sent to a client for every event matching the subscription topic."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"subscriptionName"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_subscribe",\n "params": [subscriptionName, args]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": "0x..." // subscription id\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]}),(0,r.jsxs)(c.A,{value:"notif",label:"Notification",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "method": "eth_subscription",\n "params": {\n "subscription": "0x...", // subscription id\n "result": payload\n }\n}\n'})}),(0,r.jsxs)(n.p,{children:["See specific subcription topic below for ",(0,r.jsx)(n.code,{children:"payload"})," details."]})]})]}),"\n",(0,r.jsx)(n.h4,{id:"subscription-topics",children:"Subscription topics"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newheads",children:"newHeads"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming block headers. Fires a notification each time a new header is appended to the chain, including chain reorganizations."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"logs",children:"logs"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to incoming logs filtered by the given options. In case of a chain reorganization, previously sent logs on the old chain will be re-sent with the ",(0,r.jsx)(n.code,{children:"removed"})," field set to ",(0,r.jsx)(n.code,{children:"true"}),"."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newpendingtransactions",children:"newPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming pending transactions. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"droppedpendingtransactions",children:"droppedPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to transactions evicted from the transaction pool. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"syncing",children:"syncing"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to syncing events. Returns ",(0,r.jsx)(n.code,{children:"false"})," (once) if the node is synced or an object with statistics (once) when the node starts syncing."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),":"]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["if synced: ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:["if syncing: ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_syncing",children:"eth_syncing"}),"\n",(0,r.jsx)(n.p,{children:"Returns syncing status"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_syncing",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"syncMode"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_uninstallfilter",children:"eth_uninstallFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_uninstallFilter",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_unsubscribe",children:"eth_unsubscribe"}),"\n",(0,r.jsx)(n.p,{children:"Unsubscribes from a subscription."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subscriptionId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_unsubscribe",\n "params": [subscriptionId]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})," (",(0,r.jsx)(n.code,{children:"true"})," if unsubscribed successfully; otherwise, ",(0,r.jsx)(n.code,{children:"false"}),")"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(j,{...e})}):j(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),t=s(679);function a(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function j(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return a(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=j(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,a]=g({queryString:s,groupId:i}),[m,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,t.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??m;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),a(e),u(e)}),[a,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),t=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},a=e=>{let n=null;switch(e.key){case"Enter":t(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:a,onClick:t,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function k(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:a(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6137],{7477:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>a});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"eth namespace",sidebar_label:"eth",sidebar_position:3},h=void 0,x={id:"interacting/json-rpc-ns/eth",title:"eth namespace",description:"eth_blobBaseFee",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/eth.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/eth",permalink:"/1.28.0/interacting/json-rpc-ns/eth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/eth.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"eth namespace",sidebar_label:"eth",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"debug",permalink:"/1.28.0/interacting/json-rpc-ns/debug"},next:{title:"net",permalink:"/1.28.0/interacting/json-rpc-ns/net"}},t={},a=[{value:"eth_blobBaseFee",id:"eth_blobbasefee",level:3},{value:"eth_blockNumber",id:"eth_blocknumber",level:3},{value:"eth_call",id:"eth_call",level:3},{value:"eth_chainId",id:"eth_chainid",level:3},{value:"eth_createAccessList",id:"eth_createaccesslist",level:3},{value:"eth_estimateGas",id:"eth_estimategas",level:3},{value:"eth_feeHistory",id:"eth_feehistory",level:3},{value:"eth_gasPrice",id:"eth_gasprice",level:3},{value:"eth_getAccount",id:"eth_getaccount",level:3},{value:"eth_getBalance",id:"eth_getbalance",level:3},{value:"eth_getBlockByHash",id:"eth_getblockbyhash",level:3},{value:"eth_getBlockByNumber",id:"eth_getblockbynumber",level:3},{value:"eth_getBlockReceipts",id:"eth_getblockreceipts",level:3},{value:"eth_getBlockTransactionCountByHash",id:"eth_getblocktransactioncountbyhash",level:3},{value:"eth_getBlockTransactionCountByNumber",id:"eth_getblocktransactioncountbynumber",level:3},{value:"eth_getCode",id:"eth_getcode",level:3},{value:"eth_getFilterChanges",id:"eth_getfilterchanges",level:3},{value:"eth_getFilterLogs",id:"eth_getfilterlogs",level:3},{value:"eth_getLogs",id:"eth_getlogs",level:3},{value:"eth_getProof",id:"eth_getproof",level:3},{value:"eth_getStorageAt",id:"eth_getstorageat",level:3},{value:"eth_getTransactionByBlockHashAndIndex",id:"eth_gettransactionbyblockhashandindex",level:3},{value:"eth_getTransactionByBlockNumberAndIndex",id:"eth_gettransactionbyblocknumberandindex",level:3},{value:"eth_getTransactionByHash",id:"eth_gettransactionbyhash",level:3},{value:"eth_getTransactionCount",id:"eth_gettransactioncount",level:3},{value:"eth_getTransactionReceipt",id:"eth_gettransactionreceipt",level:3},{value:"eth_getUncleByBlockHashAndIndex",id:"eth_getunclebyblockhashandindex",level:3},{value:"eth_getUncleByBlockNumberAndIndex",id:"eth_getunclebyblocknumberandindex",level:3},{value:"eth_getUncleCountByBlockHash",id:"eth_getunclecountbyblockhash",level:3},{value:"eth_getUncleCountByBlockNumber",id:"eth_getunclecountbyblocknumber",level:3},{value:"eth_newBlockFilter",id:"eth_newblockfilter",level:3},{value:"eth_newFilter",id:"eth_newfilter",level:3},{value:"eth_newPendingTransactionFilter",id:"eth_newpendingtransactionfilter",level:3},{value:"eth_pendingTransactions",id:"eth_pendingtransactions",level:3},{value:"eth_protocolVersion",id:"eth_protocolversion",level:3},{value:"eth_sendRawTransaction",id:"eth_sendrawtransaction",level:3},{value:"eth_sendTransaction",id:"eth_sendtransaction",level:3},{value:"eth_simulateV1",id:"eth_simulatev1",level:3},{value:"eth_subscribe",id:"eth_subscribe",level:3},{value:"Subscription topics",id:"subscription-topics",level:4},{value:"newHeads",id:"newheads",level:5},{value:"logs",id:"logs",level:5},{value:"newPendingTransactions",id:"newpendingtransactions",level:5},{value:"droppedPendingTransactions",id:"droppedpendingtransactions",level:5},{value:"syncing",id:"syncing",level:5},{value:"eth_syncing",id:"eth_syncing",level:3},{value:"eth_uninstallFilter",id:"eth_uninstallfilter",level:3},{value:"eth_unsubscribe",id:"eth_unsubscribe",level:3}];function j(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h3:"h3",h4:"h4",h5:"h5",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"eth_blobbasefee",children:"eth_blobBaseFee"}),"\n",(0,r.jsx)(n.p,{children:"Returns the base fee per blob gas in wei"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blobBaseFee",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_blocknumber",children:"eth_blockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns current block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blockNumber",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_call",children:"eth_call"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_call",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_chainid",children:"eth_chainId"}),"\n",(0,r.jsx)(n.p,{children:"Returns ChainID"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_chainId",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_createaccesslist",children:"eth_createAccessList"}),"\n",(0,r.jsxs)(n.p,{children:["Creates an ",(0,r.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-2930",children:"EIP2930"})," type AccessList for the given transaction"]}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"optimize"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_createAccessList",\n "params": [transactionCall, blockParameter, optimize]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_estimategas",children:"eth_estimateGas"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call and returns gas used (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_estimateGas",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_feehistory",children:"eth_feeHistory"}),"\n",(0,r.jsx)(n.p,{children:"Returns block fee history."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockCount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"newestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"rewardPercentiles"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_feeHistory",\n "params": [blockCount, newestBlock, rewardPercentiles]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerBlobGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oldestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"reward"}),": array of array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gasprice",children:"eth_gasPrice"}),"\n",(0,r.jsx)(n.p,{children:"Returns miner's gas price"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_gasPrice",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getaccount",children:"eth_getAccount"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves Accounts via Address and Blocknumber"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getAccount",\n "params": [accountAddress, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getbalance",children:"eth_getBalance"}),"\n",(0,r.jsx)(n.p,{children:"Returns account balance"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBalance",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbyhash",children:"eth_getBlockByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByHash",\n "params": [blockHash, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbynumber",children:"eth_getBlockByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByNumber",\n "params": [blockParameter, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockreceipts",children:"eth_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbyhash",children:"eth_getBlockTransactionCountByHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbynumber",children:"eth_getBlockTransactionCountByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getcode",children:"eth_getCode"}),"\n",(0,r.jsx)(n.p,{children:"Returns account code at given address and block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getCode",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterchanges",children:"eth_getFilterChanges"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterChanges",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterlogs",children:"eth_getFilterLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterLogs",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getlogs",children:"eth_getLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads logs"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getLogs",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getproof",children:"eth_getProof"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"https://github.com/ethereum/EIPs/issues/1186",children:"https://github.com/ethereum/EIPs/issues/1186"})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"hashRate"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getProof",\n "params": [accountAddress, hashRate, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageProofs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hasValue"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"span"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getstorageat",children:"eth_getStorageAt"}),"\n",(0,r.jsx)(n.p,{children:"Returns storage data at address. storage_index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getStorageAt",\n "params": [address, positionIndex, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblockhashandindex",children:"eth_getTransactionByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block hash and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockHashAndIndex",\n "params": [blockHash, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblocknumberandindex",children:"eth_getTransactionByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block number and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyhash",children:"eth_getTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactioncount",children:"eth_getTransactionCount"}),"\n",(0,r.jsx)(n.p,{children:"Returns account nonce (number of trnsactions from the account since genesis) at the given block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionCount",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionreceipt",children:"eth_getTransactionReceipt"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction receipt by tx hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionReceipt",\n "params": [txHashData]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblockhashandindex",children:"eth_getUncleByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block hash and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockHashAndIndex",\n "params": [blockHashData, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblocknumberandindex",children:"eth_getUncleByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block number and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblockhash",children:"eth_getUncleCountByBlockHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblocknumber",children:"eth_getUncleCountByBlockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newblockfilter",children:"eth_newBlockFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newBlockFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newfilter",children:"eth_newFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newFilter",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newpendingtransactionfilter",children:"eth_newPendingTransactionFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newPendingTransactionFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_pendingtransactions",children:"eth_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns the pending transactions list"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_pendingTransactions",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_protocolversion",children:"eth_protocolVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns ETH protocol version"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_protocolVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendrawtransaction",children:"eth_sendRawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a raw transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transaction"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendRawTransaction",\n "params": [transaction]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendtransaction",children:"eth_sendTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rpcTx"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendTransaction",\n "params": [rpcTx]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_simulatev1",children:"eth_simulateV1"}),"\n",(0,r.jsx)(n.p,{children:"Executes a simulation across multiple blocks (does not create a transaction or block)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockStateCalls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockOverrides"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobBaseFee"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"feeRecipient"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prevRandao"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"time"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"calls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateOverrides"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"movePrecompileToAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateDiff"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceTransfers"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validation"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_simulateV1",\n "params": [payload, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"calls"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"message"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"returnData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_subscribe",children:"eth_subscribe"}),"\n",(0,r.jsx)(n.p,{children:"Starts a subscription to a particular event over WebSockets. A JSON-RPC notification with event payload and subscription id is sent to a client for every event matching the subscription topic."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"subscriptionName"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_subscribe",\n "params": [subscriptionName, args]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": "0x..." // subscription id\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]}),(0,r.jsxs)(c.A,{value:"notif",label:"Notification",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "method": "eth_subscription",\n "params": {\n "subscription": "0x...", // subscription id\n "result": payload\n }\n}\n'})}),(0,r.jsxs)(n.p,{children:["See specific subcription topic below for ",(0,r.jsx)(n.code,{children:"payload"})," details."]})]})]}),"\n",(0,r.jsx)(n.h4,{id:"subscription-topics",children:"Subscription topics"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newheads",children:"newHeads"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming block headers. Fires a notification each time a new header is appended to the chain, including chain reorganizations."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"logs",children:"logs"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to incoming logs filtered by the given options. In case of a chain reorganization, previously sent logs on the old chain will be re-sent with the ",(0,r.jsx)(n.code,{children:"removed"})," field set to ",(0,r.jsx)(n.code,{children:"true"}),"."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newpendingtransactions",children:"newPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming pending transactions. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"droppedpendingtransactions",children:"droppedPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to transactions evicted from the transaction pool. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"syncing",children:"syncing"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to syncing events. Returns ",(0,r.jsx)(n.code,{children:"false"})," (once) if the node is synced or an object with statistics (once) when the node starts syncing."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),":"]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["if synced: ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:["if syncing: ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_syncing",children:"eth_syncing"}),"\n",(0,r.jsx)(n.p,{children:"Returns syncing status"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_syncing",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"syncMode"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_uninstallfilter",children:"eth_uninstallFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_uninstallFilter",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_unsubscribe",children:"eth_unsubscribe"}),"\n",(0,r.jsx)(n.p,{children:"Unsubscribes from a subscription."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subscriptionId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_unsubscribe",\n "params": [subscriptionId]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})," (",(0,r.jsx)(n.code,{children:"true"})," if unsubscribed successfully; otherwise, ",(0,r.jsx)(n.code,{children:"false"}),")"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(j,{...e})}):j(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),t=s(679);function a(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function j(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return a(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=j(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,a]=g({queryString:s,groupId:i}),[m,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,t.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??m;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),a(e),u(e)}),[a,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),t=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},a=e=>{let n=null;switch(e.key){case"Enter":t(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:a,onClick:t,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function k(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:a(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a8d7d90d.eaf2027a.js b/assets/js/a8d7d90d.82e69cf6.js similarity index 99% rename from assets/js/a8d7d90d.eaf2027a.js rename to assets/js/a8d7d90d.82e69cf6.js index 768d55259..ae27ba34a 100644 --- a/assets/js/a8d7d90d.eaf2027a.js +++ b/assets/js/a8d7d90d.82e69cf6.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1094],{3428:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>o,toc:()=>d});var i=s(4848),r=s(8453);const t={title:"Validators",sidebar_position:0},a=void 0,o={id:"validators/validators",title:"Validators",description:"General considerations",source:"@site/versioned_docs/version-1.25.4/validators/validators.md",sourceDirName:"validators",slug:"/validators/",permalink:"/1.25.4/validators/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/validators/validators.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Health check",permalink:"/1.25.4/monitoring/health-check"},next:{title:"Aura-based validators",permalink:"/1.25.4/validators/aura"}},l={},d=[{value:"General considerations",id:"general-considerations",level:2},{value:"Hardware configurations",id:"hardware-configurations",level:2},{value:"On-premises",id:"on-premises",level:3},{value:"AWS",id:"aws",level:3},{value:"Azure",id:"azure",level:3},{value:"GCP",id:"gcp",level:3},{value:"Gnosis validators",id:"gnosis-validators",level:2}];function c(e){const n={a:"a",admonition:"admonition",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"general-considerations",children:"General considerations"}),"\n",(0,i.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,i.jsxs)(n.p,{children:["Please check out the ",(0,i.jsx)(n.a,{href:"/1.25.4/fundamentals/security",children:"security considerations"})," before using Nethermind as a validator."]})}),"\n",(0,i.jsxs)(n.p,{children:["For Ethereum validators, we highly recommend checking out ",(0,i.jsx)(n.a,{href:"https://ethereum.org/staking",children:"Staking with Ethereum"})," and ",(0,i.jsx)(n.a,{href:"https://launchpad.ethereum.org/en/checklist",children:"Validator checklist"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"hardware-configurations",children:"Hardware configurations"}),"\n",(0,i.jsx)(n.p,{children:"The following hardware configurations for Ethereum Mainnet validators have been battle-tested by us and our users. We have observed excellent validator performance and stability with these configurations."}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Before setting up your infrastructure, check out ",(0,i.jsx)(n.a,{href:"/1.25.4/get-started/system-requirements#hardware-requirements",children:"Nethermind hardware requirements"}),"."]})}),"\n",(0,i.jsx)(n.h3,{id:"on-premises",children:"On-premises"}),"\n",(0,i.jsx)(n.p,{children:"A single validator on Intel NUC 11:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"CPU: Intel Core i7-1165G7"}),"\n",(0,i.jsx)(n.li,{children:"Memory: Crucial 32GB DDR4-3200 SODIMM"}),"\n",(0,i.jsx)(n.li,{children:"Storage: Samsung 980 PRO PCIe NVMe SSD 2TB"}),"\n",(0,i.jsx)(n.li,{children:"Internet speed: 620 Mbps download, 160 Mbps upload"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"aws",children:"AWS"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following EC2 instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m6i/",children:"m6i.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m7g/",children:"m7g.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/t4/",children:"t4g.small"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"azure",children:"Azure"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following VM instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dv5-dsv5-series#dv5-series",children:"Standard_D8_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dpsv5-dpdsv5-series#dpsv5-series",children:"Standard_D8ps_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dplsv5-dpldsv5-series#dplsv5-series",children:"Standard_D2pls_v5"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"gcp",children:"GCP"}),"\n",(0,i.jsxs)(n.p,{children:["Multiple validators on the ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/compute-optimized-machines#c2d-high-mem",children:"c2d-highmem-4"})," instance: 4 vCPU, 32 GB memory"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/general-purpose-machines#sharedcore",children:"e2-small"})," instances."]}),"\n",(0,i.jsx)(n.h2,{id:"gnosis-validators",children:"Gnosis validators"}),"\n",(0,i.jsxs)(n.p,{children:["To set up a Gnosis Chain validator, you can either do that ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node/manual/",children:"manually"})," or use one of the available ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node/tools",children:"one-click tools"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>o});var i=s(6540);const r={},t=i.createContext(r);function a(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1094],{3428:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>o,toc:()=>d});var i=s(4848),r=s(8453);const t={title:"Validators",sidebar_position:0},a=void 0,o={id:"validators/validators",title:"Validators",description:"General considerations",source:"@site/versioned_docs/version-1.25.4/validators/validators.md",sourceDirName:"validators",slug:"/validators/",permalink:"/1.25.4/validators/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/validators/validators.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Health check",permalink:"/1.25.4/monitoring/health-check"},next:{title:"Aura-based validators",permalink:"/1.25.4/validators/aura"}},l={},d=[{value:"General considerations",id:"general-considerations",level:2},{value:"Hardware configurations",id:"hardware-configurations",level:2},{value:"On-premises",id:"on-premises",level:3},{value:"AWS",id:"aws",level:3},{value:"Azure",id:"azure",level:3},{value:"GCP",id:"gcp",level:3},{value:"Gnosis validators",id:"gnosis-validators",level:2}];function c(e){const n={a:"a",admonition:"admonition",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"general-considerations",children:"General considerations"}),"\n",(0,i.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,i.jsxs)(n.p,{children:["Please check out the ",(0,i.jsx)(n.a,{href:"/1.25.4/fundamentals/security",children:"security considerations"})," before using Nethermind as a validator."]})}),"\n",(0,i.jsxs)(n.p,{children:["For Ethereum validators, we highly recommend checking out ",(0,i.jsx)(n.a,{href:"https://ethereum.org/staking",children:"Staking with Ethereum"})," and ",(0,i.jsx)(n.a,{href:"https://launchpad.ethereum.org/en/checklist",children:"Validator checklist"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"hardware-configurations",children:"Hardware configurations"}),"\n",(0,i.jsx)(n.p,{children:"The following hardware configurations for Ethereum Mainnet validators have been battle-tested by us and our users. We have observed excellent validator performance and stability with these configurations."}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Before setting up your infrastructure, check out ",(0,i.jsx)(n.a,{href:"/1.25.4/get-started/system-requirements#hardware-requirements",children:"Nethermind hardware requirements"}),"."]})}),"\n",(0,i.jsx)(n.h3,{id:"on-premises",children:"On-premises"}),"\n",(0,i.jsx)(n.p,{children:"A single validator on Intel NUC 11:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"CPU: Intel Core i7-1165G7"}),"\n",(0,i.jsx)(n.li,{children:"Memory: Crucial 32GB DDR4-3200 SODIMM"}),"\n",(0,i.jsx)(n.li,{children:"Storage: Samsung 980 PRO PCIe NVMe SSD 2TB"}),"\n",(0,i.jsx)(n.li,{children:"Internet speed: 620 Mbps download, 160 Mbps upload"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"aws",children:"AWS"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following EC2 instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m6i/",children:"m6i.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m7g/",children:"m7g.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/t4/",children:"t4g.small"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"azure",children:"Azure"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following VM instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dv5-dsv5-series#dv5-series",children:"Standard_D8_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dpsv5-dpdsv5-series#dpsv5-series",children:"Standard_D8ps_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dplsv5-dpldsv5-series#dplsv5-series",children:"Standard_D2pls_v5"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"gcp",children:"GCP"}),"\n",(0,i.jsxs)(n.p,{children:["Multiple validators on the ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/compute-optimized-machines#c2d-high-mem",children:"c2d-highmem-4"})," instance: 4 vCPU, 32 GB memory"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/general-purpose-machines#sharedcore",children:"e2-small"})," instances."]}),"\n",(0,i.jsx)(n.h2,{id:"gnosis-validators",children:"Gnosis validators"}),"\n",(0,i.jsxs)(n.p,{children:["To set up a Gnosis Chain validator, you can either do that ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node/manual/",children:"manually"})," or use one of the available ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node/tools",children:"one-click tools"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>o});var i=s(6540);const r={},t=i.createContext(r);function a(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a901fba0.694fef41.js b/assets/js/a901fba0.07adcf69.js similarity index 98% rename from assets/js/a901fba0.694fef41.js rename to assets/js/a901fba0.07adcf69.js index e096e3fa0..af5624f30 100644 --- a/assets/js/a901fba0.694fef41.js +++ b/assets/js/a901fba0.07adcf69.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5711],{8910:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>a});var r=i(4848),t=i(8453);const s={title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},d=void 0,o={id:"developers/building-from-source",title:"Building from source",description:"The Nethermind's source code can be obtained from our repository on",source:"@site/docs/developers/building-from-source.md",sourceDirName:"developers",slug:"/developers/building-from-source",permalink:"/next/developers/building-from-source",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/developers/building-from-source.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Aura-based validators",permalink:"/next/validators/aura"},next:{title:"Plugins",permalink:"/next/developers/plugins"}},l={},a=[{value:"Building standalone binaries",id:"building-standalone-binaries",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Building",id:"building",level:3},{value:"Running",id:"running",level:4},{value:"Testing",id:"testing",level:4},{value:"Bulding Docker image",id:"bulding-docker-image",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["The Nethermind's source code can be obtained from ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind",children:"our repository"})," on\nGitHub:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone --recursive https://github.com/nethermindeth/nethermind.git\n"})}),"\n",(0,r.jsx)(n.p,{children:"There are two options buiding Nethermind from source code:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#building-standalone-binaries",children:"Standalone binaries"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#bulding-docker-image",children:"Docker image"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"building-standalone-binaries",children:"Building standalone binaries"}),"\n",(0,r.jsx)(n.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(n.p,{children:["To build Nethermind from source, install ",(0,r.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/download",children:".NET SDK"})," 8 or later."]}),"\n",(0,r.jsx)(n.h3,{id:"building",children:"Building"}),"\n",(0,r.jsx)(n.p,{children:"To build both the client and tests, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"dotnet build src/Nethermind/Nethermind.sln -c release\n"})}),"\n",(0,r.jsx)(n.p,{children:"To simply run the client with a specific configuration without building tests, see below."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Before running the client or tests, ensure the\nplatform-specific ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#prerequisites",children:"prerequisites"})," are met."]})}),"\n",(0,r.jsx)(n.h4,{id:"running",children:"Running"}),"\n",(0,r.jsx)(n.p,{children:"Nethermind can be launched immediately without compiling explicitly (thus, the previous step can be skipped). The following command builds Nethermind if needed and runs it:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind/Nethermind.Runner\ndotnet run -c release -- -c mainnet\n"})}),"\n",(0,r.jsxs)(n.p,{children:["All Nethermind-specific parameters can be specified after ",(0,r.jsx)(n.code,{children:"--"}),". For instance, the command above specifies the Mainnet\nconfiguration only."]}),"\n",(0,r.jsxs)(n.p,{children:["The build artifacts can be found in the ",(0,r.jsx)(n.code,{children:"src/Nethermind/artifacts/bin/Nethermind.Runner/release"})," directory. By default, the logs and database directories are located here as well."]}),"\n",(0,r.jsxs)(n.p,{children:["For more info, see ",(0,r.jsx)(n.a,{href:"/next/get-started/running-node/",children:"Running a node"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"testing",children:"Testing"}),"\n",(0,r.jsx)(n.p,{children:"There are two test suites \u2014 Nethermind and Ethereum Foundation. Tests can be run with the following commands (the\ninitial step of the build is not required):"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind\n\n# Run Nethermind tests\ndotnet test Nethermind.sln -c release\n\n# Run Ethereum Foundation tests\ndotnet test EthereumTests.sln -c release\n"})}),"\n",(0,r.jsx)(n.h2,{id:"bulding-docker-image",children:"Bulding Docker image"}),"\n",(0,r.jsx)(n.p,{children:"To build Nethermind Docker image, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker build -t nethermind .\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For more info about running Docker containers,\nsee ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#docker-container",children:"Installing Nethermind"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>o});var r=i(6540);const t={},s=r.createContext(t);function d(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5711],{8910:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>a});var r=i(4848),t=i(8453);const s={title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},d=void 0,o={id:"developers/building-from-source",title:"Building from source",description:"The Nethermind's source code can be obtained from our repository on",source:"@site/docs/developers/building-from-source.md",sourceDirName:"developers",slug:"/developers/building-from-source",permalink:"/next/developers/building-from-source",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/developers/building-from-source.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Aura-based validators",permalink:"/next/validators/aura"},next:{title:"Plugins",permalink:"/next/developers/plugins"}},l={},a=[{value:"Building standalone binaries",id:"building-standalone-binaries",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Building",id:"building",level:3},{value:"Running",id:"running",level:4},{value:"Testing",id:"testing",level:4},{value:"Bulding Docker image",id:"bulding-docker-image",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["The Nethermind's source code can be obtained from ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind",children:"our repository"})," on\nGitHub:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone --recursive https://github.com/nethermindeth/nethermind.git\n"})}),"\n",(0,r.jsx)(n.p,{children:"There are two options buiding Nethermind from source code:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#building-standalone-binaries",children:"Standalone binaries"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#bulding-docker-image",children:"Docker image"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"building-standalone-binaries",children:"Building standalone binaries"}),"\n",(0,r.jsx)(n.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(n.p,{children:["To build Nethermind from source, install ",(0,r.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/download",children:".NET SDK"})," 8 or later."]}),"\n",(0,r.jsx)(n.h3,{id:"building",children:"Building"}),"\n",(0,r.jsx)(n.p,{children:"To build both the client and tests, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"dotnet build src/Nethermind/Nethermind.sln -c release\n"})}),"\n",(0,r.jsx)(n.p,{children:"To simply run the client with a specific configuration without building tests, see below."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Before running the client or tests, ensure the\nplatform-specific ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#prerequisites",children:"prerequisites"})," are met."]})}),"\n",(0,r.jsx)(n.h4,{id:"running",children:"Running"}),"\n",(0,r.jsx)(n.p,{children:"Nethermind can be launched immediately without compiling explicitly (thus, the previous step can be skipped). The following command builds Nethermind if needed and runs it:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind/Nethermind.Runner\ndotnet run -c release -- -c mainnet\n"})}),"\n",(0,r.jsxs)(n.p,{children:["All Nethermind-specific parameters can be specified after ",(0,r.jsx)(n.code,{children:"--"}),". For instance, the command above specifies the Mainnet\nconfiguration only."]}),"\n",(0,r.jsxs)(n.p,{children:["The build artifacts can be found in the ",(0,r.jsx)(n.code,{children:"src/Nethermind/artifacts/bin/Nethermind.Runner/release"})," directory. By default, the logs and database directories are located here as well."]}),"\n",(0,r.jsxs)(n.p,{children:["For more info, see ",(0,r.jsx)(n.a,{href:"/next/get-started/running-node/",children:"Running a node"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"testing",children:"Testing"}),"\n",(0,r.jsx)(n.p,{children:"There are two test suites \u2014 Nethermind and Ethereum Foundation. Tests can be run with the following commands (the\ninitial step of the build is not required):"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind\n\n# Run Nethermind tests\ndotnet test Nethermind.sln -c release\n\n# Run Ethereum Foundation tests\ndotnet test EthereumTests.sln -c release\n"})}),"\n",(0,r.jsx)(n.h2,{id:"bulding-docker-image",children:"Bulding Docker image"}),"\n",(0,r.jsx)(n.p,{children:"To build Nethermind Docker image, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker build -t nethermind .\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For more info about running Docker containers,\nsee ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#docker-container",children:"Installing Nethermind"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>o});var r=i(6540);const t={},s=r.createContext(t);function d(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/aa9207bc.dcb47796.js b/assets/js/aa9207bc.5c134fdf.js similarity index 98% rename from assets/js/aa9207bc.dcb47796.js rename to assets/js/aa9207bc.5c134fdf.js index b3f24a2f6..80923a53c 100644 --- a/assets/js/aa9207bc.dcb47796.js +++ b/assets/js/aa9207bc.5c134fdf.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5454],{416:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>a});var r=i(4848),t=i(8453);const s={title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},d=void 0,o={id:"developers/building-from-source",title:"Building from source",description:"The Nethermind's source code can be obtained from our repository on",source:"@site/versioned_docs/version-1.25.4/developers/building-from-source.md",sourceDirName:"developers",slug:"/developers/building-from-source",permalink:"/1.25.4/developers/building-from-source",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/developers/building-from-source.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Aura-based validators",permalink:"/1.25.4/validators/aura"},next:{title:"Plugins",permalink:"/1.25.4/developers/plugins"}},l={},a=[{value:"Building standalone binaries",id:"building-standalone-binaries",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Building",id:"building",level:3},{value:"Running",id:"running",level:4},{value:"Testing",id:"testing",level:4},{value:"Bulding Docker image",id:"bulding-docker-image",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["The Nethermind's source code can be obtained from ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind",children:"our repository"})," on\nGitHub:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone --recursive https://github.com/nethermindeth/nethermind.git\n"})}),"\n",(0,r.jsx)(n.p,{children:"There are two options buiding Nethermind from source code:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#building-standalone-binaries",children:"Standalone binaries"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#bulding-docker-image",children:"Docker image"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"building-standalone-binaries",children:"Building standalone binaries"}),"\n",(0,r.jsx)(n.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(n.p,{children:["To build Nethermind from source, install ",(0,r.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/download",children:".NET SDK"})," 8 or later."]}),"\n",(0,r.jsx)(n.h3,{id:"building",children:"Building"}),"\n",(0,r.jsx)(n.p,{children:"To build both the client and tests, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"dotnet build src/Nethermind/Nethermind.sln -c release\n"})}),"\n",(0,r.jsx)(n.p,{children:"To simply run the client with a specific configuration without building tests, see below."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Before running the client or tests, ensure the\nplatform-specific ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#prerequisites",children:"prerequisites"})," are met."]})}),"\n",(0,r.jsx)(n.h4,{id:"running",children:"Running"}),"\n",(0,r.jsx)(n.p,{children:"Nethermind can be launched immediately without compiling explicitly (thus, the previous step can be skipped). The following command builds Nethermind if needed and runs it:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind/Nethermind.Runner\ndotnet run -c release -- -c mainnet\n"})}),"\n",(0,r.jsxs)(n.p,{children:["All Nethermind-specific parameters can be specified after ",(0,r.jsx)(n.code,{children:"--"}),". For instance, the command above specifies the Mainnet\nconfiguration only."]}),"\n",(0,r.jsxs)(n.p,{children:["The build artifacts can be found in the ",(0,r.jsx)(n.code,{children:"src/Nethermind/artifacts/bin/Nethermind.Runner/release"})," directory. By default, the logs and database directories are located here as well."]}),"\n",(0,r.jsxs)(n.p,{children:["For more info, see ",(0,r.jsx)(n.a,{href:"/1.25.4/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"testing",children:"Testing"}),"\n",(0,r.jsx)(n.p,{children:"There are two test suites \u2014 Nethermind and Ethereum Foundation. Tests can be run with the following commands (the\ninitial step of the build is not required):"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind\n\n# Run Nethermind tests\ndotnet test Nethermind.sln -c release\n\n# Run Ethereum Foundation tests\ndotnet test EthereumTests.sln -c release\n"})}),"\n",(0,r.jsx)(n.h2,{id:"bulding-docker-image",children:"Bulding Docker image"}),"\n",(0,r.jsx)(n.p,{children:"To build Nethermind Docker image, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker build -t nethermind .\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For more info about running Docker containers,\nsee ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#docker-container",children:"Installing Nethermind"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>o});var r=i(6540);const t={},s=r.createContext(t);function d(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5454],{416:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>a});var r=i(4848),t=i(8453);const s={title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},d=void 0,o={id:"developers/building-from-source",title:"Building from source",description:"The Nethermind's source code can be obtained from our repository on",source:"@site/versioned_docs/version-1.25.4/developers/building-from-source.md",sourceDirName:"developers",slug:"/developers/building-from-source",permalink:"/1.25.4/developers/building-from-source",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/developers/building-from-source.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Aura-based validators",permalink:"/1.25.4/validators/aura"},next:{title:"Plugins",permalink:"/1.25.4/developers/plugins"}},l={},a=[{value:"Building standalone binaries",id:"building-standalone-binaries",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Building",id:"building",level:3},{value:"Running",id:"running",level:4},{value:"Testing",id:"testing",level:4},{value:"Bulding Docker image",id:"bulding-docker-image",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["The Nethermind's source code can be obtained from ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind",children:"our repository"})," on\nGitHub:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone --recursive https://github.com/nethermindeth/nethermind.git\n"})}),"\n",(0,r.jsx)(n.p,{children:"There are two options buiding Nethermind from source code:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#building-standalone-binaries",children:"Standalone binaries"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#bulding-docker-image",children:"Docker image"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"building-standalone-binaries",children:"Building standalone binaries"}),"\n",(0,r.jsx)(n.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(n.p,{children:["To build Nethermind from source, install ",(0,r.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/download",children:".NET SDK"})," 8 or later."]}),"\n",(0,r.jsx)(n.h3,{id:"building",children:"Building"}),"\n",(0,r.jsx)(n.p,{children:"To build both the client and tests, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"dotnet build src/Nethermind/Nethermind.sln -c release\n"})}),"\n",(0,r.jsx)(n.p,{children:"To simply run the client with a specific configuration without building tests, see below."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Before running the client or tests, ensure the\nplatform-specific ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#prerequisites",children:"prerequisites"})," are met."]})}),"\n",(0,r.jsx)(n.h4,{id:"running",children:"Running"}),"\n",(0,r.jsx)(n.p,{children:"Nethermind can be launched immediately without compiling explicitly (thus, the previous step can be skipped). The following command builds Nethermind if needed and runs it:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind/Nethermind.Runner\ndotnet run -c release -- -c mainnet\n"})}),"\n",(0,r.jsxs)(n.p,{children:["All Nethermind-specific parameters can be specified after ",(0,r.jsx)(n.code,{children:"--"}),". For instance, the command above specifies the Mainnet\nconfiguration only."]}),"\n",(0,r.jsxs)(n.p,{children:["The build artifacts can be found in the ",(0,r.jsx)(n.code,{children:"src/Nethermind/artifacts/bin/Nethermind.Runner/release"})," directory. By default, the logs and database directories are located here as well."]}),"\n",(0,r.jsxs)(n.p,{children:["For more info, see ",(0,r.jsx)(n.a,{href:"/1.25.4/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"testing",children:"Testing"}),"\n",(0,r.jsx)(n.p,{children:"There are two test suites \u2014 Nethermind and Ethereum Foundation. Tests can be run with the following commands (the\ninitial step of the build is not required):"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind\n\n# Run Nethermind tests\ndotnet test Nethermind.sln -c release\n\n# Run Ethereum Foundation tests\ndotnet test EthereumTests.sln -c release\n"})}),"\n",(0,r.jsx)(n.h2,{id:"bulding-docker-image",children:"Bulding Docker image"}),"\n",(0,r.jsx)(n.p,{children:"To build Nethermind Docker image, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker build -t nethermind .\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For more info about running Docker containers,\nsee ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#docker-container",children:"Installing Nethermind"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>o});var r=i(6540);const t={},s=r.createContext(t);function d(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ab789c01.66375f46.js b/assets/js/ab789c01.7b9bec23.js similarity index 99% rename from assets/js/ab789c01.66375f46.js rename to assets/js/ab789c01.7b9bec23.js index c0c15440e..173732cb3 100644 --- a/assets/js/ab789c01.66375f46.js +++ b/assets/js/ab789c01.7b9bec23.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6601],{8867:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>d,toc:()=>h});var r=t(4848),s=t(8453),i=t(1470),a=t(9365);const o={title:"Installing Nethermind",sidebar_position:2},l=void 0,d={id:"get-started/installing-nethermind",title:"Installing Nethermind",description:"Nethermind can be installed in several ways:",source:"@site/versioned_docs/version-1.26.0/get-started/installing-nethermind.md",sourceDirName:"get-started",slug:"/get-started/installing-nethermind",permalink:"/1.26.0/get-started/installing-nethermind",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/get-started/installing-nethermind.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Installing Nethermind",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"System requirements",permalink:"/1.26.0/get-started/system-requirements"},next:{title:"Consensus clients",permalink:"/1.26.0/get-started/consensus-clients"}},c={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Package managers",id:"package-managers",level:2},{value:"Standalone downloads",id:"standalone-downloads",level:2},{value:"Confuguring as a Linux service",id:"confuguring-as-a-linux-service",level:3},{value:"Docker container",id:"docker-container",level:2},{value:"Running Nethermind",id:"running",level:2},{value:"Supported networks",id:"supported-networks",level:3}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"Nethermind can be installed in several ways:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#package-managers",children:"Via a package manager"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"As a standalone download"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#docker-container",children:"As a Docker container"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.26.0/developers/building-from-source",children:"By building from source code"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Does not apply to Docker distributions."})}),"\n",(0,r.jsx)(n.p,{children:"Before installing Nethermind, your specific platform might need the following prerequisites."}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsx)(a.A,{value:"linux",label:"Linux",children:"None"}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsxs)(n.p,{children:["Although the modern versions of Windows are bundled with a recent version of ",(0,r.jsx)(n.a,{href:"https://aka.ms/vcredist",children:"Microsoft Visual C++ Redistributable"}),", in some cases, it may need an update:"]}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install Microsoft.VCRedist.2015+.x64\n"})})]}),(0,r.jsx)(a.A,{value:"macos",label:"macOS",children:"None"})]}),"\n",(0,r.jsx)(n.h2,{id:"package-managers",children:"Package managers"}),"\n",(0,r.jsx)(n.p,{children:"Package managers are the easiest and fastest way of installing Nethermind."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsxs)(n.p,{children:["If you're using a package manager, it's highly recommended to set the ",(0,r.jsx)(n.code,{children:"-dd, --datadir"})," flag to specify the data directory. Otherwise, Nethermind will use the default data directory where the package is installed, which may not be preserved on further updates or uninstall."]})}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,r.jsx)(n.p,{children:"On Ubuntu and other Linux distros supporting PPA, Nethermind can be installed via Launchpad PPA."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo add-apt-repository ppa:nethermindeth/nethermind\n"})}),(0,r.jsxs)(n.admonition,{type:"note",children:[(0,r.jsx)(n.p,{children:"If the command is not found, run:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install software-properties-common\n"})})]}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get update\nsudo apt-get install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsx)(n.p,{children:"On Windows, Nethermind can be installed via Windows Package Manager as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(n.p,{children:"On macOS, Nethermind can be installed via Homebrew."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew tap nethermindeth/nethermind\n"})}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew install nethermind\n"})})]})]}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"standalone-downloads",children:"Standalone downloads"}),"\n",(0,r.jsx)(n.p,{children:"Standalone downloads give users more flexibility by allowing them to install a specific version of Nethermind, choose the installation location, and prevent automatic updates."}),"\n",(0,r.jsxs)(n.p,{children:["Standalone downloads are available on ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub Releases"})," and at ",(0,r.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads.nethermind.io"})," as ZIP archives for x64 and AArch64 (ARM64) CPU architectures for Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h3,{id:"confuguring-as-a-linux-service",children:"Confuguring as a Linux service"}),"\n",(0,r.jsxs)(n.p,{children:["To install Nethermind as a Linux service, see the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/scripts/nethermind.service",children:"nethermind.service"})," unit file as an example.\nAs it's configured to run Nethermind as the specific user and group and looks for the executable in a predefined location, the following steps need to be fulfilled:"]}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsxs)(n.p,{children:["Any of these steps can be omitted by replacing them with corresponding changes in the unit file.\nFor instance, if you want to run Nethermind as a different user, change the ",(0,r.jsx)(n.code,{children:"User"})," and ",(0,r.jsx)(n.code,{children:"Group"})," options in the unit file."]})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Create a new user and group:"}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:" # Create a new user and group\n sudo useradd -m -s /bin/bash nethermind\n \n # Increase the maximum number of open files\n sudo bash -c 'echo \"nethermind soft nofile 100000\" > /etc/security/limits.d/nethermind.conf'\n sudo bash -c 'echo \"nethermind hard nofile 100000\" >> /etc/security/limits.d/nethermind.conf'\n \n # Switch to the nethermind user\n sudo su -l nethermind\n \n # Create required directories\n # Note that the home directory (~) is now /home/nethermind\n mkdir ~/build\n mkdir ~/data\n"})}),"\n",(0,r.jsxs)(n.ol,{start:"2",children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"Download Nethermind"})," and extract the package contents to the ",(0,r.jsx)(n.code,{children:"~/build"})," directory."]}),"\n",(0,r.jsxs)(n.li,{children:["Configure options in the ",(0,r.jsx)(n.code,{children:"~/.env"})," file:"]}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",metastring:'title="~/.env"',children:'# Required\nNETHERMIND_CONFIG="mainnet"\n\n# Optional\nNETHERMIND_HEALTHCHECKSCONFIG_ENABLED="true" \n'})}),"\n",(0,r.jsx)(n.p,{children:"Now, let's set up the Linux service:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# Download the unit file\ncurl -L https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/nethermind.service -o nethermind.service\n\n# Move the unit file to the systemd directory\nsudo mv nethermind.service /etc/systemd/system\n\n# Reload the systemd daemon\nsudo systemctl daemon-reload\n\n# Start the service\nsudo systemctl start nethermind\n\n# Optionally, enable the service to start on boot\nsudo systemctl enable nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To ensure the service is up and running, check its status as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo systemctl status nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To monitor the Nethermind output, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"journalctl -u nethermind -f\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"docker-container",children:"Docker container"}),"\n",(0,r.jsxs)(n.p,{children:["The Docker images of Nethermind are available on ",(0,r.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind",children:"Docker Hub"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"This registry provides production versions of Nethermind with 3 types of tags:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:latest"})," is the latest version of Nethermind (the default tag)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:"})," is the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is the actual version of Nethermind."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:-chiseled"})," is a ",(0,r.jsx)(n.em,{children:"rootless"})," and ",(0,r.jsx)(n.a,{href:"https://ubuntu.com/engage/chiselled-ubuntu-images-for-containers",children:"chiseled"})," image with the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is either ",(0,r.jsx)(n.code,{children:"latest"})," or the actual version of Nethermind.",(0,r.jsx)(n.br,{}),"\n","For security reasons, this image contains only the absolutely necessary components and is intended to run as a non-root ",(0,r.jsx)(n.code,{children:"app"})," user with UID/GID of ",(0,r.jsx)(n.code,{children:"64198"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To download the image from the registry, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker pull nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Starting a node is achieved by:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"The following ports are exposed by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8545"}),": TCP, for the JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8551"}),": TCP, for the consensus client JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"30303"}),": TCP and UDP, for P2P networking"]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"It's highly recommended to mount data volumes as the Nethermind's data directories to ensure the synced data is preserved between the container restarts."})}),"\n",(0,r.jsx)(n.p,{children:"The following volume mount points are available by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/nethermind_db"}),": used to store the database"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/logs"}),": used to store the logs"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/keystore"}),": used to store the keys"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To mount separate volumes for each directory listed above, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/db,target=/nethermind/nethermind_db \\\n --mount type=bind,source=path/to/logs,target=/nethermind/logs \\\n --mount type=bind,source=path/to/keystore,target=/nethermind/keystore \\\n nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Alternatively, a single volume can be specified as the Nethermind data directory as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/data_dir,target=/nethermind/data_dir \\\n nethermind/nethermind -dd /nethermind/data_dir\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Note that any Nethermind-specific configuration option can be specified at the end. For instance, the ",(0,r.jsx)(n.code,{children:"-dd"})," option in this case. For further instructions, see ",(0,r.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["To build the Docker image yourself, see ",(0,r.jsx)(n.a,{href:"/1.26.0/developers/building-from-source#bulding-docker-image",children:"Building Docker image"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"running",children:"Running Nethermind"}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["A ",(0,r.jsx)(n.a,{href:"/1.26.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]}),"\n",(0,r.jsxs)(n.li,{children:["Please check out the ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/security",children:"security considerations"})," before using Nethermind for critical operations."]}),"\n"]})}),"\n",(0,r.jsx)(n.p,{children:"Nethermind is mainly controlled by command line options (aka arguments or flags)."}),"\n",(0,r.jsx)(n.p,{children:"The full list of options can be displayed by running:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,r.jsx)(n.p,{children:"For instance, to launch the client with the default configuration for the Mainnet and custom data directory, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet -dd path/to/data/dir\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For detailed info about the available configuration options, see ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration",children:"Configuration"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"supported-networks",children:"Supported networks"}),"\n",(0,r.jsxs)(n.p,{children:["To run Nethermind on a specific network, use the ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#basic-options",children:(0,r.jsx)(n.code,{children:"-c, --config"})})," command line option. Currently, the following networks are supported out of the box:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Ethereum"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#ethereum-mainnet",children:"Mainnet"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://github.com/eth-clients/holesky",children:"Holesky"})," (testnet)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#sepolia",children:"Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Base"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-mainnet",children:"Base Mainnet"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-testnet-sepolia",children:"Base Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Energy Web Chain"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain",children:"Energy Web"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/testnet-and-mainnet#developing-on-volta-test-network",children:"Volta"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Gnosis Chain"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://docs.gnosischain.com/concepts/networks/mainnet",children:"Gnosis"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://docs.gnosischain.com/concepts/networks/chiado",children:"Chiado"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Optimism"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://community.optimism.io/docs/useful-tools/networks/#op-mainnet",children:"OP Mainnet"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://community.optimism.io/docs/useful-tools/networks/#op-sepolia",children:"OP Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>a});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var i=t(4848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,a),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var r=t(6540),s=t(4164),i=t(3104),a=t(6347),o=t(205),l=t(7485),d=t(1682),c=t(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const s=(0,a.W6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(s.location.search);n.set(i,e),s.replace({...s.location,search:n.toString()})}),[i,s])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,i=u(e),[a,l]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[d,h]=p({queryString:t,groupId:s}),[x,g]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,i]=(0,c.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:s}),f=(()=>{const e=d??x;return m({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&l(f)}),[f]);return{selectedValue:a,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);l(e),h(e),g(e)}),[h,g,i]),tabValues:i}}var g=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function b(e){let{className:n,block:t,selectedValue:r,selectValue:a,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,i.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),s=o[t].value;s!==r&&(d(n),a(s))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>l.push(e),onKeyDown:h,onClick:c,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:i}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=x(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(b,{...n,...e}),(0,j.jsx)(v,{...n,...e})]})}function w(e){const n=(0,g.A)();return(0,j.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var r=t(6540);const s={},i=r.createContext(s);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6601],{8867:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>d,toc:()=>h});var r=t(4848),s=t(8453),i=t(1470),a=t(9365);const o={title:"Installing Nethermind",sidebar_position:2},l=void 0,d={id:"get-started/installing-nethermind",title:"Installing Nethermind",description:"Nethermind can be installed in several ways:",source:"@site/versioned_docs/version-1.26.0/get-started/installing-nethermind.md",sourceDirName:"get-started",slug:"/get-started/installing-nethermind",permalink:"/1.26.0/get-started/installing-nethermind",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/get-started/installing-nethermind.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Installing Nethermind",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"System requirements",permalink:"/1.26.0/get-started/system-requirements"},next:{title:"Consensus clients",permalink:"/1.26.0/get-started/consensus-clients"}},c={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Package managers",id:"package-managers",level:2},{value:"Standalone downloads",id:"standalone-downloads",level:2},{value:"Confuguring as a Linux service",id:"confuguring-as-a-linux-service",level:3},{value:"Docker container",id:"docker-container",level:2},{value:"Running Nethermind",id:"running",level:2},{value:"Supported networks",id:"supported-networks",level:3}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"Nethermind can be installed in several ways:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#package-managers",children:"Via a package manager"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"As a standalone download"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#docker-container",children:"As a Docker container"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.26.0/developers/building-from-source",children:"By building from source code"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Does not apply to Docker distributions."})}),"\n",(0,r.jsx)(n.p,{children:"Before installing Nethermind, your specific platform might need the following prerequisites."}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsx)(a.A,{value:"linux",label:"Linux",children:"None"}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsxs)(n.p,{children:["Although the modern versions of Windows are bundled with a recent version of ",(0,r.jsx)(n.a,{href:"https://aka.ms/vcredist",children:"Microsoft Visual C++ Redistributable"}),", in some cases, it may need an update:"]}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install Microsoft.VCRedist.2015+.x64\n"})})]}),(0,r.jsx)(a.A,{value:"macos",label:"macOS",children:"None"})]}),"\n",(0,r.jsx)(n.h2,{id:"package-managers",children:"Package managers"}),"\n",(0,r.jsx)(n.p,{children:"Package managers are the easiest and fastest way of installing Nethermind."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsxs)(n.p,{children:["If you're using a package manager, it's highly recommended to set the ",(0,r.jsx)(n.code,{children:"-dd, --datadir"})," flag to specify the data directory. Otherwise, Nethermind will use the default data directory where the package is installed, which may not be preserved on further updates or uninstall."]})}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,r.jsx)(n.p,{children:"On Ubuntu and other Linux distros supporting PPA, Nethermind can be installed via Launchpad PPA."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo add-apt-repository ppa:nethermindeth/nethermind\n"})}),(0,r.jsxs)(n.admonition,{type:"note",children:[(0,r.jsx)(n.p,{children:"If the command is not found, run:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install software-properties-common\n"})})]}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get update\nsudo apt-get install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsx)(n.p,{children:"On Windows, Nethermind can be installed via Windows Package Manager as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(n.p,{children:"On macOS, Nethermind can be installed via Homebrew."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew tap nethermindeth/nethermind\n"})}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew install nethermind\n"})})]})]}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"standalone-downloads",children:"Standalone downloads"}),"\n",(0,r.jsx)(n.p,{children:"Standalone downloads give users more flexibility by allowing them to install a specific version of Nethermind, choose the installation location, and prevent automatic updates."}),"\n",(0,r.jsxs)(n.p,{children:["Standalone downloads are available on ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub Releases"})," and at ",(0,r.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads.nethermind.io"})," as ZIP archives for x64 and AArch64 (ARM64) CPU architectures for Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h3,{id:"confuguring-as-a-linux-service",children:"Confuguring as a Linux service"}),"\n",(0,r.jsxs)(n.p,{children:["To install Nethermind as a Linux service, see the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/scripts/nethermind.service",children:"nethermind.service"})," unit file as an example.\nAs it's configured to run Nethermind as the specific user and group and looks for the executable in a predefined location, the following steps need to be fulfilled:"]}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsxs)(n.p,{children:["Any of these steps can be omitted by replacing them with corresponding changes in the unit file.\nFor instance, if you want to run Nethermind as a different user, change the ",(0,r.jsx)(n.code,{children:"User"})," and ",(0,r.jsx)(n.code,{children:"Group"})," options in the unit file."]})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Create a new user and group:"}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:" # Create a new user and group\n sudo useradd -m -s /bin/bash nethermind\n \n # Increase the maximum number of open files\n sudo bash -c 'echo \"nethermind soft nofile 100000\" > /etc/security/limits.d/nethermind.conf'\n sudo bash -c 'echo \"nethermind hard nofile 100000\" >> /etc/security/limits.d/nethermind.conf'\n \n # Switch to the nethermind user\n sudo su -l nethermind\n \n # Create required directories\n # Note that the home directory (~) is now /home/nethermind\n mkdir ~/build\n mkdir ~/data\n"})}),"\n",(0,r.jsxs)(n.ol,{start:"2",children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"Download Nethermind"})," and extract the package contents to the ",(0,r.jsx)(n.code,{children:"~/build"})," directory."]}),"\n",(0,r.jsxs)(n.li,{children:["Configure options in the ",(0,r.jsx)(n.code,{children:"~/.env"})," file:"]}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",metastring:'title="~/.env"',children:'# Required\nNETHERMIND_CONFIG="mainnet"\n\n# Optional\nNETHERMIND_HEALTHCHECKSCONFIG_ENABLED="true" \n'})}),"\n",(0,r.jsx)(n.p,{children:"Now, let's set up the Linux service:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# Download the unit file\ncurl -L https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/nethermind.service -o nethermind.service\n\n# Move the unit file to the systemd directory\nsudo mv nethermind.service /etc/systemd/system\n\n# Reload the systemd daemon\nsudo systemctl daemon-reload\n\n# Start the service\nsudo systemctl start nethermind\n\n# Optionally, enable the service to start on boot\nsudo systemctl enable nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To ensure the service is up and running, check its status as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo systemctl status nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To monitor the Nethermind output, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"journalctl -u nethermind -f\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"docker-container",children:"Docker container"}),"\n",(0,r.jsxs)(n.p,{children:["The Docker images of Nethermind are available on ",(0,r.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind",children:"Docker Hub"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"This registry provides production versions of Nethermind with 3 types of tags:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:latest"})," is the latest version of Nethermind (the default tag)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:"})," is the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is the actual version of Nethermind."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:-chiseled"})," is a ",(0,r.jsx)(n.em,{children:"rootless"})," and ",(0,r.jsx)(n.a,{href:"https://ubuntu.com/engage/chiselled-ubuntu-images-for-containers",children:"chiseled"})," image with the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is either ",(0,r.jsx)(n.code,{children:"latest"})," or the actual version of Nethermind.",(0,r.jsx)(n.br,{}),"\n","For security reasons, this image contains only the absolutely necessary components and is intended to run as a non-root ",(0,r.jsx)(n.code,{children:"app"})," user with UID/GID of ",(0,r.jsx)(n.code,{children:"64198"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To download the image from the registry, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker pull nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Starting a node is achieved by:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"The following ports are exposed by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8545"}),": TCP, for the JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8551"}),": TCP, for the consensus client JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"30303"}),": TCP and UDP, for P2P networking"]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"It's highly recommended to mount data volumes as the Nethermind's data directories to ensure the synced data is preserved between the container restarts."})}),"\n",(0,r.jsx)(n.p,{children:"The following volume mount points are available by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/nethermind_db"}),": used to store the database"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/logs"}),": used to store the logs"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/keystore"}),": used to store the keys"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To mount separate volumes for each directory listed above, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/db,target=/nethermind/nethermind_db \\\n --mount type=bind,source=path/to/logs,target=/nethermind/logs \\\n --mount type=bind,source=path/to/keystore,target=/nethermind/keystore \\\n nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Alternatively, a single volume can be specified as the Nethermind data directory as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/data_dir,target=/nethermind/data_dir \\\n nethermind/nethermind -dd /nethermind/data_dir\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Note that any Nethermind-specific configuration option can be specified at the end. For instance, the ",(0,r.jsx)(n.code,{children:"-dd"})," option in this case. For further instructions, see ",(0,r.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["To build the Docker image yourself, see ",(0,r.jsx)(n.a,{href:"/1.26.0/developers/building-from-source#bulding-docker-image",children:"Building Docker image"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"running",children:"Running Nethermind"}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["A ",(0,r.jsx)(n.a,{href:"/1.26.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]}),"\n",(0,r.jsxs)(n.li,{children:["Please check out the ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/security",children:"security considerations"})," before using Nethermind for critical operations."]}),"\n"]})}),"\n",(0,r.jsx)(n.p,{children:"Nethermind is mainly controlled by command line options (aka arguments or flags)."}),"\n",(0,r.jsx)(n.p,{children:"The full list of options can be displayed by running:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,r.jsx)(n.p,{children:"For instance, to launch the client with the default configuration for the Mainnet and custom data directory, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet -dd path/to/data/dir\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For detailed info about the available configuration options, see ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration",children:"Configuration"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"supported-networks",children:"Supported networks"}),"\n",(0,r.jsxs)(n.p,{children:["To run Nethermind on a specific network, use the ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#basic-options",children:(0,r.jsx)(n.code,{children:"-c, --config"})})," command line option. Currently, the following networks are supported out of the box:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Ethereum"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#ethereum-mainnet",children:"Mainnet"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://github.com/eth-clients/holesky",children:"Holesky"})," (testnet)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#sepolia",children:"Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Base"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-mainnet",children:"Base Mainnet"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-testnet-sepolia",children:"Base Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Energy Web Chain"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain",children:"Energy Web"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/testnet-and-mainnet#developing-on-volta-test-network",children:"Volta"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Gnosis Chain"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://docs.gnosischain.com/concepts/networks/mainnet",children:"Gnosis"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://docs.gnosischain.com/concepts/networks/chiado",children:"Chiado"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Optimism"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://community.optimism.io/docs/useful-tools/networks/#op-mainnet",children:"OP Mainnet"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://community.optimism.io/docs/useful-tools/networks/#op-sepolia",children:"OP Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>a});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var i=t(4848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,a),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var r=t(6540),s=t(4164),i=t(3104),a=t(6347),o=t(205),l=t(7485),d=t(1682),c=t(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const s=(0,a.W6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(s.location.search);n.set(i,e),s.replace({...s.location,search:n.toString()})}),[i,s])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,i=u(e),[a,l]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[d,h]=p({queryString:t,groupId:s}),[x,g]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,i]=(0,c.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:s}),f=(()=>{const e=d??x;return m({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&l(f)}),[f]);return{selectedValue:a,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);l(e),h(e),g(e)}),[h,g,i]),tabValues:i}}var g=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function b(e){let{className:n,block:t,selectedValue:r,selectValue:a,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,i.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),s=o[t].value;s!==r&&(d(n),a(s))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>l.push(e),onKeyDown:h,onClick:c,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:i}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=x(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(b,{...n,...e}),(0,j.jsx)(v,{...n,...e})]})}function w(e){const n=(0,g.A)();return(0,j.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var r=t(6540);const s={},i=r.createContext(s);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/acac5159.6c3df192.js b/assets/js/acac5159.fbbc83aa.js similarity index 99% rename from assets/js/acac5159.6c3df192.js rename to assets/js/acac5159.fbbc83aa.js index 77fd1a5d8..f105d60ad 100644 --- a/assets/js/acac5159.6c3df192.js +++ b/assets/js/acac5159.fbbc83aa.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9091],{9813:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const s={title:"Pruning",sidebar_position:6},o=void 0,a={id:"fundamentals/pruning",title:"Pruning",description:"Overview",source:"@site/versioned_docs/version-1.27.0/fundamentals/pruning.md",sourceDirName:"fundamentals",slug:"/fundamentals/pruning",permalink:"/1.27.0/fundamentals/pruning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/pruning.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:6,frontMatter:{title:"Pruning",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Database",permalink:"/1.27.0/fundamentals/database"},next:{title:"Performance tuning",permalink:"/1.27.0/fundamentals/performance-tuning"}},l={},d=[{value:"Overview",id:"overview",level:2},{value:"How it works",id:"how-it-works",level:2},{value:"Preparation for full pruning",id:"preparation-for-full-pruning",level:2},{value:"Configuring full pruning",id:"configuring-full-pruning",level:2},{value:"Manual",id:"manual",level:3},{value:"State database size threshold",id:"state-db-threshold",level:3},{value:"Remaining storage space threshold",id:"storage-left-threshold",level:3},{value:"Monitoring progress",id:"monitoring-progress",level:2},{value:"Additional settings",id:"additional-settings",level:2},{value:"Memory budget",id:"memory-budget",level:3},{value:"Pruning completion behavior",id:"pruning-completion-behavior",level:3},{value:"Number of pruning concurrent tasks",id:"number-of-pruning-concurrent-tasks",level:3},{value:"In-memory cache size",id:"in-memory-cache-size",level:3},{value:"Side notes",id:"side-notes",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsx)(n.p,{children:"Pruning pertains to eliminating or cleaning obsolete historical data to optimize disk space. Clients are responsible for maintaining the world state, which comprises a database that portrays the current Ethereum network status. The world state encompasses accounts, contracts, and other information."}),"\n",(0,r.jsxs)(n.p,{children:["Pruning aims to reduce disk requirements by storing only the current world state and removing historical data. This differs from archive nodes that retain complete transaction and state history. Pruning is helpful for users who don't require historical data and prefer to interact solely with the current state of the network. However, pruning may limit the client's ability to fulfill requests that depend on historical information. Nethermind provides two kinds of pruning \u2013 ",(0,r.jsx)(n.em,{children:"full pruning"})," and ",(0,r.jsx)(n.em,{children:"in-memory pruning"}),"; both are enabled by default, also called ",(0,r.jsx)(n.em,{children:"hybrid pruning"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,r.jsxs)(n.p,{children:["During synchronization using the snap sync method, Nethermind produces a local copy of the Ethereum network state. Although this size increases by around 30 GB each week, specific historical data is retained that is not necessary for node operation or to maintain the current Ethereum state. For a detailed description of the disk usage usage, check out the ",(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/database#database-size",children:"database size"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is activated and initiated, a thorough examination of the entire state tree is conducted to determine which data is no longer required and can be treated as historical. It then determines which information corresponds to the current state and duplicates it alongside the existing version. During verification of each node in the state, the new pruned state replaces the previous one. Once the verifier confirms everything is functioning correctly, the old state database is eliminated, resulting in significant savings in disk space. As a result, the size of the database will be close to its initial size again."}),"\n",(0,r.jsx)(n.p,{children:"In-memory pruning is a continuous process that occurs under regular operation. Instead of saving a new state on each block, Nethermind will keep it in memory until a certain threshold is reached. At that point, Nethermind will only store data required by the newer state and discard unnecessary ones. This significantly reduces the total amount of data written while improving block processing performance. In-memory pruning is independent of full pruning."}),"\n",(0,r.jsx)(n.h2,{id:"preparation-for-full-pruning",children:"Preparation for full pruning"}),"\n",(0,r.jsx)(n.p,{children:"Because full pruning is executed while the node is connected to the network, it can affect the node's performance.\nThe process can consume significant memory, CPU, and disk resources, impacting block processing time.\nThis, in turn, can lead to reduced rewards for validator setups, particularly for proof-of-stake chains."}),"\n",(0,r.jsx)(n.p,{children:"Currently, full pruning takes between 20 to 30 hours to complete, although the duration may vary based on the hardware configuration. At least 200 GB of storage is required to ensure pruning runs smoothly. Nevertheless, it's recommended to have 300 GB or more."}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["Do not turn on full pruning on an archive node, as these are two opposing features. Archive nodes are designed to store\ncomplete historical data, whereas full pruning eliminates it. Use the option ",(0,r.jsx)(n.code,{children:"--Pruning.Mode None"})," to ensure that pruning is turned off completely."]})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-full-pruning",children:"Configuring full pruning"}),"\n",(0,r.jsxs)(n.p,{children:["As a very first point, check out the ",(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#pruning",children:"pruning configuration options"}),".",(0,r.jsx)(n.br,{}),"\n","To activate full pruning, use either the ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," or ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Full"})," command line options."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Setting ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," enables both ",(0,r.jsx)(n.code,{children:"InMemory"})," and ",(0,r.jsx)(n.code,{children:"Full"})," modes. The ",(0,r.jsx)(n.code,{children:"InMemory"})," mode helps the node storage grow slower than the ",(0,r.jsx)(n.code,{children:"Full"})," mode. Because of this, full pruning is executed less frequently, promoting\nhealthier disk operation. Since full pruning is hardware-intensive, this configuration also benefits attestation results."]})}),"\n",(0,r.jsx)(n.p,{children:"The next step is to determine the trigger conditions for full pruning. Currently, there are 3 options available:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#manual",children:"Manual"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#state-db-threshold",children:"State database size threshold"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#storage-left-threshold",children:"Remaining storage space threshold"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"manual",children:"Manual"}),"\n",(0,r.jsxs)(n.p,{children:["Manual mode triggers full pruning only upon request, providing complete control. To configure this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger Manual"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Pruning can also be triggered using the ",(0,r.jsx)(n.a,{href:"/1.27.0/interacting/json-rpc-ns/admin#admin_prune",children:(0,r.jsx)(n.code,{children:"admin_prune"})})," JSON-RPC method. Here's how to configure it:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Add the ",(0,r.jsx)(n.code,{children:"admin"})," namespace to ",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"}),". For instance,",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules [eth,net,...,admin]"})]}),"\n",(0,r.jsxs)(n.li,{children:["Create a separate port for ",(0,r.jsx)(n.code,{children:"admin"})," namespace only:",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls http://localhost:8555|http|admin"})]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Restart the client, and if everything is configured correctly, you should be able to call the ",(0,r.jsx)(n.code,{children:"admin_prune"})," method, and full pruning should start."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"One potential disadvantage of the manual mode is that if full pruning is not triggered on time, it cannot be performed later because of insufficient disk space. In such cases, the only option to free up the disk space is to resync the node from scratch."})}),"\n",(0,r.jsx)(n.h3,{id:"state-db-threshold",children:"State database size threshold"}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning automatically when the state database reaches the specified size.\nTo enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger StateDbSize --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning automatically whenever the state database size exceeds 256,000\nMB (250 GB). Assuming the state database has initially around 160 GB, pruning will be triggered when the database size grows by more than 90 GB."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"To avoid unexpected behavior and ensure that full pruning can be completed in full, it's recommended to set the threshold value to trigger pruning before the free disk space drops below 250 GB as a minimum. This ensures that sufficient free disk space is available for the pruning process."})}),"\n",(0,r.jsx)(n.h3,{id:"storage-left-threshold",children:"Remaining storage space threshold"}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsx)(n.p,{children:"This is the recommended approach as it ensures that pruning is executed on time."})}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning when the storage space reaches the specified minimum. To enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger VolumeFreeSpace --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements. However, it should not be set below the default value of ",(0,r.jsx)(n.code,{children:"256000"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning whenever free disk space drops to 256,000 MB (250 GB) or below. This ensures that pruning is invoked as infrequently as possible while also ensuring that sufficient free storage is always available to trigger it."}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsx)(n.p,{children:"It's recommended not to set the value below 250 GB for stability reasons. In reality, full pruning should require approximately the same amount of storage as a fresh state database (around 160 GB). Still, it also needs a threshold for processing and other operations since it creates a copy of the existing state database. Therefore, it's essential to maintain a minimum amount of storage to ensure a robust pruning performance."})}),"\n",(0,r.jsx)(n.h2,{id:"monitoring-progress",children:"Monitoring progress"}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is triggered correctly, the corresponding messages appear in the Nethermind logs."}),"\n",(0,r.jsx)(n.p,{children:"The very first ones should be:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Ready to start: pruning garbage before state with root .\nWARN: Full Pruning Started on root hash : do not close the node until finished or progress will be lost.\n"})}),"\n",(0,r.jsx)(n.p,{children:"From that moment, ensure that no restarts will be performed on Nethermind to ensure that full pruning runs correctly.\nAfter a few minutes first logs with progress would start to appear. For instance:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning In Progress: 00:00:57.0603307 1.00 mln nodes mirrored.\nFull Pruning In Progress: 00:01:40.3677103 2.00 mln nodes mirrored.\nFull Pruning In Progress: 00:02:25.6437030 3.00 mln nodes mirrored.\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Pruning may take even ",(0,r.jsx)(n.em,{children:"more than 30 hours"}),", depending on hardware configuration."]}),"\n",(0,r.jsx)(n.p,{children:"When pruning is completed, there is a log message similar the following:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Finished: 15:25:59.1620756 1,560.29 mln nodes mirrored.\n"})}),"\n",(0,r.jsx)(n.p,{children:"As you may notice, it took around 15 hours in this example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Since the amount of mirrored nodes is not a static value, providing a simple progress indicator in percentage is impossible. Therefore, the approximate value given should be used to determine when full pruning is expected to be completed."})}),"\n",(0,r.jsx)(n.h2,{id:"additional-settings",children:"Additional settings"}),"\n",(0,r.jsx)(n.h3,{id:"memory-budget",children:"Memory budget"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," configuration option controls the memory budget allocated for the trie visit during\nthe full pruning process. During pruning, pending nodes are queued to a pool of nodes whose size is determined by this value. This allows multiple nodes to share a single I/O. By increasing this value, the required read IOP per second can be significantly reduced, resulting in a faster full pruning operation. However, this improvement comes at the expense of increased memory usage."]}),"\n",(0,r.jsxs)(n.p,{children:["Assuming your system has 64GB of RAM, with Nethermind, the consensus client, and system expenses consuming 20GB,\nyou need to determine the maximum value for ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," while ensuring the system remains stable and respects the given limit. In this case, you have 44 GB (64 GB - 20 GB) of available memory for increasing the ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," value. To calculate the maximum value in MB, multiply the available memory by 1024: ",(0,r.jsx)(n.code,{children:"44 GB * 1024 = 45,056 MB"})]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Because of the workload on Ethereum Mainnet, setting the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," higher than 16 GB may not provide any additional performance benefits."]})}),"\n",(0,r.jsx)(n.p,{children:"Please note that this example assumes the remaining 44 GB of memory is sufficient for the full pruning memory budget.\nDepending on the specific use case and system requirements, it may be necessary to adjust the value further to optimize performance and resource usage."}),"\n",(0,r.jsx)(n.h3,{id:"pruning-completion-behavior",children:"Pruning completion behavior"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})," configuration option determines Nethermind's behavior after full pruning is completed. By default, Nethermind will continue to progress as usual. However, if a user wishes to shut down the node after pruning, there are three options available:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"None"}),": No action taken"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Nethermind shuts down if pruning succeeds"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"AlwaysShutdown"}),": Nethermind shuts down once pruning completes, regardless of whether it succeeds or fails"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"number-of-pruning-concurrent-tasks",children:"Number of pruning concurrent tasks"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})," configuration option determines the number of parallel tasks/threads that can be used by pruning:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"-1"}),": uses the number of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"0"}),": uses 25% of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"1"}),": runs on a single thread"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The recommended value depends on the type of node being used. If the node needs to be responsive (e.g., RPC or validator), using a value below the number of logical processors is recommended. The default value is recommended if the node doesn't have many other responsibilities but needs to follow the chain without delays and produce live logs reliably. If the node doesn't need to be responsive, has very fast I/O (such as NVMe), and the shortest pruning time\nis desired, this can be set to 2\u20133 times the number of logical processors."}),"\n",(0,r.jsx)(n.h3,{id:"in-memory-cache-size",children:"In-memory cache size"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.CacheMb"})," configuration option determines the size, in MB, of the memory pool of nodes used for in-memory pruning. The default value is 1024. Increasing this value can help reduce the rate at which the state database grows."]}),"\n",(0,r.jsx)(n.h2,{id:"side-notes",children:"Side notes"}),"\n",(0,r.jsx)(n.p,{children:"For pruning, keep in mind the following:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Full pruning is a cumbersome task, but it's performed in the background, so the node continues progressing and following the chain."}),"\n",(0,r.jsx)(n.li,{children:"The process' heaviness may affect the effectiveness of the validator rewards. Still, since it's executed only once every few months, it shouldn't have a significant impact on overall results (we've xperienced approximately 5\u201310% loss of rewards during full pruning)."}),"\n",(0,r.jsx)(n.li,{children:"Ensure that your storage has at least 250 GB of free space after syncing the node. Otherwise, full pruning will never complete successfully."}),"\n",(0,r.jsxs)(n.li,{children:["Several things can be done to reduce the size of the database after syncing: setting ",(0,r.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})," and ",(0,r.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})," to a proper value higher than 0, using a consensus client that requires less storage, and setting logs to the lowest level to avoid log spamming."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>a});var r=i(6540);const t={},s=r.createContext(t);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9091],{9813:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const s={title:"Pruning",sidebar_position:6},o=void 0,a={id:"fundamentals/pruning",title:"Pruning",description:"Overview",source:"@site/versioned_docs/version-1.27.0/fundamentals/pruning.md",sourceDirName:"fundamentals",slug:"/fundamentals/pruning",permalink:"/1.27.0/fundamentals/pruning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/pruning.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:6,frontMatter:{title:"Pruning",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Database",permalink:"/1.27.0/fundamentals/database"},next:{title:"Performance tuning",permalink:"/1.27.0/fundamentals/performance-tuning"}},l={},d=[{value:"Overview",id:"overview",level:2},{value:"How it works",id:"how-it-works",level:2},{value:"Preparation for full pruning",id:"preparation-for-full-pruning",level:2},{value:"Configuring full pruning",id:"configuring-full-pruning",level:2},{value:"Manual",id:"manual",level:3},{value:"State database size threshold",id:"state-db-threshold",level:3},{value:"Remaining storage space threshold",id:"storage-left-threshold",level:3},{value:"Monitoring progress",id:"monitoring-progress",level:2},{value:"Additional settings",id:"additional-settings",level:2},{value:"Memory budget",id:"memory-budget",level:3},{value:"Pruning completion behavior",id:"pruning-completion-behavior",level:3},{value:"Number of pruning concurrent tasks",id:"number-of-pruning-concurrent-tasks",level:3},{value:"In-memory cache size",id:"in-memory-cache-size",level:3},{value:"Side notes",id:"side-notes",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsx)(n.p,{children:"Pruning pertains to eliminating or cleaning obsolete historical data to optimize disk space. Clients are responsible for maintaining the world state, which comprises a database that portrays the current Ethereum network status. The world state encompasses accounts, contracts, and other information."}),"\n",(0,r.jsxs)(n.p,{children:["Pruning aims to reduce disk requirements by storing only the current world state and removing historical data. This differs from archive nodes that retain complete transaction and state history. Pruning is helpful for users who don't require historical data and prefer to interact solely with the current state of the network. However, pruning may limit the client's ability to fulfill requests that depend on historical information. Nethermind provides two kinds of pruning \u2013 ",(0,r.jsx)(n.em,{children:"full pruning"})," and ",(0,r.jsx)(n.em,{children:"in-memory pruning"}),"; both are enabled by default, also called ",(0,r.jsx)(n.em,{children:"hybrid pruning"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,r.jsxs)(n.p,{children:["During synchronization using the snap sync method, Nethermind produces a local copy of the Ethereum network state. Although this size increases by around 30 GB each week, specific historical data is retained that is not necessary for node operation or to maintain the current Ethereum state. For a detailed description of the disk usage usage, check out the ",(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/database#database-size",children:"database size"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is activated and initiated, a thorough examination of the entire state tree is conducted to determine which data is no longer required and can be treated as historical. It then determines which information corresponds to the current state and duplicates it alongside the existing version. During verification of each node in the state, the new pruned state replaces the previous one. Once the verifier confirms everything is functioning correctly, the old state database is eliminated, resulting in significant savings in disk space. As a result, the size of the database will be close to its initial size again."}),"\n",(0,r.jsx)(n.p,{children:"In-memory pruning is a continuous process that occurs under regular operation. Instead of saving a new state on each block, Nethermind will keep it in memory until a certain threshold is reached. At that point, Nethermind will only store data required by the newer state and discard unnecessary ones. This significantly reduces the total amount of data written while improving block processing performance. In-memory pruning is independent of full pruning."}),"\n",(0,r.jsx)(n.h2,{id:"preparation-for-full-pruning",children:"Preparation for full pruning"}),"\n",(0,r.jsx)(n.p,{children:"Because full pruning is executed while the node is connected to the network, it can affect the node's performance.\nThe process can consume significant memory, CPU, and disk resources, impacting block processing time.\nThis, in turn, can lead to reduced rewards for validator setups, particularly for proof-of-stake chains."}),"\n",(0,r.jsx)(n.p,{children:"Currently, full pruning takes between 20 to 30 hours to complete, although the duration may vary based on the hardware configuration. At least 200 GB of storage is required to ensure pruning runs smoothly. Nevertheless, it's recommended to have 300 GB or more."}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["Do not turn on full pruning on an archive node, as these are two opposing features. Archive nodes are designed to store\ncomplete historical data, whereas full pruning eliminates it. Use the option ",(0,r.jsx)(n.code,{children:"--Pruning.Mode None"})," to ensure that pruning is turned off completely."]})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-full-pruning",children:"Configuring full pruning"}),"\n",(0,r.jsxs)(n.p,{children:["As a very first point, check out the ",(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#pruning",children:"pruning configuration options"}),".",(0,r.jsx)(n.br,{}),"\n","To activate full pruning, use either the ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," or ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Full"})," command line options."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Setting ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," enables both ",(0,r.jsx)(n.code,{children:"InMemory"})," and ",(0,r.jsx)(n.code,{children:"Full"})," modes. The ",(0,r.jsx)(n.code,{children:"InMemory"})," mode helps the node storage grow slower than the ",(0,r.jsx)(n.code,{children:"Full"})," mode. Because of this, full pruning is executed less frequently, promoting\nhealthier disk operation. Since full pruning is hardware-intensive, this configuration also benefits attestation results."]})}),"\n",(0,r.jsx)(n.p,{children:"The next step is to determine the trigger conditions for full pruning. Currently, there are 3 options available:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#manual",children:"Manual"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#state-db-threshold",children:"State database size threshold"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#storage-left-threshold",children:"Remaining storage space threshold"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"manual",children:"Manual"}),"\n",(0,r.jsxs)(n.p,{children:["Manual mode triggers full pruning only upon request, providing complete control. To configure this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger Manual"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Pruning can also be triggered using the ",(0,r.jsx)(n.a,{href:"/1.27.0/interacting/json-rpc-ns/admin#admin_prune",children:(0,r.jsx)(n.code,{children:"admin_prune"})})," JSON-RPC method. Here's how to configure it:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Add the ",(0,r.jsx)(n.code,{children:"admin"})," namespace to ",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"}),". For instance,",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules [eth,net,...,admin]"})]}),"\n",(0,r.jsxs)(n.li,{children:["Create a separate port for ",(0,r.jsx)(n.code,{children:"admin"})," namespace only:",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls http://localhost:8555|http|admin"})]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Restart the client, and if everything is configured correctly, you should be able to call the ",(0,r.jsx)(n.code,{children:"admin_prune"})," method, and full pruning should start."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"One potential disadvantage of the manual mode is that if full pruning is not triggered on time, it cannot be performed later because of insufficient disk space. In such cases, the only option to free up the disk space is to resync the node from scratch."})}),"\n",(0,r.jsx)(n.h3,{id:"state-db-threshold",children:"State database size threshold"}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning automatically when the state database reaches the specified size.\nTo enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger StateDbSize --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning automatically whenever the state database size exceeds 256,000\nMB (250 GB). Assuming the state database has initially around 160 GB, pruning will be triggered when the database size grows by more than 90 GB."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"To avoid unexpected behavior and ensure that full pruning can be completed in full, it's recommended to set the threshold value to trigger pruning before the free disk space drops below 250 GB as a minimum. This ensures that sufficient free disk space is available for the pruning process."})}),"\n",(0,r.jsx)(n.h3,{id:"storage-left-threshold",children:"Remaining storage space threshold"}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsx)(n.p,{children:"This is the recommended approach as it ensures that pruning is executed on time."})}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning when the storage space reaches the specified minimum. To enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger VolumeFreeSpace --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements. However, it should not be set below the default value of ",(0,r.jsx)(n.code,{children:"256000"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning whenever free disk space drops to 256,000 MB (250 GB) or below. This ensures that pruning is invoked as infrequently as possible while also ensuring that sufficient free storage is always available to trigger it."}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsx)(n.p,{children:"It's recommended not to set the value below 250 GB for stability reasons. In reality, full pruning should require approximately the same amount of storage as a fresh state database (around 160 GB). Still, it also needs a threshold for processing and other operations since it creates a copy of the existing state database. Therefore, it's essential to maintain a minimum amount of storage to ensure a robust pruning performance."})}),"\n",(0,r.jsx)(n.h2,{id:"monitoring-progress",children:"Monitoring progress"}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is triggered correctly, the corresponding messages appear in the Nethermind logs."}),"\n",(0,r.jsx)(n.p,{children:"The very first ones should be:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Ready to start: pruning garbage before state with root .\nWARN: Full Pruning Started on root hash : do not close the node until finished or progress will be lost.\n"})}),"\n",(0,r.jsx)(n.p,{children:"From that moment, ensure that no restarts will be performed on Nethermind to ensure that full pruning runs correctly.\nAfter a few minutes first logs with progress would start to appear. For instance:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning In Progress: 00:00:57.0603307 1.00 mln nodes mirrored.\nFull Pruning In Progress: 00:01:40.3677103 2.00 mln nodes mirrored.\nFull Pruning In Progress: 00:02:25.6437030 3.00 mln nodes mirrored.\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Pruning may take even ",(0,r.jsx)(n.em,{children:"more than 30 hours"}),", depending on hardware configuration."]}),"\n",(0,r.jsx)(n.p,{children:"When pruning is completed, there is a log message similar the following:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Finished: 15:25:59.1620756 1,560.29 mln nodes mirrored.\n"})}),"\n",(0,r.jsx)(n.p,{children:"As you may notice, it took around 15 hours in this example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Since the amount of mirrored nodes is not a static value, providing a simple progress indicator in percentage is impossible. Therefore, the approximate value given should be used to determine when full pruning is expected to be completed."})}),"\n",(0,r.jsx)(n.h2,{id:"additional-settings",children:"Additional settings"}),"\n",(0,r.jsx)(n.h3,{id:"memory-budget",children:"Memory budget"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," configuration option controls the memory budget allocated for the trie visit during\nthe full pruning process. During pruning, pending nodes are queued to a pool of nodes whose size is determined by this value. This allows multiple nodes to share a single I/O. By increasing this value, the required read IOP per second can be significantly reduced, resulting in a faster full pruning operation. However, this improvement comes at the expense of increased memory usage."]}),"\n",(0,r.jsxs)(n.p,{children:["Assuming your system has 64GB of RAM, with Nethermind, the consensus client, and system expenses consuming 20GB,\nyou need to determine the maximum value for ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," while ensuring the system remains stable and respects the given limit. In this case, you have 44 GB (64 GB - 20 GB) of available memory for increasing the ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," value. To calculate the maximum value in MB, multiply the available memory by 1024: ",(0,r.jsx)(n.code,{children:"44 GB * 1024 = 45,056 MB"})]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Because of the workload on Ethereum Mainnet, setting the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," higher than 16 GB may not provide any additional performance benefits."]})}),"\n",(0,r.jsx)(n.p,{children:"Please note that this example assumes the remaining 44 GB of memory is sufficient for the full pruning memory budget.\nDepending on the specific use case and system requirements, it may be necessary to adjust the value further to optimize performance and resource usage."}),"\n",(0,r.jsx)(n.h3,{id:"pruning-completion-behavior",children:"Pruning completion behavior"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})," configuration option determines Nethermind's behavior after full pruning is completed. By default, Nethermind will continue to progress as usual. However, if a user wishes to shut down the node after pruning, there are three options available:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"None"}),": No action taken"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Nethermind shuts down if pruning succeeds"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"AlwaysShutdown"}),": Nethermind shuts down once pruning completes, regardless of whether it succeeds or fails"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"number-of-pruning-concurrent-tasks",children:"Number of pruning concurrent tasks"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})," configuration option determines the number of parallel tasks/threads that can be used by pruning:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"-1"}),": uses the number of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"0"}),": uses 25% of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"1"}),": runs on a single thread"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The recommended value depends on the type of node being used. If the node needs to be responsive (e.g., RPC or validator), using a value below the number of logical processors is recommended. The default value is recommended if the node doesn't have many other responsibilities but needs to follow the chain without delays and produce live logs reliably. If the node doesn't need to be responsive, has very fast I/O (such as NVMe), and the shortest pruning time\nis desired, this can be set to 2\u20133 times the number of logical processors."}),"\n",(0,r.jsx)(n.h3,{id:"in-memory-cache-size",children:"In-memory cache size"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.CacheMb"})," configuration option determines the size, in MB, of the memory pool of nodes used for in-memory pruning. The default value is 1024. Increasing this value can help reduce the rate at which the state database grows."]}),"\n",(0,r.jsx)(n.h2,{id:"side-notes",children:"Side notes"}),"\n",(0,r.jsx)(n.p,{children:"For pruning, keep in mind the following:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Full pruning is a cumbersome task, but it's performed in the background, so the node continues progressing and following the chain."}),"\n",(0,r.jsx)(n.li,{children:"The process' heaviness may affect the effectiveness of the validator rewards. Still, since it's executed only once every few months, it shouldn't have a significant impact on overall results (we've xperienced approximately 5\u201310% loss of rewards during full pruning)."}),"\n",(0,r.jsx)(n.li,{children:"Ensure that your storage has at least 250 GB of free space after syncing the node. Otherwise, full pruning will never complete successfully."}),"\n",(0,r.jsxs)(n.li,{children:["Several things can be done to reduce the size of the database after syncing: setting ",(0,r.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})," and ",(0,r.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})," to a proper value higher than 0, using a consensus client that requires less storage, and setting logs to the lowest level to avoid log spamming."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>a});var r=i(6540);const t={},s=r.createContext(t);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/addc6152.95e8012d.js b/assets/js/addc6152.06316df7.js similarity index 99% rename from assets/js/addc6152.95e8012d.js rename to assets/js/addc6152.06316df7.js index 28539a622..c44d3aaf1 100644 --- a/assets/js/addc6152.95e8012d.js +++ b/assets/js/addc6152.06316df7.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7677],{7406:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>j,frontMatter:()=>c,metadata:()=>o,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),t=s(9365);const c={title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},d=void 0,o={id:"interacting/json-rpc-ns/txpool",title:"txpool namespace",description:"txpool_content",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/txpool.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/txpool",permalink:"/1.28.0/interacting/json-rpc-ns/txpool",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/txpool.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:9,frontMatter:{title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"trace",permalink:"/1.28.0/interacting/json-rpc-ns/trace"},next:{title:"web3",permalink:"/1.28.0/interacting/json-rpc-ns/web3"}},a={},h=[{value:"txpool_content",id:"txpool_content",level:3},{value:"txpool_inspect",id:"txpool_inspect",level:3},{value:"txpool_status",id:"txpool_status",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"txpool_content",children:"txpool_content"}),"\n",(0,r.jsx)(n.p,{children:"Returns tx pool content."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_content",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_inspect",children:"txpool_inspect"}),"\n",(0,r.jsx)(n.p,{children:"Returns a detailed info on tx pool transactions."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_inspect",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_status",children:"txpool_status"}),"\n",(0,r.jsx)(n.p,{children:"Returns a tx pool status."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_status",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),t=s(6347),c=s(205),d=s(7485),o=s(1682),a=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[o,h]=u({queryString:s,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,a.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),g=(()=>{const e=o??m;return j({value:e,tabValues:l})?e:null})();(0,c.A)((()=>{g&&d(g)}),[g]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:c}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,l.a_)(),a=e=>{const n=e.currentTarget,s=d.indexOf(n),i=c[s].value;i!==r&&(o(n),t(i))},h=e=>{let n=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:c.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:a,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,p.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>c});var r=s(6540);const i={},l=r.createContext(i);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7677],{7406:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>j,frontMatter:()=>c,metadata:()=>o,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),t=s(9365);const c={title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},d=void 0,o={id:"interacting/json-rpc-ns/txpool",title:"txpool namespace",description:"txpool_content",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/txpool.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/txpool",permalink:"/1.28.0/interacting/json-rpc-ns/txpool",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/txpool.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:9,frontMatter:{title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"trace",permalink:"/1.28.0/interacting/json-rpc-ns/trace"},next:{title:"web3",permalink:"/1.28.0/interacting/json-rpc-ns/web3"}},a={},h=[{value:"txpool_content",id:"txpool_content",level:3},{value:"txpool_inspect",id:"txpool_inspect",level:3},{value:"txpool_status",id:"txpool_status",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"txpool_content",children:"txpool_content"}),"\n",(0,r.jsx)(n.p,{children:"Returns tx pool content."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_content",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_inspect",children:"txpool_inspect"}),"\n",(0,r.jsx)(n.p,{children:"Returns a detailed info on tx pool transactions."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_inspect",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_status",children:"txpool_status"}),"\n",(0,r.jsx)(n.p,{children:"Returns a tx pool status."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_status",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),t=s(6347),c=s(205),d=s(7485),o=s(1682),a=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[o,h]=u({queryString:s,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,a.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),g=(()=>{const e=o??m;return j({value:e,tabValues:l})?e:null})();(0,c.A)((()=>{g&&d(g)}),[g]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:c}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,l.a_)(),a=e=>{const n=e.currentTarget,s=d.indexOf(n),i=c[s].value;i!==r&&(o(n),t(i))},h=e=>{let n=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:c.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:a,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,p.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>c});var r=s(6540);const i={},l=r.createContext(i);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ae7cdfb0.fd4f5854.js b/assets/js/ae7cdfb0.736ba06e.js similarity index 99% rename from assets/js/ae7cdfb0.fd4f5854.js rename to assets/js/ae7cdfb0.736ba06e.js index ece7cce84..24caf5bdf 100644 --- a/assets/js/ae7cdfb0.fd4f5854.js +++ b/assets/js/ae7cdfb0.736ba06e.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9759],{7670:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var o=t(4848),i=t(8453);const r={title:"Custom analytic tools",sidebar_position:2},a=void 0,s={id:"developers/custom-analytic-tools",title:"Custom analytic tools",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.27.0/developers/custom-analytic-tools.md",sourceDirName:"developers",slug:"/developers/custom-analytic-tools",permalink:"/1.27.0/developers/custom-analytic-tools",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/developers/custom-analytic-tools.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Custom analytic tools",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Plugins",permalink:"/1.27.0/developers/plugins"},next:{title:"FAQ",permalink:"/1.27.0/faq"}},l={},c=[];function d(e){const n={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,o.jsx)(n.p,{children:"Check plugins for some easy addition of analytical tools"}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/1.27.0/developers/plugins",children:"Learn more about Plugins"})})}),"\n",(0,o.jsx)(n.p,{children:"You can also read more about some useful interfaces below:"}),"\n",(0,o.jsxs)(n.p,{children:["There are multiple extension points where you can add custom analytics to your Nethermind node if you know some C#.\nBelow you will find an example of using two very useful interfaces - ",(0,o.jsx)(n.code,{children:"IBlockVisitor"})," and ",(0,o.jsx)(n.code,{children:"ITreeVisitor"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Just to execute the code I have added one new initialization step that invokes two custom verifiers that I have used for\ncalculating total supply in two different ways - by calculating mining rewards and by summing up all account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' [RunnerStepDependencies(typeof(ReviewBlockTree))]\n public class RunCustomTools : IStep\n {\n private readonly EthereumRunnerContext _context;\n\n public RunCustomTools(EthereumRunnerContext context)\n {\n _context = context;\n }\n\n public Task Execute(CancellationToken cancellationToken)\n {\n ILogger logger = _context.LogManager.GetClassLogger();\n IInitConfig initConfig = _context.Config();\n\n switch (initConfig.DiagnosticMode)\n {\n case DiagnosticMode.VerifySupply:\n {\n logger.Info("Genesis supply:");\n SupplyVerifier supplyVerifier = new SupplyVerifier(logger);\n StateDb stateDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateDb codeDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateReader stateReader = new StateReader(stateDb, codeDb, _context.LogManager);\n stateReader.RunTreeVisitor(supplyVerifier, _context.BlockTree!.Genesis.StateRoot);\n\n Block head = _context.BlockTree!.Head;\n logger.Info($"Head ({head.Number}) block supply:");\n supplyVerifier = new SupplyVerifier(logger);\n stateReader.RunTreeVisitor(supplyVerifier, head.StateRoot);\n break;\n }\n case DiagnosticMode.VerifyRewards:\n _context.BlockTree!.Accept(new RewardsVerifier(_context.LogManager), cancellationToken);\n break;\n }\n\n return Task.CompletedTask;\n }\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"Below you will see an example of using ITreeVisitor that allows to check all the blocks, including some of the discarded\nbranches if you wish so:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive => 10618000;\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n private UInt256 _blockRewards;\n\n public RewardsVerifier(ILogManager logManager)\n {\n _logger = logManager.GetClassLogger();\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n _blockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"And here you will find an example of a tree visitor that sums up all the account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class SupplyVerifier : ITreeVisitor\n {\n private readonly ILogger _logger;\n private UInt256 _balance = UInt256.Zero;\n private int _accountsVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public bool ShouldVisit(Keccak nextNode) { return true; }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n _balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }\n }\n'})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var o=t(6540);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9759],{7670:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var o=t(4848),i=t(8453);const r={title:"Custom analytic tools",sidebar_position:2},a=void 0,s={id:"developers/custom-analytic-tools",title:"Custom analytic tools",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.27.0/developers/custom-analytic-tools.md",sourceDirName:"developers",slug:"/developers/custom-analytic-tools",permalink:"/1.27.0/developers/custom-analytic-tools",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/developers/custom-analytic-tools.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Custom analytic tools",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Plugins",permalink:"/1.27.0/developers/plugins"},next:{title:"FAQ",permalink:"/1.27.0/faq"}},l={},c=[];function d(e){const n={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,o.jsx)(n.p,{children:"Check plugins for some easy addition of analytical tools"}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/1.27.0/developers/plugins",children:"Learn more about Plugins"})})}),"\n",(0,o.jsx)(n.p,{children:"You can also read more about some useful interfaces below:"}),"\n",(0,o.jsxs)(n.p,{children:["There are multiple extension points where you can add custom analytics to your Nethermind node if you know some C#.\nBelow you will find an example of using two very useful interfaces - ",(0,o.jsx)(n.code,{children:"IBlockVisitor"})," and ",(0,o.jsx)(n.code,{children:"ITreeVisitor"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Just to execute the code I have added one new initialization step that invokes two custom verifiers that I have used for\ncalculating total supply in two different ways - by calculating mining rewards and by summing up all account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' [RunnerStepDependencies(typeof(ReviewBlockTree))]\n public class RunCustomTools : IStep\n {\n private readonly EthereumRunnerContext _context;\n\n public RunCustomTools(EthereumRunnerContext context)\n {\n _context = context;\n }\n\n public Task Execute(CancellationToken cancellationToken)\n {\n ILogger logger = _context.LogManager.GetClassLogger();\n IInitConfig initConfig = _context.Config();\n\n switch (initConfig.DiagnosticMode)\n {\n case DiagnosticMode.VerifySupply:\n {\n logger.Info("Genesis supply:");\n SupplyVerifier supplyVerifier = new SupplyVerifier(logger);\n StateDb stateDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateDb codeDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateReader stateReader = new StateReader(stateDb, codeDb, _context.LogManager);\n stateReader.RunTreeVisitor(supplyVerifier, _context.BlockTree!.Genesis.StateRoot);\n\n Block head = _context.BlockTree!.Head;\n logger.Info($"Head ({head.Number}) block supply:");\n supplyVerifier = new SupplyVerifier(logger);\n stateReader.RunTreeVisitor(supplyVerifier, head.StateRoot);\n break;\n }\n case DiagnosticMode.VerifyRewards:\n _context.BlockTree!.Accept(new RewardsVerifier(_context.LogManager), cancellationToken);\n break;\n }\n\n return Task.CompletedTask;\n }\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"Below you will see an example of using ITreeVisitor that allows to check all the blocks, including some of the discarded\nbranches if you wish so:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive => 10618000;\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n private UInt256 _blockRewards;\n\n public RewardsVerifier(ILogManager logManager)\n {\n _logger = logManager.GetClassLogger();\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n _blockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"And here you will find an example of a tree visitor that sums up all the account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class SupplyVerifier : ITreeVisitor\n {\n private readonly ILogger _logger;\n private UInt256 _balance = UInt256.Zero;\n private int _accountsVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public bool ShouldVisit(Keccak nextNode) { return true; }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n _balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }\n }\n'})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var o=t(6540);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/af3959cf.8f2587dc.js b/assets/js/af3959cf.a2f92390.js similarity index 99% rename from assets/js/af3959cf.8f2587dc.js rename to assets/js/af3959cf.a2f92390.js index 6efc67e28..8f9bb262c 100644 --- a/assets/js/af3959cf.8f2587dc.js +++ b/assets/js/af3959cf.a2f92390.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1603],{2188:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>j,frontMatter:()=>c,metadata:()=>o,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),t=s(9365);const c={title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},d=void 0,o={id:"interacting/json-rpc-ns/txpool",title:"txpool namespace",description:"txpool_content",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/txpool.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/txpool",permalink:"/1.26.0/interacting/json-rpc-ns/txpool",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/txpool.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:9,frontMatter:{title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"trace",permalink:"/1.26.0/interacting/json-rpc-ns/trace"},next:{title:"web3",permalink:"/1.26.0/interacting/json-rpc-ns/web3"}},a={},h=[{value:"txpool_content",id:"txpool_content",level:3},{value:"txpool_inspect",id:"txpool_inspect",level:3},{value:"txpool_status",id:"txpool_status",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"txpool_content",children:"txpool_content"}),"\n",(0,r.jsx)(n.p,{children:"Returns tx pool content."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_content",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_inspect",children:"txpool_inspect"}),"\n",(0,r.jsx)(n.p,{children:"Returns a detailed info on tx pool transactions."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_inspect",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_status",children:"txpool_status"}),"\n",(0,r.jsx)(n.p,{children:"Returns a tx pool status."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_status",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),t=s(6347),c=s(205),d=s(7485),o=s(1682),a=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[o,h]=u({queryString:s,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,a.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),g=(()=>{const e=o??m;return j({value:e,tabValues:l})?e:null})();(0,c.A)((()=>{g&&d(g)}),[g]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:c}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,l.a_)(),a=e=>{const n=e.currentTarget,s=d.indexOf(n),i=c[s].value;i!==r&&(o(n),t(i))},h=e=>{let n=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:c.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:a,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,p.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>c});var r=s(6540);const i={},l=r.createContext(i);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1603],{2188:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>j,frontMatter:()=>c,metadata:()=>o,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),t=s(9365);const c={title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},d=void 0,o={id:"interacting/json-rpc-ns/txpool",title:"txpool namespace",description:"txpool_content",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/txpool.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/txpool",permalink:"/1.26.0/interacting/json-rpc-ns/txpool",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/txpool.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:9,frontMatter:{title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"trace",permalink:"/1.26.0/interacting/json-rpc-ns/trace"},next:{title:"web3",permalink:"/1.26.0/interacting/json-rpc-ns/web3"}},a={},h=[{value:"txpool_content",id:"txpool_content",level:3},{value:"txpool_inspect",id:"txpool_inspect",level:3},{value:"txpool_status",id:"txpool_status",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"txpool_content",children:"txpool_content"}),"\n",(0,r.jsx)(n.p,{children:"Returns tx pool content."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_content",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_inspect",children:"txpool_inspect"}),"\n",(0,r.jsx)(n.p,{children:"Returns a detailed info on tx pool transactions."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_inspect",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_status",children:"txpool_status"}),"\n",(0,r.jsx)(n.p,{children:"Returns a tx pool status."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_status",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),t=s(6347),c=s(205),d=s(7485),o=s(1682),a=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[o,h]=u({queryString:s,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,a.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),g=(()=>{const e=o??m;return j({value:e,tabValues:l})?e:null})();(0,c.A)((()=>{g&&d(g)}),[g]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:c}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,l.a_)(),a=e=>{const n=e.currentTarget,s=d.indexOf(n),i=c[s].value;i!==r&&(o(n),t(i))},h=e=>{let n=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:c.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:a,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,p.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>c});var r=s(6540);const i={},l=r.createContext(i);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/afb78532.6bd813ae.js b/assets/js/afb78532.6fa8b047.js similarity index 99% rename from assets/js/afb78532.6bd813ae.js rename to assets/js/afb78532.6fa8b047.js index d5c546dae..35f412ccf 100644 --- a/assets/js/afb78532.6bd813ae.js +++ b/assets/js/afb78532.6fa8b047.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1689],{4837:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var o=t(4848),i=t(8453);const r={title:"Custom analytic tools",sidebar_position:2},a=void 0,s={id:"developers/custom-analytic-tools",title:"Custom analytic tools",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.28.0/developers/custom-analytic-tools.md",sourceDirName:"developers",slug:"/developers/custom-analytic-tools",permalink:"/1.28.0/developers/custom-analytic-tools",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/developers/custom-analytic-tools.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Custom analytic tools",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Plugins",permalink:"/1.28.0/developers/plugins"},next:{title:"Troubleshooting",permalink:"/1.28.0/troubleshooting"}},l={},c=[];function d(e){const n={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,o.jsx)(n.p,{children:"Check plugins for some easy addition of analytical tools"}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/1.28.0/developers/plugins",children:"Learn more about Plugins"})})}),"\n",(0,o.jsx)(n.p,{children:"You can also read more about some useful interfaces below:"}),"\n",(0,o.jsxs)(n.p,{children:["There are multiple extension points where you can add custom analytics to your Nethermind node if you know some C#.\nBelow you will find an example of using two very useful interfaces - ",(0,o.jsx)(n.code,{children:"IBlockVisitor"})," and ",(0,o.jsx)(n.code,{children:"ITreeVisitor"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Just to execute the code I have added one new initialization step that invokes two custom verifiers that I have used for\ncalculating total supply in two different ways - by calculating mining rewards and by summing up all account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' [RunnerStepDependencies(typeof(ReviewBlockTree))]\n public class RunCustomTools : IStep\n {\n private readonly EthereumRunnerContext _context;\n\n public RunCustomTools(EthereumRunnerContext context)\n {\n _context = context;\n }\n\n public Task Execute(CancellationToken cancellationToken)\n {\n ILogger logger = _context.LogManager.GetClassLogger();\n IInitConfig initConfig = _context.Config();\n\n switch (initConfig.DiagnosticMode)\n {\n case DiagnosticMode.VerifySupply:\n {\n logger.Info("Genesis supply:");\n SupplyVerifier supplyVerifier = new SupplyVerifier(logger);\n StateDb stateDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateDb codeDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateReader stateReader = new StateReader(stateDb, codeDb, _context.LogManager);\n stateReader.RunTreeVisitor(supplyVerifier, _context.BlockTree!.Genesis.StateRoot);\n\n Block head = _context.BlockTree!.Head;\n logger.Info($"Head ({head.Number}) block supply:");\n supplyVerifier = new SupplyVerifier(logger);\n stateReader.RunTreeVisitor(supplyVerifier, head.StateRoot);\n break;\n }\n case DiagnosticMode.VerifyRewards:\n _context.BlockTree!.Accept(new RewardsVerifier(_context.LogManager), cancellationToken);\n break;\n }\n\n return Task.CompletedTask;\n }\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"Below you will see an example of using ITreeVisitor that allows to check all the blocks, including some of the discarded\nbranches if you wish so:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive => 10618000;\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n private UInt256 _blockRewards;\n\n public RewardsVerifier(ILogManager logManager)\n {\n _logger = logManager.GetClassLogger();\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n _blockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"And here you will find an example of a tree visitor that sums up all the account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class SupplyVerifier : ITreeVisitor\n {\n private readonly ILogger _logger;\n private UInt256 _balance = UInt256.Zero;\n private int _accountsVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public bool ShouldVisit(Keccak nextNode) { return true; }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n _balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }\n }\n'})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var o=t(6540);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1689],{4837:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var o=t(4848),i=t(8453);const r={title:"Custom analytic tools",sidebar_position:2},a=void 0,s={id:"developers/custom-analytic-tools",title:"Custom analytic tools",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.28.0/developers/custom-analytic-tools.md",sourceDirName:"developers",slug:"/developers/custom-analytic-tools",permalink:"/1.28.0/developers/custom-analytic-tools",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/developers/custom-analytic-tools.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Custom analytic tools",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Plugins",permalink:"/1.28.0/developers/plugins"},next:{title:"Troubleshooting",permalink:"/1.28.0/troubleshooting"}},l={},c=[];function d(e){const n={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,o.jsx)(n.p,{children:"Check plugins for some easy addition of analytical tools"}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/1.28.0/developers/plugins",children:"Learn more about Plugins"})})}),"\n",(0,o.jsx)(n.p,{children:"You can also read more about some useful interfaces below:"}),"\n",(0,o.jsxs)(n.p,{children:["There are multiple extension points where you can add custom analytics to your Nethermind node if you know some C#.\nBelow you will find an example of using two very useful interfaces - ",(0,o.jsx)(n.code,{children:"IBlockVisitor"})," and ",(0,o.jsx)(n.code,{children:"ITreeVisitor"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Just to execute the code I have added one new initialization step that invokes two custom verifiers that I have used for\ncalculating total supply in two different ways - by calculating mining rewards and by summing up all account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' [RunnerStepDependencies(typeof(ReviewBlockTree))]\n public class RunCustomTools : IStep\n {\n private readonly EthereumRunnerContext _context;\n\n public RunCustomTools(EthereumRunnerContext context)\n {\n _context = context;\n }\n\n public Task Execute(CancellationToken cancellationToken)\n {\n ILogger logger = _context.LogManager.GetClassLogger();\n IInitConfig initConfig = _context.Config();\n\n switch (initConfig.DiagnosticMode)\n {\n case DiagnosticMode.VerifySupply:\n {\n logger.Info("Genesis supply:");\n SupplyVerifier supplyVerifier = new SupplyVerifier(logger);\n StateDb stateDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateDb codeDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateReader stateReader = new StateReader(stateDb, codeDb, _context.LogManager);\n stateReader.RunTreeVisitor(supplyVerifier, _context.BlockTree!.Genesis.StateRoot);\n\n Block head = _context.BlockTree!.Head;\n logger.Info($"Head ({head.Number}) block supply:");\n supplyVerifier = new SupplyVerifier(logger);\n stateReader.RunTreeVisitor(supplyVerifier, head.StateRoot);\n break;\n }\n case DiagnosticMode.VerifyRewards:\n _context.BlockTree!.Accept(new RewardsVerifier(_context.LogManager), cancellationToken);\n break;\n }\n\n return Task.CompletedTask;\n }\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"Below you will see an example of using ITreeVisitor that allows to check all the blocks, including some of the discarded\nbranches if you wish so:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive => 10618000;\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n private UInt256 _blockRewards;\n\n public RewardsVerifier(ILogManager logManager)\n {\n _logger = logManager.GetClassLogger();\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n _blockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"And here you will find an example of a tree visitor that sums up all the account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class SupplyVerifier : ITreeVisitor\n {\n private readonly ILogger _logger;\n private UInt256 _balance = UInt256.Zero;\n private int _accountsVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public bool ShouldVisit(Keccak nextNode) { return true; }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n _balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }\n }\n'})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var o=t(6540);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b1ae986a.b6e80982.js b/assets/js/b1ae986a.c3320771.js similarity index 99% rename from assets/js/b1ae986a.b6e80982.js rename to assets/js/b1ae986a.c3320771.js index d352cf5f9..bf354e4ae 100644 --- a/assets/js/b1ae986a.b6e80982.js +++ b/assets/js/b1ae986a.c3320771.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7594],{8743:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>i,metadata:()=>o,toc:()=>h});var r=t(4848),s=t(8453);const i={title:"Grafana and Prometheus",sidebar_position:0},a=void 0,o={id:"monitoring/metrics/grafana-and-prometheus",title:"Grafana and Prometheus",description:"This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.",source:"@site/docs/monitoring/metrics/grafana-and-prometheus.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/grafana-and-prometheus",permalink:"/next/monitoring/metrics/grafana-and-prometheus",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/monitoring/metrics/grafana-and-prometheus.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Grafana and Prometheus",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Metrics",permalink:"/next/monitoring/metrics/"},next:{title:"dotnet-counters",permalink:"/next/monitoring/metrics/dotnet-counters"}},c={},h=[{value:"Step 1: Set up Grafana and Prometheus",id:"step-1-set-up-grafana-and-prometheus",level:2},{value:"Step 2: Run the stack",id:"step-2-run-the-stack",level:2},{value:"Step 3: Run Nethermind",id:"step-3-run-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["This guide will walk you through setting up a local metrics infrastructure using ",(0,r.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,r.jsx)(n.a,{href:"https://prometheus.io",children:"Prometheus"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"step-1-set-up-grafana-and-prometheus",children:"Step 1: Set up Grafana and Prometheus"}),"\n",(0,r.jsxs)(n.p,{children:["To simplify the process, we will use the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/metrics-infrastructure",children:"metrics-infrastructure"})," repository, which contains the necessary configuration files to run Grafana and Prometheus in a Docker container. However, you can also set up Grafana and Prometheus manually the way it fits your specific needs."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/NethermindEth/metrics-infrastructure.git\n"})}),"\n",(0,r.jsx)(n.h2,{id:"step-2-run-the-stack",children:"Step 2: Run the stack"}),"\n",(0,r.jsx)(n.p,{children:"After cloning the repository, navigate to its root directory and run the containers using Docker Compose as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,r.jsx)(n.p,{children:"Once the stack is running, you can access the following services:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Grafana"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:3000",children:"localhost:3000"}),(0,r.jsx)(n.br,{}),"\n","Use ",(0,r.jsx)(n.code,{children:"admin"})," for both the username and password. When asked for a password change, you may skip it. Then, navigate to Dashboards > Nethermind Dashboard."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Prometheus"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9090",children:"localhost:9090"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Pushgateway"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9091",children:"localhost:9091"}),(0,r.jsx)(n.br,{}),"\n","To specify another endpoint for the Pushgateway, use the ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#metrics-pushgatewayurl",children:(0,r.jsx)(n.code,{children:"Metrics.PushGatewayUrl"})})," configuration option."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"step-3-run-nethermind",children:"Step 3: Run Nethermind"}),"\n",(0,r.jsxs)(n.p,{children:["To enable metrics in Nethermind, set the ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#metrics-enabled",children:(0,r.jsx)(n.code,{children:"Metrics.Enabled"})})," configuration option to ",(0,r.jsx)(n.code,{children:"true"}),". For more options, see the ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsxs)(n.p,{children:["See ",(0,r.jsx)(n.a,{href:"/next/get-started/running-node/",children:"Running a node"})," for more information on how to run Nethermind."]})}),"\n",(0,r.jsx)(n.p,{children:"Run Nethermind as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --Metrics.Enabled true \\\n --Metrics.PushGatewayUrl http://localhost:9091\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Alternatively, you may add the ",(0,r.jsx)(n.code,{children:"nethermind"})," service to the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," file in the repository root to run everything altogether:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n links:\n - pushgateway\n depends_on:\n - pushgateway\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n command: -c mainnet --Metrics.Enabled true --Metrics.PushGatewayUrl http://pushgateway:9091\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n networks:\n - metrics\n"})}),"\n",(0,r.jsx)(n.p,{children:"In this case, you may want to configure your consensus client similarly."})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var r=t(6540);const s={},i=r.createContext(s);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7594],{8743:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>i,metadata:()=>o,toc:()=>h});var r=t(4848),s=t(8453);const i={title:"Grafana and Prometheus",sidebar_position:0},a=void 0,o={id:"monitoring/metrics/grafana-and-prometheus",title:"Grafana and Prometheus",description:"This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.",source:"@site/docs/monitoring/metrics/grafana-and-prometheus.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/grafana-and-prometheus",permalink:"/next/monitoring/metrics/grafana-and-prometheus",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/monitoring/metrics/grafana-and-prometheus.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Grafana and Prometheus",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Metrics",permalink:"/next/monitoring/metrics/"},next:{title:"dotnet-counters",permalink:"/next/monitoring/metrics/dotnet-counters"}},c={},h=[{value:"Step 1: Set up Grafana and Prometheus",id:"step-1-set-up-grafana-and-prometheus",level:2},{value:"Step 2: Run the stack",id:"step-2-run-the-stack",level:2},{value:"Step 3: Run Nethermind",id:"step-3-run-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["This guide will walk you through setting up a local metrics infrastructure using ",(0,r.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,r.jsx)(n.a,{href:"https://prometheus.io",children:"Prometheus"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"step-1-set-up-grafana-and-prometheus",children:"Step 1: Set up Grafana and Prometheus"}),"\n",(0,r.jsxs)(n.p,{children:["To simplify the process, we will use the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/metrics-infrastructure",children:"metrics-infrastructure"})," repository, which contains the necessary configuration files to run Grafana and Prometheus in a Docker container. However, you can also set up Grafana and Prometheus manually the way it fits your specific needs."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/NethermindEth/metrics-infrastructure.git\n"})}),"\n",(0,r.jsx)(n.h2,{id:"step-2-run-the-stack",children:"Step 2: Run the stack"}),"\n",(0,r.jsx)(n.p,{children:"After cloning the repository, navigate to its root directory and run the containers using Docker Compose as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,r.jsx)(n.p,{children:"Once the stack is running, you can access the following services:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Grafana"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:3000",children:"localhost:3000"}),(0,r.jsx)(n.br,{}),"\n","Use ",(0,r.jsx)(n.code,{children:"admin"})," for both the username and password. When asked for a password change, you may skip it. Then, navigate to Dashboards > Nethermind Dashboard."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Prometheus"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9090",children:"localhost:9090"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Pushgateway"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9091",children:"localhost:9091"}),(0,r.jsx)(n.br,{}),"\n","To specify another endpoint for the Pushgateway, use the ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#metrics-pushgatewayurl",children:(0,r.jsx)(n.code,{children:"Metrics.PushGatewayUrl"})})," configuration option."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"step-3-run-nethermind",children:"Step 3: Run Nethermind"}),"\n",(0,r.jsxs)(n.p,{children:["To enable metrics in Nethermind, set the ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#metrics-enabled",children:(0,r.jsx)(n.code,{children:"Metrics.Enabled"})})," configuration option to ",(0,r.jsx)(n.code,{children:"true"}),". For more options, see the ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsxs)(n.p,{children:["See ",(0,r.jsx)(n.a,{href:"/next/get-started/running-node/",children:"Running a node"})," for more information on how to run Nethermind."]})}),"\n",(0,r.jsx)(n.p,{children:"Run Nethermind as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --Metrics.Enabled true \\\n --Metrics.PushGatewayUrl http://localhost:9091\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Alternatively, you may add the ",(0,r.jsx)(n.code,{children:"nethermind"})," service to the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," file in the repository root to run everything altogether:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n links:\n - pushgateway\n depends_on:\n - pushgateway\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n command: -c mainnet --Metrics.Enabled true --Metrics.PushGatewayUrl http://pushgateway:9091\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n networks:\n - metrics\n"})}),"\n",(0,r.jsx)(n.p,{children:"In this case, you may want to configure your consensus client similarly."})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var r=t(6540);const s={},i=r.createContext(s);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b204c0ea.d8c32951.js b/assets/js/b204c0ea.81983682.js similarity index 98% rename from assets/js/b204c0ea.d8c32951.js rename to assets/js/b204c0ea.81983682.js index dd8c0a3d4..8b381f9e5 100644 --- a/assets/js/b204c0ea.d8c32951.js +++ b/assets/js/b204c0ea.81983682.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5732],{6624:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var o=t(4848),i=t(8453);const r={title:"Custom analytic tools",sidebar_position:2},a=void 0,s={id:"developers/custom-analytic-tools",title:"Custom analytic tools",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.29.0/developers/custom-analytic-tools.md",sourceDirName:"developers",slug:"/developers/custom-analytic-tools",permalink:"/developers/custom-analytic-tools",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/developers/custom-analytic-tools.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Custom analytic tools",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Plugins",permalink:"/developers/plugins"},next:{title:"Troubleshooting",permalink:"/troubleshooting"}},l={},c=[];function d(e){const n={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,o.jsx)(n.p,{children:"Check plugins for some easy addition of analytical tools"}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/developers/plugins",children:"Learn more about Plugins"})})}),"\n",(0,o.jsx)(n.p,{children:"You can also read more about some useful interfaces below:"}),"\n",(0,o.jsxs)(n.p,{children:["There are multiple extension points where you can add custom analytics to your Nethermind node if you know some C#.\nBelow you will find an example of using two very useful interfaces - ",(0,o.jsx)(n.code,{children:"IBlockVisitor"})," and ",(0,o.jsx)(n.code,{children:"ITreeVisitor"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Just to execute the code I have added one new initialization step that invokes two custom verifiers that I have used for\ncalculating total supply in two different ways - by calculating mining rewards and by summing up all account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' [RunnerStepDependencies(typeof(ReviewBlockTree))]\n public class RunCustomTools : IStep\n {\n private readonly EthereumRunnerContext _context;\n\n public RunCustomTools(EthereumRunnerContext context)\n {\n _context = context;\n }\n\n public Task Execute(CancellationToken cancellationToken)\n {\n ILogger logger = _context.LogManager.GetClassLogger();\n IInitConfig initConfig = _context.Config();\n\n switch (initConfig.DiagnosticMode)\n {\n case DiagnosticMode.VerifySupply:\n {\n logger.Info("Genesis supply:");\n SupplyVerifier supplyVerifier = new SupplyVerifier(logger);\n StateDb stateDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateDb codeDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateReader stateReader = new StateReader(stateDb, codeDb, _context.LogManager);\n stateReader.RunTreeVisitor(supplyVerifier, _context.BlockTree!.Genesis.StateRoot);\n\n Block head = _context.BlockTree!.Head;\n logger.Info($"Head ({head.Number}) block supply:");\n supplyVerifier = new SupplyVerifier(logger);\n stateReader.RunTreeVisitor(supplyVerifier, head.StateRoot);\n break;\n }\n case DiagnosticMode.VerifyRewards:\n _context.BlockTree!.Accept(new RewardsVerifier(_context.LogManager), cancellationToken);\n break;\n }\n\n return Task.CompletedTask;\n }\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"Below you will see an example of using ITreeVisitor that allows to check all the blocks, including some of the discarded\nbranches if you wish so:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive => 10618000;\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n private UInt256 _blockRewards;\n\n public RewardsVerifier(ILogManager logManager)\n {\n _logger = logManager.GetClassLogger();\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n _blockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"And here you will find an example of a tree visitor that sums up all the account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class SupplyVerifier : ITreeVisitor\n {\n private readonly ILogger _logger;\n private UInt256 _balance = UInt256.Zero;\n private int _accountsVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public bool ShouldVisit(Keccak nextNode) { return true; }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n _balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }\n }\n'})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var o=t(6540);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5732],{6624:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var o=t(4848),i=t(8453);const r={title:"Custom analytic tools",sidebar_position:2},a=void 0,s={id:"developers/custom-analytic-tools",title:"Custom analytic tools",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.29.0/developers/custom-analytic-tools.md",sourceDirName:"developers",slug:"/developers/custom-analytic-tools",permalink:"/developers/custom-analytic-tools",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/developers/custom-analytic-tools.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Custom analytic tools",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Plugins",permalink:"/developers/plugins"},next:{title:"Troubleshooting",permalink:"/troubleshooting"}},l={},c=[];function d(e){const n={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,o.jsx)(n.p,{children:"Check plugins for some easy addition of analytical tools"}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/developers/plugins",children:"Learn more about Plugins"})})}),"\n",(0,o.jsx)(n.p,{children:"You can also read more about some useful interfaces below:"}),"\n",(0,o.jsxs)(n.p,{children:["There are multiple extension points where you can add custom analytics to your Nethermind node if you know some C#.\nBelow you will find an example of using two very useful interfaces - ",(0,o.jsx)(n.code,{children:"IBlockVisitor"})," and ",(0,o.jsx)(n.code,{children:"ITreeVisitor"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Just to execute the code I have added one new initialization step that invokes two custom verifiers that I have used for\ncalculating total supply in two different ways - by calculating mining rewards and by summing up all account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' [RunnerStepDependencies(typeof(ReviewBlockTree))]\n public class RunCustomTools : IStep\n {\n private readonly EthereumRunnerContext _context;\n\n public RunCustomTools(EthereumRunnerContext context)\n {\n _context = context;\n }\n\n public Task Execute(CancellationToken cancellationToken)\n {\n ILogger logger = _context.LogManager.GetClassLogger();\n IInitConfig initConfig = _context.Config();\n\n switch (initConfig.DiagnosticMode)\n {\n case DiagnosticMode.VerifySupply:\n {\n logger.Info("Genesis supply:");\n SupplyVerifier supplyVerifier = new SupplyVerifier(logger);\n StateDb stateDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateDb codeDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateReader stateReader = new StateReader(stateDb, codeDb, _context.LogManager);\n stateReader.RunTreeVisitor(supplyVerifier, _context.BlockTree!.Genesis.StateRoot);\n\n Block head = _context.BlockTree!.Head;\n logger.Info($"Head ({head.Number}) block supply:");\n supplyVerifier = new SupplyVerifier(logger);\n stateReader.RunTreeVisitor(supplyVerifier, head.StateRoot);\n break;\n }\n case DiagnosticMode.VerifyRewards:\n _context.BlockTree!.Accept(new RewardsVerifier(_context.LogManager), cancellationToken);\n break;\n }\n\n return Task.CompletedTask;\n }\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"Below you will see an example of using ITreeVisitor that allows to check all the blocks, including some of the discarded\nbranches if you wish so:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive => 10618000;\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n private UInt256 _blockRewards;\n\n public RewardsVerifier(ILogManager logManager)\n {\n _logger = logManager.GetClassLogger();\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n _blockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,o.jsx)(n.p,{children:"And here you will find an example of a tree visitor that sums up all the account balances:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:' public class SupplyVerifier : ITreeVisitor\n {\n private readonly ILogger _logger;\n private UInt256 _balance = UInt256.Zero;\n private int _accountsVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public bool ShouldVisit(Keccak nextNode) { return true; }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n _balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }\n }\n'})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var o=t(6540);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b3ed09d7.d77b7d84.js b/assets/js/b3ed09d7.e6c2519f.js similarity index 98% rename from assets/js/b3ed09d7.d77b7d84.js rename to assets/js/b3ed09d7.e6c2519f.js index 8a90d00a2..9dc79eae8 100644 --- a/assets/js/b3ed09d7.d77b7d84.js +++ b/assets/js/b3ed09d7.e6c2519f.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7683],{4443:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>h});var r=t(4848),s=t(8453);const i={title:"Grafana and Prometheus",sidebar_position:0},o=void 0,a={id:"monitoring/metrics/grafana-and-prometheus",title:"Grafana and Prometheus",description:"This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.",source:"@site/versioned_docs/version-1.27.0/monitoring/metrics/grafana-and-prometheus.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/grafana-and-prometheus",permalink:"/1.27.0/monitoring/metrics/grafana-and-prometheus",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/monitoring/metrics/grafana-and-prometheus.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Grafana and Prometheus",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Metrics",permalink:"/1.27.0/monitoring/metrics/"},next:{title:"dotnet-counters",permalink:"/1.27.0/monitoring/metrics/dotnet-counters"}},c={},h=[{value:"Step 1: Set up Grafana and Prometheus",id:"step-1-set-up-grafana-and-prometheus",level:2},{value:"Step 2: Run the stack",id:"step-2-run-the-stack",level:2},{value:"Step 3: Run Nethermind",id:"step-3-run-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["This guide will walk you through setting up a local metrics infrastructure using ",(0,r.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,r.jsx)(n.a,{href:"https://prometheus.io",children:"Prometheus"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"step-1-set-up-grafana-and-prometheus",children:"Step 1: Set up Grafana and Prometheus"}),"\n",(0,r.jsxs)(n.p,{children:["To simplify the process, we will use the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/metrics-infrastructure",children:"metrics-infrastructure"})," repository, which contains the necessary configuration files to run Grafana and Prometheus in a Docker container. However, you can also set up Grafana and Prometheus manually the way it fits your specific needs."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/NethermindEth/metrics-infrastructure.git\n"})}),"\n",(0,r.jsx)(n.h2,{id:"step-2-run-the-stack",children:"Step 2: Run the stack"}),"\n",(0,r.jsx)(n.p,{children:"After cloning the repository, navigate to its root directory and run the containers using Docker Compose as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,r.jsx)(n.p,{children:"Once the stack is running, you can access the following services:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Grafana"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:3000",children:"localhost:3000"}),(0,r.jsx)(n.br,{}),"\n","Use ",(0,r.jsx)(n.code,{children:"admin"})," for both the username and password. When asked for a password change, you may skip it. Then, navigate to Dashboards > Nethermind Dashboard."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Prometheus"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9090",children:"localhost:9090"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Pushgateway"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9091",children:"localhost:9091"}),(0,r.jsx)(n.br,{}),"\n","To specify another endpoint for the Pushgateway, use the ",(0,r.jsx)(n.code,{children:"--Metrics.PushGatewayUrl"})," command line option."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"step-3-run-nethermind",children:"Step 3: Run Nethermind"}),"\n",(0,r.jsxs)(n.p,{children:["To enable metrics in Nethermind, use the ",(0,r.jsx)(n.code,{children:"--Metrics.Enabled true"})," command line option. For more options, see the ",(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["A ",(0,r.jsx)(n.a,{href:"/1.27.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,r.jsx)(n.p,{children:"Run Nethermind as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.Enabled true\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Alternatively, you may add the ",(0,r.jsx)(n.code,{children:"nethermind"})," service to the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," file in the repository root to run everything altogether:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n command: -c mainnet --Metrics.Enabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.p,{children:"In this case, you may want to configure your consensus client similarly."})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(6540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7683],{4443:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>h});var r=t(4848),s=t(8453);const i={title:"Grafana and Prometheus",sidebar_position:0},o=void 0,a={id:"monitoring/metrics/grafana-and-prometheus",title:"Grafana and Prometheus",description:"This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.",source:"@site/versioned_docs/version-1.27.0/monitoring/metrics/grafana-and-prometheus.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/grafana-and-prometheus",permalink:"/1.27.0/monitoring/metrics/grafana-and-prometheus",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/monitoring/metrics/grafana-and-prometheus.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Grafana and Prometheus",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Metrics",permalink:"/1.27.0/monitoring/metrics/"},next:{title:"dotnet-counters",permalink:"/1.27.0/monitoring/metrics/dotnet-counters"}},c={},h=[{value:"Step 1: Set up Grafana and Prometheus",id:"step-1-set-up-grafana-and-prometheus",level:2},{value:"Step 2: Run the stack",id:"step-2-run-the-stack",level:2},{value:"Step 3: Run Nethermind",id:"step-3-run-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["This guide will walk you through setting up a local metrics infrastructure using ",(0,r.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,r.jsx)(n.a,{href:"https://prometheus.io",children:"Prometheus"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"step-1-set-up-grafana-and-prometheus",children:"Step 1: Set up Grafana and Prometheus"}),"\n",(0,r.jsxs)(n.p,{children:["To simplify the process, we will use the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/metrics-infrastructure",children:"metrics-infrastructure"})," repository, which contains the necessary configuration files to run Grafana and Prometheus in a Docker container. However, you can also set up Grafana and Prometheus manually the way it fits your specific needs."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/NethermindEth/metrics-infrastructure.git\n"})}),"\n",(0,r.jsx)(n.h2,{id:"step-2-run-the-stack",children:"Step 2: Run the stack"}),"\n",(0,r.jsx)(n.p,{children:"After cloning the repository, navigate to its root directory and run the containers using Docker Compose as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,r.jsx)(n.p,{children:"Once the stack is running, you can access the following services:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Grafana"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:3000",children:"localhost:3000"}),(0,r.jsx)(n.br,{}),"\n","Use ",(0,r.jsx)(n.code,{children:"admin"})," for both the username and password. When asked for a password change, you may skip it. Then, navigate to Dashboards > Nethermind Dashboard."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Prometheus"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9090",children:"localhost:9090"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Pushgateway"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9091",children:"localhost:9091"}),(0,r.jsx)(n.br,{}),"\n","To specify another endpoint for the Pushgateway, use the ",(0,r.jsx)(n.code,{children:"--Metrics.PushGatewayUrl"})," command line option."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"step-3-run-nethermind",children:"Step 3: Run Nethermind"}),"\n",(0,r.jsxs)(n.p,{children:["To enable metrics in Nethermind, use the ",(0,r.jsx)(n.code,{children:"--Metrics.Enabled true"})," command line option. For more options, see the ",(0,r.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["A ",(0,r.jsx)(n.a,{href:"/1.27.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,r.jsx)(n.p,{children:"Run Nethermind as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.Enabled true\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Alternatively, you may add the ",(0,r.jsx)(n.code,{children:"nethermind"})," service to the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," file in the repository root to run everything altogether:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n command: -c mainnet --Metrics.Enabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.p,{children:"In this case, you may want to configure your consensus client similarly."})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(6540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b3ef4e5a.71d3a170.js b/assets/js/b3ef4e5a.eecb97db.js similarity index 99% rename from assets/js/b3ef4e5a.71d3a170.js rename to assets/js/b3ef4e5a.eecb97db.js index 9acdfbc98..2345c4a56 100644 --- a/assets/js/b3ef4e5a.71d3a170.js +++ b/assets/js/b3ef4e5a.eecb97db.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1256],{9451:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>j,frontMatter:()=>c,metadata:()=>o,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),t=s(9365);const c={title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},d=void 0,o={id:"interacting/json-rpc-ns/txpool",title:"txpool namespace",description:"txpool_content",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/txpool.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/txpool",permalink:"/1.25.4/interacting/json-rpc-ns/txpool",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/txpool.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:9,frontMatter:{title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"trace",permalink:"/1.25.4/interacting/json-rpc-ns/trace"},next:{title:"web3",permalink:"/1.25.4/interacting/json-rpc-ns/web3"}},a={},h=[{value:"txpool_content",id:"txpool_content",level:3},{value:"txpool_inspect",id:"txpool_inspect",level:3},{value:"txpool_status",id:"txpool_status",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"txpool_content",children:"txpool_content"}),"\n",(0,r.jsx)(n.p,{children:"Returns tx pool content."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_content",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_inspect",children:"txpool_inspect"}),"\n",(0,r.jsx)(n.p,{children:"Returns a detailed info on tx pool transactions."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_inspect",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_status",children:"txpool_status"}),"\n",(0,r.jsx)(n.p,{children:"Returns a tx pool status."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_status",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),t=s(6347),c=s(205),d=s(7485),o=s(1682),a=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[o,h]=u({queryString:s,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,a.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),g=(()=>{const e=o??m;return j({value:e,tabValues:l})?e:null})();(0,c.A)((()=>{g&&d(g)}),[g]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:c}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,l.a_)(),a=e=>{const n=e.currentTarget,s=d.indexOf(n),i=c[s].value;i!==r&&(o(n),t(i))},h=e=>{let n=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:c.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:a,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,p.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>c});var r=s(6540);const i={},l=r.createContext(i);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1256],{9451:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>j,frontMatter:()=>c,metadata:()=>o,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),t=s(9365);const c={title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},d=void 0,o={id:"interacting/json-rpc-ns/txpool",title:"txpool namespace",description:"txpool_content",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/txpool.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/txpool",permalink:"/1.25.4/interacting/json-rpc-ns/txpool",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/txpool.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:9,frontMatter:{title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"trace",permalink:"/1.25.4/interacting/json-rpc-ns/trace"},next:{title:"web3",permalink:"/1.25.4/interacting/json-rpc-ns/web3"}},a={},h=[{value:"txpool_content",id:"txpool_content",level:3},{value:"txpool_inspect",id:"txpool_inspect",level:3},{value:"txpool_status",id:"txpool_status",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"txpool_content",children:"txpool_content"}),"\n",(0,r.jsx)(n.p,{children:"Returns tx pool content."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_content",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_inspect",children:"txpool_inspect"}),"\n",(0,r.jsx)(n.p,{children:"Returns a detailed info on tx pool transactions."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_inspect",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_status",children:"txpool_status"}),"\n",(0,r.jsx)(n.p,{children:"Returns a tx pool status."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_status",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),t=s(6347),c=s(205),d=s(7485),o=s(1682),a=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[o,h]=u({queryString:s,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,a.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),g=(()=>{const e=o??m;return j({value:e,tabValues:l})?e:null})();(0,c.A)((()=>{g&&d(g)}),[g]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:c}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,l.a_)(),a=e=>{const n=e.currentTarget,s=d.indexOf(n),i=c[s].value;i!==r&&(o(n),t(i))},h=e=>{let n=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:c.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:a,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,p.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>c});var r=s(6540);const i={},l=r.createContext(i);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b3f256dd.d3e690b7.js b/assets/js/b3f256dd.f50d8992.js similarity index 99% rename from assets/js/b3f256dd.d3e690b7.js rename to assets/js/b3f256dd.f50d8992.js index da25b0cb9..7b440a992 100644 --- a/assets/js/b3f256dd.d3e690b7.js +++ b/assets/js/b3f256dd.f50d8992.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6435],{2524:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});var i=s(4848),r=s(8453);const o={title:"Logs",sidebar_position:4},d=void 0,t={id:"fundamentals/logs",title:"Logs",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.26.0/fundamentals/logs.md",sourceDirName:"fundamentals",slug:"/fundamentals/logs",permalink:"/1.26.0/fundamentals/logs",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/logs.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"Logs",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Security",permalink:"/1.26.0/fundamentals/security"},next:{title:"Database",permalink:"/1.26.0/fundamentals/database"}},l={},c=[{value:"Log config file location",id:"log-config-file-location",level:2},{value:"Log config file syntax",id:"log-config-file-syntax",level:2},{value:"Config or CLI log rules",id:"config-or-cli-log-rules",level:2},{value:"Global logging override",id:"global-logging-override",level:2},{value:"JSON RPC logging level",id:"json-rpc-logging-level",level:2},{value:"Enterprise Logging",id:"enterprise-logging",level:2},{value:"Explaining Nethermind logs",id:"explaining-nethermind-logs",level:2}];function a(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-location",children:"Log config file location"}),"\n",(0,i.jsx)(n.p,{children:"Logging in Nethermind is done via NLog library that can be configured by editing the NLog.config file."}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Environment Type"}),(0,i.jsx)(n.th,{children:"NLog.config location"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Debug mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Debug\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Release mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Release\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"PPA"}),(0,i.jsx)(n.td,{children:"/usr/share/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Docker"}),(0,i.jsx)(n.td,{children:"/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub releases page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"dAppNode"}),(0,i.jsx)(n.td,{children:"? [to be documented]"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-syntax",children:"Log config file syntax"}),"\n",(0,i.jsxs)(n.p,{children:["Detailed NLog configuration options can be found\nhere: ",(0,i.jsx)(n.a,{href:"https://nlog-project.org/config/",children:"https://nlog-project.org/config/"})]}),"\n",(0,i.jsx)(n.h2,{id:"config-or-cli-log-rules",children:"Config or CLI log rules"}),"\n",(0,i.jsx)(n.p,{children:"Simple logging rules can be added through configuration file or command line argument."}),"\n",(0,i.jsxs)(n.p,{children:["For example this would add ",(0,i.jsx)(n.code,{children:"Trace"})," level logs to any logger under ",(0,i.jsx)(n.code,{children:"Synchronization"})," module and ",(0,i.jsx)(n.code,{children:"Debug"})," level logs\nfor ",(0,i.jsx)(n.code,{children:"BlockTree"})," from ",(0,i.jsx)(n.code,{children:"Blockchain"})," module:",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.code,{children:"--Init.LogRules Synchronization.*:Trace;Blockchain.BlockTree:Debug"})]}),"\n",(0,i.jsx)(n.h2,{id:"global-logging-override",children:"Global logging override"}),"\n",(0,i.jsx)(n.p,{children:"Additionally there are global logging override that you can use temporarily:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Command line override"}),(0,i.jsx)(n.th,{children:"Log level"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log TRACE"}),(0,i.jsx)(n.td,{children:"TRACE"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log DEBUG"}),(0,i.jsx)(n.td,{children:"DEBUG"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log INFO"}),(0,i.jsx)(n.td,{children:"INFO"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log WARN"}),(0,i.jsx)(n.td,{children:"WARN"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log ERROR"}),(0,i.jsx)(n.td,{children:"ERROR"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"json-rpc-logging-level",children:"JSON RPC logging level"}),"\n",(0,i.jsx)(n.p,{children:"This can be done by including these lines in the logging configuration file:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\n\n\n'})}),"\n",(0,i.jsx)(n.h2,{id:"enterprise-logging",children:"Enterprise Logging"}),"\n",(0,i.jsxs)(n.p,{children:["See how to configure Seq ",(0,i.jsx)(n.a,{href:"https://docs.nethermind.io/nethermind/enterprise/seq",children:"here"})]}),"\n",(0,i.jsx)(n.h2,{id:"explaining-nethermind-logs",children:"Explaining Nethermind logs"}),"\n",(0,i.jsxs)(n.p,{children:["You can check the supported operating systems, architectures and hardware requirements\nhere: ",(0,i.jsx)(n.a,{href:"/1.26.0/get-started/system-requirements",children:"system-requirements.md"})]}),"\n",(0,i.jsxs)(n.p,{children:["After the node starts, you will see some initial info about the node and then the sync will start. G\xf6rli fast sync uses\na ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync mode initially. The ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync picks some known ",(0,i.jsx)(n.code,{children:"pivot block"})," from the past and\ndownloads ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"}),", and ",(0,i.jsx)(n.code,{children:"receipts"})," downwards all the way to ",(0,i.jsx)(n.code,{children:"genesis block"}),". All blocks from 0 to\nthe ",(0,i.jsx)(n.code,{children:"pivot block"})," are showed as ",(0,i.jsx)(n.code,{children:"Old Headers"})," in the ",(0,i.jsx)(n.code,{children:"fast blocks sync"})," logs. The console display shows the number\ngrowing from 0 to pivot, but this is just to make the display more user-friendly."]}),"\n",(0,i.jsx)(n.p,{children:"You will see some information about the sync progress, like below:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Shows the number of already downloaded ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," under the name ",(0,i.jsx)(n.code,{children:"Downloaded"})," out of all to\nbe downloaded in the fast blocks stage."]}),"\n",(0,i.jsxs)(n.li,{children:["Shows the current queue of already downloaded ",(0,i.jsx)(n.code,{children:"blocks"}),", ",(0,i.jsx)(n.code,{children:"headers"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," waiting for being saved to the\ndatabase."]}),"\n",(0,i.jsx)(n.li,{children:"Shows the current download speed (blocks per second - bps)."}),"\n",(0,i.jsx)(n.li,{children:"Shows the average download speed (blocks per second - bps)."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast blocks sync logs",src:s(8973).A+"",width:"1219",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["When the fast blocks stage finishes, there will be some period of downloading blocks between the ",(0,i.jsx)(n.code,{children:"pivot"})," and\nthe",(0,i.jsx)(n.code,{children:"latest blocks"})," which will have some additional info:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Shows the last entry from the fast blocks stage."}),"\n",(0,i.jsx)(n.li,{children:"Shows the mode transition moment."}),"\n",(0,i.jsxs)(n.li,{children:["Displays the speed (in blocks per second) of all ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," at the same time."]}),"\n",(0,i.jsx)(n.li,{children:"Additional info will appear every 30000 blocks with information about the G\xf6rli epoch being stored."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli fast sync logs",src:s(245).A+"",width:"1528",height:"643"})}),"\n",(0,i.jsxs)(n.p,{children:["After the ",(0,i.jsx)(n.code,{children:"fast sync"})," part finished, the node will transition to the ",(0,i.jsx)(n.code,{children:"state sync stage"})," when the ",(0,i.jsx)(n.code,{children:"state trie"})," is being\ndownloaded. Much information is displayed about the progress, as this process may take a long time on mainnet (a few\nhours)."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Total elapsed time in ",(0,i.jsx)(n.code,{children:"state sync"})," is displayed."]}),"\n",(0,i.jsx)(n.li,{children:"The total percentage of downloaded DB size is displayed (on mainnet the sync finishes around 34GB in March 2020, on\nG\xf6rli around 800MB)."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"branches"})," stands for the percentage of downloaded branches."]}),"\n",(0,i.jsx)(n.li,{children:"Download speed in kilobytes per second is displayed."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"accounts"})," stands for the number of accounts data downloaded already."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"nodes"})," stands for the number of ",(0,i.jsx)(n.code,{children:"Patricia trie nodes"})," downloaded by the sync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"diagnostic"})," shows the time spent in the DB write / read access. The higher the value, the worse. It may get much\nworse if you restart the node during the sync process, as we need to recreate some caches then by reading data from\nthe DB."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli state sync logs",src:s(9378).A+"",width:"1528",height:"742"})}),"\n",(0,i.jsxs)(n.p,{children:["When the state sync is nearing completion, you may see a series of ",(0,i.jsx)(n.code,{children:"branch sync"})," information reloading many times from\n0% to nearly 100%. This is the node trying to retrieve the few remaining state nodes and progressing with the head block\nrapidly:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli branch sync logs",src:s(1548).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["At some point, the entire state is downloaded and the node enters the ",(0,i.jsx)(n.code,{children:"full sync"})," mode and will allow you to issue CLI /\nWeb3 queries and send / receive transactions\ud83e\udd73"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.code,{children:"root"})," is saved at the moment when the entire ",(0,i.jsx)(n.code,{children:"Patricia trie"})," is downloaded."]}),"\n",(0,i.jsxs)(n.li,{children:["We also clearly state that the node transitions to the ",(0,i.jsx)(n.code,{children:"full sync"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["When you see the block being processed, then you are in the ",(0,i.jsx)(n.code,{children:"full sync"})," and the newly arrived block is being\ncalculated."]}),"\n",(0,i.jsx)(n.li,{children:"Every two minutes you will see a summary of connected peers with their client version, IP address, highest synced\nblock, and data download speeds."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli full sync logs",src:s(3035).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsx)(n.p,{children:"Also, every now and then, a peer report will appear like below:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(4922).A+"",width:"2560",height:"1337"})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["First bracket is for Allocated contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsxs)(n.li,{children:["Second bracket is for Sleeping contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsx)(n.li,{children:"Third bracket contains Peer Info."}),"\n",(0,i.jsxs)(n.li,{children:["Fourth bracket is for Speeds as Follows:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Latency"}),"\n",(0,i.jsx)(n.li,{children:"Headers Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Bodies Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Receipts Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Node Data Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Snap Ranges Transfer"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},4922:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png"},1548:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png"},245:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png"},9378:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png"},3035:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png"},8973:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png"},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>t});var i=s(6540);const r={},o=i.createContext(r);function d(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6435],{2524:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});var i=s(4848),r=s(8453);const o={title:"Logs",sidebar_position:4},d=void 0,t={id:"fundamentals/logs",title:"Logs",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.26.0/fundamentals/logs.md",sourceDirName:"fundamentals",slug:"/fundamentals/logs",permalink:"/1.26.0/fundamentals/logs",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/logs.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"Logs",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Security",permalink:"/1.26.0/fundamentals/security"},next:{title:"Database",permalink:"/1.26.0/fundamentals/database"}},l={},c=[{value:"Log config file location",id:"log-config-file-location",level:2},{value:"Log config file syntax",id:"log-config-file-syntax",level:2},{value:"Config or CLI log rules",id:"config-or-cli-log-rules",level:2},{value:"Global logging override",id:"global-logging-override",level:2},{value:"JSON RPC logging level",id:"json-rpc-logging-level",level:2},{value:"Enterprise Logging",id:"enterprise-logging",level:2},{value:"Explaining Nethermind logs",id:"explaining-nethermind-logs",level:2}];function a(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-location",children:"Log config file location"}),"\n",(0,i.jsx)(n.p,{children:"Logging in Nethermind is done via NLog library that can be configured by editing the NLog.config file."}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Environment Type"}),(0,i.jsx)(n.th,{children:"NLog.config location"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Debug mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Debug\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Release mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Release\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"PPA"}),(0,i.jsx)(n.td,{children:"/usr/share/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Docker"}),(0,i.jsx)(n.td,{children:"/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub releases page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"dAppNode"}),(0,i.jsx)(n.td,{children:"? [to be documented]"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-syntax",children:"Log config file syntax"}),"\n",(0,i.jsxs)(n.p,{children:["Detailed NLog configuration options can be found\nhere: ",(0,i.jsx)(n.a,{href:"https://nlog-project.org/config/",children:"https://nlog-project.org/config/"})]}),"\n",(0,i.jsx)(n.h2,{id:"config-or-cli-log-rules",children:"Config or CLI log rules"}),"\n",(0,i.jsx)(n.p,{children:"Simple logging rules can be added through configuration file or command line argument."}),"\n",(0,i.jsxs)(n.p,{children:["For example this would add ",(0,i.jsx)(n.code,{children:"Trace"})," level logs to any logger under ",(0,i.jsx)(n.code,{children:"Synchronization"})," module and ",(0,i.jsx)(n.code,{children:"Debug"})," level logs\nfor ",(0,i.jsx)(n.code,{children:"BlockTree"})," from ",(0,i.jsx)(n.code,{children:"Blockchain"})," module:",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.code,{children:"--Init.LogRules Synchronization.*:Trace;Blockchain.BlockTree:Debug"})]}),"\n",(0,i.jsx)(n.h2,{id:"global-logging-override",children:"Global logging override"}),"\n",(0,i.jsx)(n.p,{children:"Additionally there are global logging override that you can use temporarily:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Command line override"}),(0,i.jsx)(n.th,{children:"Log level"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log TRACE"}),(0,i.jsx)(n.td,{children:"TRACE"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log DEBUG"}),(0,i.jsx)(n.td,{children:"DEBUG"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log INFO"}),(0,i.jsx)(n.td,{children:"INFO"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log WARN"}),(0,i.jsx)(n.td,{children:"WARN"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log ERROR"}),(0,i.jsx)(n.td,{children:"ERROR"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"json-rpc-logging-level",children:"JSON RPC logging level"}),"\n",(0,i.jsx)(n.p,{children:"This can be done by including these lines in the logging configuration file:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\n\n\n'})}),"\n",(0,i.jsx)(n.h2,{id:"enterprise-logging",children:"Enterprise Logging"}),"\n",(0,i.jsxs)(n.p,{children:["See how to configure Seq ",(0,i.jsx)(n.a,{href:"https://docs.nethermind.io/nethermind/enterprise/seq",children:"here"})]}),"\n",(0,i.jsx)(n.h2,{id:"explaining-nethermind-logs",children:"Explaining Nethermind logs"}),"\n",(0,i.jsxs)(n.p,{children:["You can check the supported operating systems, architectures and hardware requirements\nhere: ",(0,i.jsx)(n.a,{href:"/1.26.0/get-started/system-requirements",children:"system-requirements.md"})]}),"\n",(0,i.jsxs)(n.p,{children:["After the node starts, you will see some initial info about the node and then the sync will start. G\xf6rli fast sync uses\na ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync mode initially. The ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync picks some known ",(0,i.jsx)(n.code,{children:"pivot block"})," from the past and\ndownloads ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"}),", and ",(0,i.jsx)(n.code,{children:"receipts"})," downwards all the way to ",(0,i.jsx)(n.code,{children:"genesis block"}),". All blocks from 0 to\nthe ",(0,i.jsx)(n.code,{children:"pivot block"})," are showed as ",(0,i.jsx)(n.code,{children:"Old Headers"})," in the ",(0,i.jsx)(n.code,{children:"fast blocks sync"})," logs. The console display shows the number\ngrowing from 0 to pivot, but this is just to make the display more user-friendly."]}),"\n",(0,i.jsx)(n.p,{children:"You will see some information about the sync progress, like below:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Shows the number of already downloaded ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," under the name ",(0,i.jsx)(n.code,{children:"Downloaded"})," out of all to\nbe downloaded in the fast blocks stage."]}),"\n",(0,i.jsxs)(n.li,{children:["Shows the current queue of already downloaded ",(0,i.jsx)(n.code,{children:"blocks"}),", ",(0,i.jsx)(n.code,{children:"headers"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," waiting for being saved to the\ndatabase."]}),"\n",(0,i.jsx)(n.li,{children:"Shows the current download speed (blocks per second - bps)."}),"\n",(0,i.jsx)(n.li,{children:"Shows the average download speed (blocks per second - bps)."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast blocks sync logs",src:s(8973).A+"",width:"1219",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["When the fast blocks stage finishes, there will be some period of downloading blocks between the ",(0,i.jsx)(n.code,{children:"pivot"})," and\nthe",(0,i.jsx)(n.code,{children:"latest blocks"})," which will have some additional info:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Shows the last entry from the fast blocks stage."}),"\n",(0,i.jsx)(n.li,{children:"Shows the mode transition moment."}),"\n",(0,i.jsxs)(n.li,{children:["Displays the speed (in blocks per second) of all ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," at the same time."]}),"\n",(0,i.jsx)(n.li,{children:"Additional info will appear every 30000 blocks with information about the G\xf6rli epoch being stored."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli fast sync logs",src:s(245).A+"",width:"1528",height:"643"})}),"\n",(0,i.jsxs)(n.p,{children:["After the ",(0,i.jsx)(n.code,{children:"fast sync"})," part finished, the node will transition to the ",(0,i.jsx)(n.code,{children:"state sync stage"})," when the ",(0,i.jsx)(n.code,{children:"state trie"})," is being\ndownloaded. Much information is displayed about the progress, as this process may take a long time on mainnet (a few\nhours)."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Total elapsed time in ",(0,i.jsx)(n.code,{children:"state sync"})," is displayed."]}),"\n",(0,i.jsx)(n.li,{children:"The total percentage of downloaded DB size is displayed (on mainnet the sync finishes around 34GB in March 2020, on\nG\xf6rli around 800MB)."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"branches"})," stands for the percentage of downloaded branches."]}),"\n",(0,i.jsx)(n.li,{children:"Download speed in kilobytes per second is displayed."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"accounts"})," stands for the number of accounts data downloaded already."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"nodes"})," stands for the number of ",(0,i.jsx)(n.code,{children:"Patricia trie nodes"})," downloaded by the sync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"diagnostic"})," shows the time spent in the DB write / read access. The higher the value, the worse. It may get much\nworse if you restart the node during the sync process, as we need to recreate some caches then by reading data from\nthe DB."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli state sync logs",src:s(9378).A+"",width:"1528",height:"742"})}),"\n",(0,i.jsxs)(n.p,{children:["When the state sync is nearing completion, you may see a series of ",(0,i.jsx)(n.code,{children:"branch sync"})," information reloading many times from\n0% to nearly 100%. This is the node trying to retrieve the few remaining state nodes and progressing with the head block\nrapidly:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli branch sync logs",src:s(1548).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["At some point, the entire state is downloaded and the node enters the ",(0,i.jsx)(n.code,{children:"full sync"})," mode and will allow you to issue CLI /\nWeb3 queries and send / receive transactions\ud83e\udd73"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.code,{children:"root"})," is saved at the moment when the entire ",(0,i.jsx)(n.code,{children:"Patricia trie"})," is downloaded."]}),"\n",(0,i.jsxs)(n.li,{children:["We also clearly state that the node transitions to the ",(0,i.jsx)(n.code,{children:"full sync"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["When you see the block being processed, then you are in the ",(0,i.jsx)(n.code,{children:"full sync"})," and the newly arrived block is being\ncalculated."]}),"\n",(0,i.jsx)(n.li,{children:"Every two minutes you will see a summary of connected peers with their client version, IP address, highest synced\nblock, and data download speeds."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli full sync logs",src:s(3035).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsx)(n.p,{children:"Also, every now and then, a peer report will appear like below:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(4922).A+"",width:"2560",height:"1337"})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["First bracket is for Allocated contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsxs)(n.li,{children:["Second bracket is for Sleeping contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsx)(n.li,{children:"Third bracket contains Peer Info."}),"\n",(0,i.jsxs)(n.li,{children:["Fourth bracket is for Speeds as Follows:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Latency"}),"\n",(0,i.jsx)(n.li,{children:"Headers Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Bodies Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Receipts Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Node Data Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Snap Ranges Transfer"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},4922:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png"},1548:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png"},245:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png"},9378:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png"},3035:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png"},8973:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png"},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>t});var i=s(6540);const r={},o=i.createContext(r);function d(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b5ab4687.5e0a593d.js b/assets/js/b5ab4687.e096c397.js similarity index 99% rename from assets/js/b5ab4687.5e0a593d.js rename to assets/js/b5ab4687.e096c397.js index d67c78824..174449415 100644 --- a/assets/js/b5ab4687.5e0a593d.js +++ b/assets/js/b5ab4687.e096c397.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9860],{7953:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),r=t(8453);const i={title:"dotnet-counters",sidebar_position:1},s=void 0,c={id:"monitoring/metrics/dotnet-counters",title:"dotnet-counters",description:"This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.",source:"@site/versioned_docs/version-1.28.0/monitoring/metrics/dotnet-counters.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/dotnet-counters",permalink:"/1.28.0/monitoring/metrics/dotnet-counters",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/monitoring/metrics/dotnet-counters.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"dotnet-counters",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Grafana and Prometheus",permalink:"/1.28.0/monitoring/metrics/grafana-and-prometheus"},next:{title:"Health check",permalink:"/1.28.0/monitoring/health-check"}},l={},d=[{value:"Step 1: Install dotnet-counters",id:"step-1-install-dotnet-counters",level:2},{value:"Installing locally",id:"installing-locally",level:3},{value:"Installing in a Docker container",id:"installing-in-a-docker-container",level:3},{value:"Step 2: Run Nethermind",id:"step-2-run-nethermind",level:2},{value:"Running locally",id:"running-locally",level:3},{value:"Running in a Docker container",id:"running-in-a-docker-container",level:3},{value:"Step 3: Collect metrics",id:"step-3-collect-metrics",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["This guide will walk you through setting up performance counters using the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"dotnet-counters"})," performance monitoring tool that observes counters published via the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventcounter",children:"EventCounters API"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"step-1-install-dotnet-counters",children:"Step 1: Install dotnet-counters"}),"\n",(0,o.jsx)(n.p,{children:"dotnet-counters can be either installed locally or in a Docker container."}),"\n",(0,o.jsx)(n.h3,{id:"installing-locally",children:"Installing locally"}),"\n",(0,o.jsx)(n.p,{children:"Use the dotnet tool install command as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet tool install -g dotnet-counters\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Once installed, you can run the tool from the command line by typing ",(0,o.jsx)(n.code,{children:"dotnet-counters"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"installing-in-a-docker-container",children:"Installing in a Docker container"}),"\n",(0,o.jsx)(n.p,{children:"To install dotnet-counters in a Docker container, create a Dockerfile with the following content:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-docker",metastring:'title="Dockerfile"',children:'FROM mcr.microsoft.com/dotnet/sdk:8.0\n\nRUN dotnet tool install -g dotnet-counters\n\nENV PATH="$PATH:/root/.dotnet/tools"\n\nENTRYPOINT ["/bin/bash"]\n'})}),"\n",(0,o.jsx)(n.p,{children:"Then, build the Docker image:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker build -t dotnet-counters .\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-2-run-nethermind",children:"Step 2: Run Nethermind"}),"\n",(0,o.jsxs)(n.p,{children:["To enable performance counters in Nethermind, use the command line option ",(0,o.jsx)(n.code,{children:"--Metrics.CountersEnabled true"}),". For more options, see the ",(0,o.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["A ",(0,o.jsx)(n.a,{href:"/1.28.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,o.jsx)(n.h3,{id:"running-locally",children:"Running locally"}),"\n",(0,o.jsx)(n.p,{children:"To enable performance counters, run Nethermind as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.CountersEnabled true\n"})}),"\n",(0,o.jsx)(n.h3,{id:"running-in-a-docker-container",children:"Running in a Docker container"}),"\n",(0,o.jsxs)(n.p,{children:["The easiest way of collecting metrics in a Docker container is to use Docker Compose. Below, we use the Nethermind official Docker image and the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," image we created earlier:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n\n dotnet-counters:\n image: dotnet-counters\n container_name: dotnet-counters\n stdin_open: true\n tty: true\n pid: service:nethermind\n volumes:\n - metrics:/tmp\n depends_on:\n - nethermind\n \n nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n command: -c mainnet --Metrics.CountersEnabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n - metrics:/tmp\n\nvolumes:\n metrics:\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:["dotnet-counters uses IPC socket communication to monitor the target process. For this, we use the ",(0,o.jsx)(n.code,{children:"metrics"})," volume to share the IPC socket directory with the ",(0,o.jsx)(n.code,{children:"nethermind"})," and ",(0,o.jsx)(n.code,{children:"dotnet-counter"})," services. The ",(0,o.jsx)(n.code,{children:"pid"})," option in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," service is used to share the PID namespace with the ",(0,o.jsx)(n.code,{children:"nethermind"})," service. This is necessary for ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," to be able to see the Nethermind process."]})}),"\n",(0,o.jsx)(n.p,{children:"We can run the above file as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-3-collect-metrics",children:"Step 3: Collect metrics"}),"\n",(0,o.jsxs)(n.p,{children:["Once dotnet-counters is installed and Nethermind is running, we can start collecting the metrics. If you chose to collect metrics in the containers, run the following command in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," container:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind\n"})}),"\n",(0,o.jsx)(n.p,{children:"By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind -f json -o /tmp/counters.json\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For more info about dotnet-counters, see its ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"official docs"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>c});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9860],{7953:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),r=t(8453);const i={title:"dotnet-counters",sidebar_position:1},s=void 0,c={id:"monitoring/metrics/dotnet-counters",title:"dotnet-counters",description:"This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.",source:"@site/versioned_docs/version-1.28.0/monitoring/metrics/dotnet-counters.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/dotnet-counters",permalink:"/1.28.0/monitoring/metrics/dotnet-counters",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/monitoring/metrics/dotnet-counters.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"dotnet-counters",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Grafana and Prometheus",permalink:"/1.28.0/monitoring/metrics/grafana-and-prometheus"},next:{title:"Health check",permalink:"/1.28.0/monitoring/health-check"}},l={},d=[{value:"Step 1: Install dotnet-counters",id:"step-1-install-dotnet-counters",level:2},{value:"Installing locally",id:"installing-locally",level:3},{value:"Installing in a Docker container",id:"installing-in-a-docker-container",level:3},{value:"Step 2: Run Nethermind",id:"step-2-run-nethermind",level:2},{value:"Running locally",id:"running-locally",level:3},{value:"Running in a Docker container",id:"running-in-a-docker-container",level:3},{value:"Step 3: Collect metrics",id:"step-3-collect-metrics",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["This guide will walk you through setting up performance counters using the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"dotnet-counters"})," performance monitoring tool that observes counters published via the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventcounter",children:"EventCounters API"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"step-1-install-dotnet-counters",children:"Step 1: Install dotnet-counters"}),"\n",(0,o.jsx)(n.p,{children:"dotnet-counters can be either installed locally or in a Docker container."}),"\n",(0,o.jsx)(n.h3,{id:"installing-locally",children:"Installing locally"}),"\n",(0,o.jsx)(n.p,{children:"Use the dotnet tool install command as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet tool install -g dotnet-counters\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Once installed, you can run the tool from the command line by typing ",(0,o.jsx)(n.code,{children:"dotnet-counters"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"installing-in-a-docker-container",children:"Installing in a Docker container"}),"\n",(0,o.jsx)(n.p,{children:"To install dotnet-counters in a Docker container, create a Dockerfile with the following content:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-docker",metastring:'title="Dockerfile"',children:'FROM mcr.microsoft.com/dotnet/sdk:8.0\n\nRUN dotnet tool install -g dotnet-counters\n\nENV PATH="$PATH:/root/.dotnet/tools"\n\nENTRYPOINT ["/bin/bash"]\n'})}),"\n",(0,o.jsx)(n.p,{children:"Then, build the Docker image:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker build -t dotnet-counters .\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-2-run-nethermind",children:"Step 2: Run Nethermind"}),"\n",(0,o.jsxs)(n.p,{children:["To enable performance counters in Nethermind, use the command line option ",(0,o.jsx)(n.code,{children:"--Metrics.CountersEnabled true"}),". For more options, see the ",(0,o.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["A ",(0,o.jsx)(n.a,{href:"/1.28.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,o.jsx)(n.h3,{id:"running-locally",children:"Running locally"}),"\n",(0,o.jsx)(n.p,{children:"To enable performance counters, run Nethermind as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.CountersEnabled true\n"})}),"\n",(0,o.jsx)(n.h3,{id:"running-in-a-docker-container",children:"Running in a Docker container"}),"\n",(0,o.jsxs)(n.p,{children:["The easiest way of collecting metrics in a Docker container is to use Docker Compose. Below, we use the Nethermind official Docker image and the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," image we created earlier:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n\n dotnet-counters:\n image: dotnet-counters\n container_name: dotnet-counters\n stdin_open: true\n tty: true\n pid: service:nethermind\n volumes:\n - metrics:/tmp\n depends_on:\n - nethermind\n \n nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n command: -c mainnet --Metrics.CountersEnabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n - metrics:/tmp\n\nvolumes:\n metrics:\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:["dotnet-counters uses IPC socket communication to monitor the target process. For this, we use the ",(0,o.jsx)(n.code,{children:"metrics"})," volume to share the IPC socket directory with the ",(0,o.jsx)(n.code,{children:"nethermind"})," and ",(0,o.jsx)(n.code,{children:"dotnet-counter"})," services. The ",(0,o.jsx)(n.code,{children:"pid"})," option in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," service is used to share the PID namespace with the ",(0,o.jsx)(n.code,{children:"nethermind"})," service. This is necessary for ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," to be able to see the Nethermind process."]})}),"\n",(0,o.jsx)(n.p,{children:"We can run the above file as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-3-collect-metrics",children:"Step 3: Collect metrics"}),"\n",(0,o.jsxs)(n.p,{children:["Once dotnet-counters is installed and Nethermind is running, we can start collecting the metrics. If you chose to collect metrics in the containers, run the following command in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," container:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind\n"})}),"\n",(0,o.jsx)(n.p,{children:"By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind -f json -o /tmp/counters.json\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For more info about dotnet-counters, see its ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"official docs"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>c});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b5dc23c4.be22bf73.js b/assets/js/b5dc23c4.24918f06.js similarity index 99% rename from assets/js/b5dc23c4.be22bf73.js rename to assets/js/b5dc23c4.24918f06.js index 0db30d4d1..f895cc499 100644 --- a/assets/js/b5dc23c4.be22bf73.js +++ b/assets/js/b5dc23c4.24918f06.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5223],{1563:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});var i=s(4848),r=s(8453);const o={title:"Logs",sidebar_position:4},d=void 0,t={id:"fundamentals/logs",title:"Logs",description:"This article is outdated and requires a revision.",source:"@site/docs/fundamentals/logs.md",sourceDirName:"fundamentals",slug:"/fundamentals/logs",permalink:"/next/fundamentals/logs",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/logs.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"Logs",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Security",permalink:"/next/fundamentals/security"},next:{title:"Database",permalink:"/next/fundamentals/database"}},l={},c=[{value:"Log config file location",id:"log-config-file-location",level:2},{value:"Log config file syntax",id:"log-config-file-syntax",level:2},{value:"Config or CLI log rules",id:"config-or-cli-log-rules",level:2},{value:"Global logging override",id:"global-logging-override",level:2},{value:"JSON RPC logging level",id:"json-rpc-logging-level",level:2},{value:"Enterprise Logging",id:"enterprise-logging",level:2},{value:"Explaining Nethermind logs",id:"explaining-nethermind-logs",level:2}];function a(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-location",children:"Log config file location"}),"\n",(0,i.jsx)(n.p,{children:"Logging in Nethermind is done via NLog library that can be configured by editing the NLog.config file."}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Environment Type"}),(0,i.jsx)(n.th,{children:"NLog.config location"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Debug mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Debug\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Release mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Release\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"PPA"}),(0,i.jsx)(n.td,{children:"/usr/share/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Docker"}),(0,i.jsx)(n.td,{children:"/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub releases page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"dAppNode"}),(0,i.jsx)(n.td,{children:"? [to be documented]"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-syntax",children:"Log config file syntax"}),"\n",(0,i.jsxs)(n.p,{children:["Detailed NLog configuration options can be found\nhere: ",(0,i.jsx)(n.a,{href:"https://nlog-project.org/config/",children:"https://nlog-project.org/config/"})]}),"\n",(0,i.jsx)(n.h2,{id:"config-or-cli-log-rules",children:"Config or CLI log rules"}),"\n",(0,i.jsx)(n.p,{children:"Simple logging rules can be added through configuration file or command line argument."}),"\n",(0,i.jsxs)(n.p,{children:["For example this would add ",(0,i.jsx)(n.code,{children:"Trace"})," level logs to any logger under ",(0,i.jsx)(n.code,{children:"Synchronization"})," module and ",(0,i.jsx)(n.code,{children:"Debug"})," level logs\nfor ",(0,i.jsx)(n.code,{children:"BlockTree"})," from ",(0,i.jsx)(n.code,{children:"Blockchain"})," module:",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.code,{children:"--Init.LogRules Synchronization.*:Trace;Blockchain.BlockTree:Debug"})]}),"\n",(0,i.jsx)(n.h2,{id:"global-logging-override",children:"Global logging override"}),"\n",(0,i.jsx)(n.p,{children:"Additionally there are global logging override that you can use temporarily:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Command line override"}),(0,i.jsx)(n.th,{children:"Log level"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log TRACE"}),(0,i.jsx)(n.td,{children:"TRACE"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log DEBUG"}),(0,i.jsx)(n.td,{children:"DEBUG"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log INFO"}),(0,i.jsx)(n.td,{children:"INFO"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log WARN"}),(0,i.jsx)(n.td,{children:"WARN"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log ERROR"}),(0,i.jsx)(n.td,{children:"ERROR"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"json-rpc-logging-level",children:"JSON RPC logging level"}),"\n",(0,i.jsx)(n.p,{children:"This can be done by including these lines in the logging configuration file:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\n\n\n'})}),"\n",(0,i.jsx)(n.h2,{id:"enterprise-logging",children:"Enterprise Logging"}),"\n",(0,i.jsxs)(n.p,{children:["See how to configure Seq ",(0,i.jsx)(n.a,{href:"https://docs.nethermind.io/nethermind/enterprise/seq",children:"here"})]}),"\n",(0,i.jsx)(n.h2,{id:"explaining-nethermind-logs",children:"Explaining Nethermind logs"}),"\n",(0,i.jsxs)(n.p,{children:["You can check the supported operating systems, architectures and hardware requirements\nhere: ",(0,i.jsx)(n.a,{href:"/next/get-started/system-requirements",children:"system-requirements.md"})]}),"\n",(0,i.jsxs)(n.p,{children:["After the node starts, you will see some initial info about the node and then the sync will start. G\xf6rli fast sync uses\na ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync mode initially. The ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync picks some known ",(0,i.jsx)(n.code,{children:"pivot block"})," from the past and\ndownloads ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"}),", and ",(0,i.jsx)(n.code,{children:"receipts"})," downwards all the way to ",(0,i.jsx)(n.code,{children:"genesis block"}),". All blocks from 0 to\nthe ",(0,i.jsx)(n.code,{children:"pivot block"})," are showed as ",(0,i.jsx)(n.code,{children:"Old Headers"})," in the ",(0,i.jsx)(n.code,{children:"fast blocks sync"})," logs. The console display shows the number\ngrowing from 0 to pivot, but this is just to make the display more user-friendly."]}),"\n",(0,i.jsx)(n.p,{children:"You will see some information about the sync progress, like below:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Shows the number of already downloaded ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," under the name ",(0,i.jsx)(n.code,{children:"Downloaded"})," out of all to\nbe downloaded in the fast blocks stage."]}),"\n",(0,i.jsxs)(n.li,{children:["Shows the current queue of already downloaded ",(0,i.jsx)(n.code,{children:"blocks"}),", ",(0,i.jsx)(n.code,{children:"headers"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," waiting for being saved to the\ndatabase."]}),"\n",(0,i.jsx)(n.li,{children:"Shows the current download speed (blocks per second - bps)."}),"\n",(0,i.jsx)(n.li,{children:"Shows the average download speed (blocks per second - bps)."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast blocks sync logs",src:s(8973).A+"",width:"1219",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["When the fast blocks stage finishes, there will be some period of downloading blocks between the ",(0,i.jsx)(n.code,{children:"pivot"})," and\nthe",(0,i.jsx)(n.code,{children:"latest blocks"})," which will have some additional info:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Shows the last entry from the fast blocks stage."}),"\n",(0,i.jsx)(n.li,{children:"Shows the mode transition moment."}),"\n",(0,i.jsxs)(n.li,{children:["Displays the speed (in blocks per second) of all ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," at the same time."]}),"\n",(0,i.jsx)(n.li,{children:"Additional info will appear every 30000 blocks with information about the G\xf6rli epoch being stored."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli fast sync logs",src:s(245).A+"",width:"1528",height:"643"})}),"\n",(0,i.jsxs)(n.p,{children:["After the ",(0,i.jsx)(n.code,{children:"fast sync"})," part finished, the node will transition to the ",(0,i.jsx)(n.code,{children:"state sync stage"})," when the ",(0,i.jsx)(n.code,{children:"state trie"})," is being\ndownloaded. Much information is displayed about the progress, as this process may take a long time on mainnet (a few\nhours)."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Total elapsed time in ",(0,i.jsx)(n.code,{children:"state sync"})," is displayed."]}),"\n",(0,i.jsx)(n.li,{children:"The total percentage of downloaded DB size is displayed (on mainnet the sync finishes around 34GB in March 2020, on\nG\xf6rli around 800MB)."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"branches"})," stands for the percentage of downloaded branches."]}),"\n",(0,i.jsx)(n.li,{children:"Download speed in kilobytes per second is displayed."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"accounts"})," stands for the number of accounts data downloaded already."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"nodes"})," stands for the number of ",(0,i.jsx)(n.code,{children:"Patricia trie nodes"})," downloaded by the sync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"diagnostic"})," shows the time spent in the DB write / read access. The higher the value, the worse. It may get much\nworse if you restart the node during the sync process, as we need to recreate some caches then by reading data from\nthe DB."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli state sync logs",src:s(9378).A+"",width:"1528",height:"742"})}),"\n",(0,i.jsxs)(n.p,{children:["When the state sync is nearing completion, you may see a series of ",(0,i.jsx)(n.code,{children:"branch sync"})," information reloading many times from\n0% to nearly 100%. This is the node trying to retrieve the few remaining state nodes and progressing with the head block\nrapidly:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli branch sync logs",src:s(1548).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["At some point, the entire state is downloaded and the node enters the ",(0,i.jsx)(n.code,{children:"full sync"})," mode and will allow you to issue CLI /\nWeb3 queries and send / receive transactions\ud83e\udd73"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.code,{children:"root"})," is saved at the moment when the entire ",(0,i.jsx)(n.code,{children:"Patricia trie"})," is downloaded."]}),"\n",(0,i.jsxs)(n.li,{children:["We also clearly state that the node transitions to the ",(0,i.jsx)(n.code,{children:"full sync"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["When you see the block being processed, then you are in the ",(0,i.jsx)(n.code,{children:"full sync"})," and the newly arrived block is being\ncalculated."]}),"\n",(0,i.jsx)(n.li,{children:"Every two minutes you will see a summary of connected peers with their client version, IP address, highest synced\nblock, and data download speeds."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli full sync logs",src:s(3035).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsx)(n.p,{children:"Also, every now and then, a peer report will appear like below:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(4922).A+"",width:"2560",height:"1337"})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["First bracket is for Allocated contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsxs)(n.li,{children:["Second bracket is for Sleeping contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsx)(n.li,{children:"Third bracket contains Peer Info."}),"\n",(0,i.jsxs)(n.li,{children:["Fourth bracket is for Speeds as Follows:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Latency"}),"\n",(0,i.jsx)(n.li,{children:"Headers Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Bodies Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Receipts Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Node Data Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Snap Ranges Transfer"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},4922:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png"},1548:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png"},245:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png"},9378:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png"},3035:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png"},8973:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png"},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>t});var i=s(6540);const r={},o=i.createContext(r);function d(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5223],{1563:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});var i=s(4848),r=s(8453);const o={title:"Logs",sidebar_position:4},d=void 0,t={id:"fundamentals/logs",title:"Logs",description:"This article is outdated and requires a revision.",source:"@site/docs/fundamentals/logs.md",sourceDirName:"fundamentals",slug:"/fundamentals/logs",permalink:"/next/fundamentals/logs",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/logs.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"Logs",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Security",permalink:"/next/fundamentals/security"},next:{title:"Database",permalink:"/next/fundamentals/database"}},l={},c=[{value:"Log config file location",id:"log-config-file-location",level:2},{value:"Log config file syntax",id:"log-config-file-syntax",level:2},{value:"Config or CLI log rules",id:"config-or-cli-log-rules",level:2},{value:"Global logging override",id:"global-logging-override",level:2},{value:"JSON RPC logging level",id:"json-rpc-logging-level",level:2},{value:"Enterprise Logging",id:"enterprise-logging",level:2},{value:"Explaining Nethermind logs",id:"explaining-nethermind-logs",level:2}];function a(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-location",children:"Log config file location"}),"\n",(0,i.jsx)(n.p,{children:"Logging in Nethermind is done via NLog library that can be configured by editing the NLog.config file."}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Environment Type"}),(0,i.jsx)(n.th,{children:"NLog.config location"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Debug mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Debug\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Release mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Release\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"PPA"}),(0,i.jsx)(n.td,{children:"/usr/share/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Docker"}),(0,i.jsx)(n.td,{children:"/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub releases page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"dAppNode"}),(0,i.jsx)(n.td,{children:"? [to be documented]"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-syntax",children:"Log config file syntax"}),"\n",(0,i.jsxs)(n.p,{children:["Detailed NLog configuration options can be found\nhere: ",(0,i.jsx)(n.a,{href:"https://nlog-project.org/config/",children:"https://nlog-project.org/config/"})]}),"\n",(0,i.jsx)(n.h2,{id:"config-or-cli-log-rules",children:"Config or CLI log rules"}),"\n",(0,i.jsx)(n.p,{children:"Simple logging rules can be added through configuration file or command line argument."}),"\n",(0,i.jsxs)(n.p,{children:["For example this would add ",(0,i.jsx)(n.code,{children:"Trace"})," level logs to any logger under ",(0,i.jsx)(n.code,{children:"Synchronization"})," module and ",(0,i.jsx)(n.code,{children:"Debug"})," level logs\nfor ",(0,i.jsx)(n.code,{children:"BlockTree"})," from ",(0,i.jsx)(n.code,{children:"Blockchain"})," module:",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.code,{children:"--Init.LogRules Synchronization.*:Trace;Blockchain.BlockTree:Debug"})]}),"\n",(0,i.jsx)(n.h2,{id:"global-logging-override",children:"Global logging override"}),"\n",(0,i.jsx)(n.p,{children:"Additionally there are global logging override that you can use temporarily:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Command line override"}),(0,i.jsx)(n.th,{children:"Log level"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log TRACE"}),(0,i.jsx)(n.td,{children:"TRACE"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log DEBUG"}),(0,i.jsx)(n.td,{children:"DEBUG"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log INFO"}),(0,i.jsx)(n.td,{children:"INFO"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log WARN"}),(0,i.jsx)(n.td,{children:"WARN"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log ERROR"}),(0,i.jsx)(n.td,{children:"ERROR"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"json-rpc-logging-level",children:"JSON RPC logging level"}),"\n",(0,i.jsx)(n.p,{children:"This can be done by including these lines in the logging configuration file:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\n\n\n'})}),"\n",(0,i.jsx)(n.h2,{id:"enterprise-logging",children:"Enterprise Logging"}),"\n",(0,i.jsxs)(n.p,{children:["See how to configure Seq ",(0,i.jsx)(n.a,{href:"https://docs.nethermind.io/nethermind/enterprise/seq",children:"here"})]}),"\n",(0,i.jsx)(n.h2,{id:"explaining-nethermind-logs",children:"Explaining Nethermind logs"}),"\n",(0,i.jsxs)(n.p,{children:["You can check the supported operating systems, architectures and hardware requirements\nhere: ",(0,i.jsx)(n.a,{href:"/next/get-started/system-requirements",children:"system-requirements.md"})]}),"\n",(0,i.jsxs)(n.p,{children:["After the node starts, you will see some initial info about the node and then the sync will start. G\xf6rli fast sync uses\na ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync mode initially. The ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync picks some known ",(0,i.jsx)(n.code,{children:"pivot block"})," from the past and\ndownloads ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"}),", and ",(0,i.jsx)(n.code,{children:"receipts"})," downwards all the way to ",(0,i.jsx)(n.code,{children:"genesis block"}),". All blocks from 0 to\nthe ",(0,i.jsx)(n.code,{children:"pivot block"})," are showed as ",(0,i.jsx)(n.code,{children:"Old Headers"})," in the ",(0,i.jsx)(n.code,{children:"fast blocks sync"})," logs. The console display shows the number\ngrowing from 0 to pivot, but this is just to make the display more user-friendly."]}),"\n",(0,i.jsx)(n.p,{children:"You will see some information about the sync progress, like below:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Shows the number of already downloaded ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," under the name ",(0,i.jsx)(n.code,{children:"Downloaded"})," out of all to\nbe downloaded in the fast blocks stage."]}),"\n",(0,i.jsxs)(n.li,{children:["Shows the current queue of already downloaded ",(0,i.jsx)(n.code,{children:"blocks"}),", ",(0,i.jsx)(n.code,{children:"headers"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," waiting for being saved to the\ndatabase."]}),"\n",(0,i.jsx)(n.li,{children:"Shows the current download speed (blocks per second - bps)."}),"\n",(0,i.jsx)(n.li,{children:"Shows the average download speed (blocks per second - bps)."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast blocks sync logs",src:s(8973).A+"",width:"1219",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["When the fast blocks stage finishes, there will be some period of downloading blocks between the ",(0,i.jsx)(n.code,{children:"pivot"})," and\nthe",(0,i.jsx)(n.code,{children:"latest blocks"})," which will have some additional info:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Shows the last entry from the fast blocks stage."}),"\n",(0,i.jsx)(n.li,{children:"Shows the mode transition moment."}),"\n",(0,i.jsxs)(n.li,{children:["Displays the speed (in blocks per second) of all ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," at the same time."]}),"\n",(0,i.jsx)(n.li,{children:"Additional info will appear every 30000 blocks with information about the G\xf6rli epoch being stored."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli fast sync logs",src:s(245).A+"",width:"1528",height:"643"})}),"\n",(0,i.jsxs)(n.p,{children:["After the ",(0,i.jsx)(n.code,{children:"fast sync"})," part finished, the node will transition to the ",(0,i.jsx)(n.code,{children:"state sync stage"})," when the ",(0,i.jsx)(n.code,{children:"state trie"})," is being\ndownloaded. Much information is displayed about the progress, as this process may take a long time on mainnet (a few\nhours)."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Total elapsed time in ",(0,i.jsx)(n.code,{children:"state sync"})," is displayed."]}),"\n",(0,i.jsx)(n.li,{children:"The total percentage of downloaded DB size is displayed (on mainnet the sync finishes around 34GB in March 2020, on\nG\xf6rli around 800MB)."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"branches"})," stands for the percentage of downloaded branches."]}),"\n",(0,i.jsx)(n.li,{children:"Download speed in kilobytes per second is displayed."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"accounts"})," stands for the number of accounts data downloaded already."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"nodes"})," stands for the number of ",(0,i.jsx)(n.code,{children:"Patricia trie nodes"})," downloaded by the sync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"diagnostic"})," shows the time spent in the DB write / read access. The higher the value, the worse. It may get much\nworse if you restart the node during the sync process, as we need to recreate some caches then by reading data from\nthe DB."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli state sync logs",src:s(9378).A+"",width:"1528",height:"742"})}),"\n",(0,i.jsxs)(n.p,{children:["When the state sync is nearing completion, you may see a series of ",(0,i.jsx)(n.code,{children:"branch sync"})," information reloading many times from\n0% to nearly 100%. This is the node trying to retrieve the few remaining state nodes and progressing with the head block\nrapidly:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli branch sync logs",src:s(1548).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["At some point, the entire state is downloaded and the node enters the ",(0,i.jsx)(n.code,{children:"full sync"})," mode and will allow you to issue CLI /\nWeb3 queries and send / receive transactions\ud83e\udd73"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.code,{children:"root"})," is saved at the moment when the entire ",(0,i.jsx)(n.code,{children:"Patricia trie"})," is downloaded."]}),"\n",(0,i.jsxs)(n.li,{children:["We also clearly state that the node transitions to the ",(0,i.jsx)(n.code,{children:"full sync"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["When you see the block being processed, then you are in the ",(0,i.jsx)(n.code,{children:"full sync"})," and the newly arrived block is being\ncalculated."]}),"\n",(0,i.jsx)(n.li,{children:"Every two minutes you will see a summary of connected peers with their client version, IP address, highest synced\nblock, and data download speeds."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli full sync logs",src:s(3035).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsx)(n.p,{children:"Also, every now and then, a peer report will appear like below:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(4922).A+"",width:"2560",height:"1337"})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["First bracket is for Allocated contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsxs)(n.li,{children:["Second bracket is for Sleeping contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsx)(n.li,{children:"Third bracket contains Peer Info."}),"\n",(0,i.jsxs)(n.li,{children:["Fourth bracket is for Speeds as Follows:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Latency"}),"\n",(0,i.jsx)(n.li,{children:"Headers Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Bodies Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Receipts Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Node Data Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Snap Ranges Transfer"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},4922:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png"},1548:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png"},245:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png"},9378:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png"},3035:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png"},8973:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png"},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>t});var i=s(6540);const r={},o=i.createContext(r);function d(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b5e67d0e.66bdf246.js b/assets/js/b5e67d0e.929e57f3.js similarity index 99% rename from assets/js/b5e67d0e.66bdf246.js rename to assets/js/b5e67d0e.929e57f3.js index a5053d37b..b1623dfef 100644 --- a/assets/js/b5e67d0e.66bdf246.js +++ b/assets/js/b5e67d0e.929e57f3.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8957],{5997:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var i=s(4848),t=s(8453),r=s(1470),l=s(9365);const d={title:"Sync",sidebar_position:2},o=void 0,a={id:"fundamentals/sync",title:"Sync",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.25.4/fundamentals/sync.md",sourceDirName:"fundamentals",slug:"/fundamentals/sync",permalink:"/1.25.4/fundamentals/sync",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/sync.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Sync",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/1.25.4/fundamentals/configuration"},next:{title:"Security",permalink:"/1.25.4/fundamentals/security"}},c={},h=[{value:"There are three main synchronization modes",id:"there-are-three-main-synchronization-modes",level:2},{value:"Snap Sync",id:"snap-sync",level:2},{value:"How to Enable",id:"how-to-enable",level:4},{value:"Snap Sync vs Other Sync Modes",id:"snap-sync-vs-other-sync-modes",level:4},{value:"Current limitations and future development",id:"current-limitations-and-future-development",level:4},{value:"Fast Sync",id:"fast-sync",level:2},{value:"Archive Sync",id:"archive-sync",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Resync a node from scratch",id:"resync-a-node-from-scratch",level:2},{value:"Steps to Resync a Nethermind Node",id:"steps-to-resync-a-nethermind-node",level:3}];function u(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"there-are-three-main-synchronization-modes",children:"There are three main synchronization modes"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["snap sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"the fastest way to sync to the network (syncs to mainnet in ~3 hours)"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["fast sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"slower than snap sync"}),"\n",(0,i.jsx)(n.li,{children:"useful on nethermind-only chains (like Gnosis), where snap sync is not available for now"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["archive sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"heavy historical sync verifying all the transactions and keeping all the historical state"}),"\n",(0,i.jsxs)(n.li,{children:["you can run it like this ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Sync Mode"}),(0,i.jsx)(n.th,{children:"Disk Space needed"}),(0,i.jsx)(n.th,{children:"Full current state"}),(0,i.jsx)(n.th,{children:"Full current and all historical states"}),(0,i.jsx)(n.th,{children:"Can sync a full archive node from this"}),(0,i.jsx)(n.th,{children:"Time to sync"}),(0,i.jsx)(n.th,{children:"Time to RPC"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"archive"}),(0,i.jsx)(n.td,{children:"~12TB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~3 weeks"}),(0,i.jsx)(n.td,{children:"~3 weeks"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync with all bodies and receipts"}),(0,i.jsx)(n.td,{children:"~800GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~20 hours"}),(0,i.jsx)(n.td,{children:"~20 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"default snap/fast sync (with barriers set to support Eth2)"}),(0,i.jsx)(n.td,{children:"~500GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~11 hours"}),(0,i.jsx)(n.td,{children:"~11 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without receipts"}),(0,i.jsx)(n.td,{children:"~450GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~12 hours"}),(0,i.jsx)(n.td,{children:"~12 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without bodies and receipts"}),(0,i.jsx)(n.td,{children:"~200GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~9 hours"}),(0,i.jsx)(n.td,{children:"~9 hours"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"snap-sync",children:"Snap Sync"}),"\n",(0,i.jsx)(n.p,{children:"Snap sync allows a node to perform the initial synchronization and download of Ethereum\u2019s state up to 10 times faster\nthan using fast sync."}),"\n",(0,i.jsx)(n.h4,{id:"how-to-enable",children:"How to Enable"}),"\n",(0,i.jsxs)(n.p,{children:["Snap sync is enabled by default for majority of networks. To make sure, check if",(0,i.jsx)(n.code,{children:"SnapSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"})," in the Sync\nmodule of your ",(0,i.jsx)(n.code,{children:".cfg"})," file"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true\n}\n'})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not enable snap sync on a previously synced node. Only use when syncing to the network for the first\ntime."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not remove other configurations from Sync module. Just add ",(0,i.jsx)(n.code,{children:'"SnapSync": true'}),", e.g."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true,\n\t"PivotNumber": 15011000,\n "PivotHash": "0x46c838d02d5fa5bc070080ed7965da1d888f6eb1797045365407c7011280af56",\n \t"PivotTotalDifficulty": "52367203434576253689712",\n \t"FastBlocks": true\n}\n'})}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"snap-sync-vs-other-sync-modes",children:"Snap Sync vs Other Sync Modes"}),"\n",(0,i.jsx)(n.p,{children:"More than 12TB of storage is needed today to run a full archive node \u2014 one that stores all the state since genesis.\nBecause of that, setting up an archive node can take days or even weeks. Fast Sync can still take more than 24 hours on\nthe fast machine and download about 90GB state data. With Snap Sync, sync time is reduced to 2-3h with a download of\nabout 30GB."}),"\n",(0,i.jsx)(n.p,{children:"This reduction in sync time and download size has to do with the specific way in which Ethereum\u2019s state is stored in a\nnode: Merkle trees."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(5330).A+"",width:"1168",height:"939"})}),"\n",(0,i.jsx)(n.p,{children:"With Fast Sync, a node downloads the headers of each block and retrieves all the nodes beneath it until it reaches the\nleaves. By contrast, Snap Sync only downloads the leaf nodes, generating the remaining nodes locally which saves time\nand packets downloaded."}),"\n",(0,i.jsx)(n.h4,{id:"current-limitations-and-future-development",children:"Current limitations and future development"}),"\n",(0,i.jsx)(n.p,{children:"For now Snap Sync on the Nethermind client can only download the Ethereum state but not serve it to other clients - snap\nserving development is in progress, expected late 2023/early 2024."}),"\n",(0,i.jsx)(n.p,{children:"The only Ethereum client that supports serving Snap Sync requests is Geth, so only networks supported by Geth can be\nsynced using that method: Mainnet, Goerli, Sepolia."}),"\n",(0,i.jsx)(n.h2,{id:"fast-sync",children:"Fast Sync"}),"\n",(0,i.jsxs)(n.p,{children:["After completing the fast sync your node will have the ability to answer questions like ",(0,i.jsxs)(n.em,{children:["'what is my account\nbalance ",(0,i.jsx)(n.strong,{children:"now"}),"'"]}),", ",(0,i.jsxs)(n.em,{children:["'how many XYZ tokens SomeExchange holds ",(0,i.jsx)(n.strong,{children:"at the moment"}),"'"]}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Fast sync has multiple stages. Nethermind uses a ",(0,i.jsx)(n.code,{children:"pivot block"})," number to improve fast sync performance.\nThe ",(0,i.jsx)(n.code,{children:"pivot block"})," data is automatically updated after initialization of the client and consists of\nthe ",(0,i.jsx)(n.code,{children:"block number"}),", ",(0,i.jsx)(n.code,{children:"block hash"})," and ",(0,i.jsx)(n.code,{children:"block total difficulty"})," (please note that ",(0,i.jsx)(n.code,{children:"total difficulty"})," is different\nthan ",(0,i.jsx)(n.code,{children:"difficulty"}),"). Before synchronizing state data Nethermind synchronizes in two directions - backwards\nfrom ",(0,i.jsx)(n.code,{children:"pivot block"})," to 0 for headers and forward to the head of the chain for headers, blocks and receipts. Forward sync\nmight be very slow (5 - 50 bps) so having fresh pivot block is very important - it is guaranteed by recently implemented\nauto-update."]}),"\n",(0,i.jsx)(n.p,{children:"After downloading the block data Nethermind will start state sync (downloading the latest state trie nodes). We are\nproviding an estimate for the download size and progress but the real value may be different than the estimate (\nespecially if you are using an old version of Nethermind as we sometimes manually adjust the estimator based on our\nobservations of the chain growth rate). Because of this sometimes your sync may continue even when it shows ~100%\nfinished. The other important component is the speed of your sync - if your IO / network / file system causes the state\nsync to go much slower than around 1.5MB per second on average then you will start downloading some parts of the trie\nover and over again. In such cases you may be surprised to see something like 58000MB / 53000MB (100%). It means that\nyou downloaded around 5GB of data that is no longer needed. If your sync is very slow (extended beyond two days) then\nvery likely your setup cannot catch up with the chain progress."}),"\n",(0,i.jsxs)(n.p,{children:["After the state sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," messages like in archive sync - it means that your node\nis in sync and is processing the latest blocks."]}),"\n",(0,i.jsx)(n.p,{children:"Mainnet sync, at the time of writing (December 2020), takes around 8 hours on an UpCloud 16GB RAM 8 CPU $40 VM (and then\nsyncs receipts and bodies in the background if you enabled them in the configuration). Goerli sync should take around 40\nminutes."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast sync logs example for mainnet.",src:s(7017).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsxs)(n.p,{children:["State sync log messages have multiple values displayed. First ",(0,i.jsx)(n.code,{children:"dd.HH:mm:ss"})," total state sync time is displayed, followed\nby an estimated sync progress (percentage of total database data synced), then the current download speed is displayed (\nthere will be times when it will slow down to 0 or single digit numbers, especially towards the end of the sync). In\ngeneral 6 hours sync times shown on screenshots are with around 2000 kB/s (kilobytes per second) average sync rate. You\ncan calculate it in the example as ~45GB / (2MB/s) ~ 22500 seconds ~6.25 hours. We also display the number of state\naccounts synced, number of trie nodes synced and a diagnostic message in the format of ",(0,i.jsx)(n.em,{children:"[number_of_pending_requests]\n.[average time spent in response handler displayed as milliseconds]"}),". So ",(0,i.jsx)(n.code,{children:"5.6.20ms"})," means that we are awaiting for\nresponses to 5 requests that have been sent to peers and the average time it takes us to process a single response is\n6.20ms. The response handling times will differ depending on how many trie nodes are already cached (so they will be\nsignificantly slower for a while after the node restart when cache has to be rebuilt) and based on how fast the database\nIO is (SSD vs NVMe vs cloud drives). For a reasonable sync time you probably should expect these values to be below\n15ms (but they may be as high as 700ms for a while after restarting the node)."]}),"\n",(0,i.jsx)(n.p,{children:"A single restart of the node during the fast sync may extend the sync time by up to two hours because the node has to\nrebuild the caches by reading millions of values from the database."}),"\n",(0,i.jsx)(n.p,{children:"At the last stages of the sync the node will be repeatedly displaying the branch sync progress and changing the block\nnumber to which it tries to catch up. This stage should take between 30 minutes and two hours. If it lasts much more\nthen it is possible that you will not be able to catch up with the network progress."}),"\n",(0,i.jsx)(n.p,{children:"One of the best indicators that you are close to be synced is combined ~100% state size progress and nearly 100% branch\nsync progress."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(2725).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(3203).A+"",width:"1895",height:"795"})}),"\n",(0,i.jsx)(n.h2,{id:"archive-sync",children:"Archive Sync"}),"\n",(0,i.jsxs)(n.p,{children:["Archive sync is the 'heaviest' and slowest sync mode but allows to ask questions like ",(0,i.jsx)(n.em,{children:"'what was the balance of my\naccount 2 years ago?'"}),", ",(0,i.jsx)(n.em,{children:"'how many XYZ token were held in SomeExchange custody in 2017?'"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["We have prepared default archive sync configurations and they can be launched from Nethermind Launcher (just choose the\narchive options) or by simply loading appropriate config when launching ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config goerli_archive"})}),"\n",(0,i.jsx)(n.p,{children:"While for some smaller networks archive sync can complete very quickly (in minutes or hours) mainnet sync would take 2 -\n6 weeks depending on the speed of your IO (whether you use SSD or NVMe or depending on the cloud provider IOPS).\nDatabase size in archive sync is the biggest from all modes as you will store all the historical data."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Example of the archive sync logs",src:s(4466).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(9175).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:"Explanation of some data in the logs:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["at the beginning you may see a ",(0,i.jsx)(n.em,{children:"'Waiting for peers...'"})," message while the node is trying to discover nodes that it can\nsync with."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Downloaded 1234/8000000'"})," shows the number of unprocessed blocks (with transactions) downloaded from the network.\nFor ",(0,i.jsx)(n.code,{children:"mainnet"}),"this value may be slower than processing at first but very quickly you will see blocks being downloaded\nmuch faster than processed. Empty blocks can be as small as 512 bytes (just headers without transactions) and full\nblocks with heavy transactions can reach a few hundred kilobytes. We display both current download speed (calculated\nin the last second) and average (total) speed since starting the node."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Processed ...'"})," displays the blocks that have been processed by the EVM. The first number shows the current head\nblock number, then you can see ",(0,i.jsx)(n.code,{children:"mgasps"})," (million gas per second) - current and total, then ",(0,i.jsx)(n.code,{children:"tps"})," (transactions per\nsecond) - current and total, ",(0,i.jsx)(n.code,{children:"bps"})," (blocks per second). Then ",(0,i.jsx)(n.code,{children:"recv queue"})," (transactions signature public key recovery\nqueue), ",(0,i.jsx)(n.code,{children:"proc queue"})," (processor queue). Both recovery queue and processor queue are designed so when too many blocks\nare waiting for processing then only their hashes are kept in memory and remaining data are stored in the database.\nThus, the queues numbers that you can see will be capped by some number."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Cache for epoch...'"})," informs about ",(0,i.jsx)(n.code,{children:"ethash"})," cache needed for block seal verification (only on ",(0,i.jsx)(n.code,{children:"mainnet"}),"\nand ",(0,i.jsx)(n.code,{children:"ropsten"}),"). Caches will be calculated every 30000 blocks (length of an epoch) but can also be calculated for the\nlatest blocks that are being broadcast on the network."]}),"\n",(0,i.jsxs)(n.li,{children:["After the archive sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," message appearing on average every 15 seconds when\nthe new block is processed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mgasps"}),", ",(0,i.jsx)(n.code,{children:"tps"}),", ",(0,i.jsx)(n.code,{children:"bps"})," values should not be treated as comparable as they may differ massively on different parts of\nthe chain. For example when blocks are empty you may see very high ",(0,i.jsx)(n.code,{children:"bps"})," values with very low (or even zero) ",(0,i.jsx)(n.code,{children:"tps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," values as there are no transactions and no gas for EVM processing and blocks are very light. On the other\nhand when blocks are filled with very heavy transactions then ",(0,i.jsx)(n.code,{children:"bps"})," might be very low while ",(0,i.jsx)(n.code,{children:"mgasps"})," will be very\nhigh. It is even possible that you will see a lot of very light transactions where ",(0,i.jsx)(n.code,{children:"tps"})," will be high while ",(0,i.jsx)(n.code,{children:"bps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," will be average."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,i.jsx)(n.p,{children:"Sync time heavily depends on the hardware used for the node, network speed, and peering. We are constantly pursuing to make it as fast as possible. Below is a brief on how the sync time looks on different machines and various chains (tested with Nethermind v1.21.0)."}),"\n",(0,i.jsxs)(r.A,{children:[(0,i.jsxs)(l.A,{value:"highend-vm",label:"High-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Akamai (formerly Linode)"}),"\n",(0,i.jsx)(n.li,{children:"CPU: AMD EPYC 7601, 16 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 64 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1.2 TB, ~40k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 7h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 58m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 2m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 5m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 21m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 22m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 17m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 46m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 31m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 10m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"midend-vm",label:"Mid-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: AWS"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/c7g/",children:"c7g.2xlarge"}),": 8 vCPU, 16 GiB memory"]}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~10k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 12h 37m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 35m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1h 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 43m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 2h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 4h 28m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 10m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 23m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 35m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 17m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 29m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 18h 28m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 52m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 25m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 5m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"oldspec-vm",label:"Old-spec VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Scaleway"}),"\n",(0,i.jsx)(n.li,{children:"CPU: Intel Xeon Processor E5-2620 v2, 2 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 192 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~44k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 1m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 29m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 25m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 3h 39m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 8h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 5h 55m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 34m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 14m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 16m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 2h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 26m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 45m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 56m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 30m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 3h 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 25m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"energyweb",label:"Energy Web",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 7m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 15h 20m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"volta",label:"Volta",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 14h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 42m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 16h 10m"]}),"\n"]})]})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"resync-a-node-from-scratch",children:"Resync a node from scratch"}),"\n",(0,i.jsx)(n.p,{children:"This guide explains how to resync a Nethermind node using the existing Pivot block or updating it to a more recent one."}),"\n",(0,i.jsx)(n.h3,{id:"steps-to-resync-a-nethermind-node",children:"Steps to Resync a Nethermind Node"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Stop the Nethermind node"}),": If your Nethermind node is currently running, stop it to ensure that no new data is\nbeing written to the database during the resync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Delete the existing database"}),": Navigate to the Nethermind data directory. The location of this directory depends\non how Nethermind was installed and your configuration settings. Inside the data directory, find the ",(0,i.jsx)(n.code,{children:"nethermind_db"}),"\nfolder and delete the ",(0,i.jsx)(n.code,{children:"mainnet"})," subfolder to remove the existing database for the mainnet."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the configuration file (optional)"}),": If you want to change any configuration settings before resyncing the\nnode, edit the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file located in the Nethermind directory. For example, you might want to adjust the\npruning settings or specify a different network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the Pivot block (optional)"}),"\\","\n",(0,i.jsx)(n.admonition,{type:"danger",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Only for versions before 1.19.0 where Auto-Pivot approach was introduced"})})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Etherscan"}),": If you want to speed up the syncing process, you can update the Pivot block to a more recent\none. To do this, find the ",(0,i.jsx)(n.code,{children:"Sync"})," section in the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file and update the ",(0,i.jsx)(n.code,{children:"PivotNumber"})," and ",(0,i.jsx)(n.code,{children:"PivotHash"}),'\nfields to match a recent "finalized" block number and its corresponding hash. You can obtain this information from\na block explorer such as ',(0,i.jsx)(n.a,{href:"https://etherscan.io/",children:"Etherscan"}),".",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.br,{}),"\n","Using block number 17165278 from ",(0,i.jsx)(n.a,{href:"https://etherscan.io/block/17165278",children:"Etherscan"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:' { \n \t "PivotNumber": 17165278,\n \t "PivotHash": "0xa665315efd923f3b11215feee09a9d3e13c5e6ee602fa19b642824682ec0a752"\n }\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Nethermind's GitHub"}),": Alternatively, you can update the Pivot block by referring to\nthe ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:"Nethermind's mainnet.cfg file on GitHub"}),".\nThe Pivot block is periodically bumped to the HEAD-8192 block of the mainnet chain. Copy the ",(0,i.jsx)(n.code,{children:"PivotNumber"}),"\nand ",(0,i.jsx)(n.code,{children:"PivotHash"})," values from the GitHub file and update your local ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file accordingly."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Restart the Nethermind node"}),": Start the Nethermind node again to initiate the resync process. The node will begin\nsyncing from the existing Pivot block or the specified updated Pivot block, downloading and processing all the blocks\nin the blockchain."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To ensure that your Nethermind node is resyncing, you can monitor the logs for the node's progress. The logs will\ndisplay information about the block processing, synchronization status and ",(0,i.jsx)(n.code,{children:"OldHeaders"})," being processed. By observing\nthe increasing block numbers and synchronization messages in the logs, you can confirm that the resync process is active\nand working as expected."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Old Headers 0 / 17154000 | queue 0 | current 0.00bps | total 0.00bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 768 / 17154000 | queue 0 | current 766.07bps | total 762.49bps"}),"\n",(0,i.jsx)(n.p,{children:"Beacon Headers from block 17154001 to block 17169722 | 960 / 15722 | queue 4992 | current 0.00bps | total\n40622848.83bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 9024 / 17154000 | queue 0 | current 576.40bps | total 1286.40bps"}),"\n",(0,i.jsxs)(n.p,{children:["Beacon Headers from block 17154001 to block 17169723 | 9024 / 15723 | queue 6698 | current 2694.81bps | total\n3882943.63bps",(0,i.jsx)(n.br,{}),"\n","Downloaded 17154031 / 17172359 | current 0.00bps | total 0.00bps"]}),"\n",(0,i.jsx)(n.p,{children:"Downloaded 17154062 / 17169724 | current 0.00bps | total 2.88bps"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Keep in mind that resyncing a Nethermind node can take a considerable amount of time. It depends on your hardware,\ninternet connection, and the size of the blockchain."})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var i=s(4164);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>w});var i=s(6540),t=s(4164),r=s(3104),l=s(6347),d=s(205),o=s(7485),a=s(1682),c=s(679);function h(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:i,default:t}}=e;return{value:n,label:s,attributes:i,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,o.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=u(e),[l,o]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=s.find((e=>e.default))??s[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[a,h]=j({queryString:s,groupId:t}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,c.Dv)(s);return[t,(0,i.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),g=(()=>{const e=a??m;return x({value:e,tabValues:r})?e:null})();(0,d.A)((()=>{g&&o(g)}),[g]);return{selectedValue:l,selectValue:(0,i.useCallback)((e=>{if(!x({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),h(e),p(e)}),[h,p,r]),tabValues:r}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function b(e){let{className:n,block:s,selectedValue:i,selectValue:l,tabValues:d}=e;const o=[],{blockElementScrollPositionUntilNextRender:a}=(0,r.a_)(),c=e=>{const n=e.currentTarget,s=o.indexOf(n),t=d[s].value;t!==i&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const s=o.indexOf(e.currentTarget)+1;n=o[s]??o[0];break}case"ArrowLeft":{const s=o.indexOf(e.currentTarget)-1;n=o[s]??o[o.length-1];break}}n?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>o.push(e),onKeyDown:h,onClick:c,...r,className:(0,t.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":i===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:r}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=m(e);return(0,y.jsxs)("div",{className:(0,t.A)("tabs-container",g.tabList),children:[(0,y.jsx)(b,{...n,...e}),(0,y.jsx)(f,{...n,...e})]})}function w(e){const n=(0,p.A)();return(0,y.jsx)(v,{...e,children:h(e.children)},String(n))}},5330:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png"},9175:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png"},4466:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png"},7017:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png"},3203:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png"},2725:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png"},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var i=s(6540);const t={},r=i.createContext(t);function l(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8957],{5997:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var i=s(4848),t=s(8453),r=s(1470),l=s(9365);const d={title:"Sync",sidebar_position:2},o=void 0,a={id:"fundamentals/sync",title:"Sync",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.25.4/fundamentals/sync.md",sourceDirName:"fundamentals",slug:"/fundamentals/sync",permalink:"/1.25.4/fundamentals/sync",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/sync.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Sync",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/1.25.4/fundamentals/configuration"},next:{title:"Security",permalink:"/1.25.4/fundamentals/security"}},c={},h=[{value:"There are three main synchronization modes",id:"there-are-three-main-synchronization-modes",level:2},{value:"Snap Sync",id:"snap-sync",level:2},{value:"How to Enable",id:"how-to-enable",level:4},{value:"Snap Sync vs Other Sync Modes",id:"snap-sync-vs-other-sync-modes",level:4},{value:"Current limitations and future development",id:"current-limitations-and-future-development",level:4},{value:"Fast Sync",id:"fast-sync",level:2},{value:"Archive Sync",id:"archive-sync",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Resync a node from scratch",id:"resync-a-node-from-scratch",level:2},{value:"Steps to Resync a Nethermind Node",id:"steps-to-resync-a-nethermind-node",level:3}];function u(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"there-are-three-main-synchronization-modes",children:"There are three main synchronization modes"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["snap sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"the fastest way to sync to the network (syncs to mainnet in ~3 hours)"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["fast sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"slower than snap sync"}),"\n",(0,i.jsx)(n.li,{children:"useful on nethermind-only chains (like Gnosis), where snap sync is not available for now"}),"\n",(0,i.jsx)(n.li,{children:"downloads only the latest state, headers, and optionally bodies and receipts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["archive sync","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"heavy historical sync verifying all the transactions and keeping all the historical state"}),"\n",(0,i.jsxs)(n.li,{children:["you can run it like this ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Sync Mode"}),(0,i.jsx)(n.th,{children:"Disk Space needed"}),(0,i.jsx)(n.th,{children:"Full current state"}),(0,i.jsx)(n.th,{children:"Full current and all historical states"}),(0,i.jsx)(n.th,{children:"Can sync a full archive node from this"}),(0,i.jsx)(n.th,{children:"Time to sync"}),(0,i.jsx)(n.th,{children:"Time to RPC"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"archive"}),(0,i.jsx)(n.td,{children:"~12TB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~3 weeks"}),(0,i.jsx)(n.td,{children:"~3 weeks"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync with all bodies and receipts"}),(0,i.jsx)(n.td,{children:"~800GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~20 hours"}),(0,i.jsx)(n.td,{children:"~20 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"default snap/fast sync (with barriers set to support Eth2)"}),(0,i.jsx)(n.td,{children:"~500GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~11 hours"}),(0,i.jsx)(n.td,{children:"~11 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without receipts"}),(0,i.jsx)(n.td,{children:"~450GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"~12 hours"}),(0,i.jsx)(n.td,{children:"~12 hours"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"snap/fast sync without bodies and receipts"}),(0,i.jsx)(n.td,{children:"~200GB"}),(0,i.jsx)(n.td,{children:"YES"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"NO"}),(0,i.jsx)(n.td,{children:"~9 hours"}),(0,i.jsx)(n.td,{children:"~9 hours"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"snap-sync",children:"Snap Sync"}),"\n",(0,i.jsx)(n.p,{children:"Snap sync allows a node to perform the initial synchronization and download of Ethereum\u2019s state up to 10 times faster\nthan using fast sync."}),"\n",(0,i.jsx)(n.h4,{id:"how-to-enable",children:"How to Enable"}),"\n",(0,i.jsxs)(n.p,{children:["Snap sync is enabled by default for majority of networks. To make sure, check if",(0,i.jsx)(n.code,{children:"SnapSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"})," in the Sync\nmodule of your ",(0,i.jsx)(n.code,{children:".cfg"})," file"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true\n}\n'})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not enable snap sync on a previously synced node. Only use when syncing to the network for the first\ntime."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"IMPORTANT"}),": Do not remove other configurations from Sync module. Just add ",(0,i.jsx)(n.code,{children:'"SnapSync": true'}),", e.g."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"Sync": {\n\t"SnapSync": true,\n\t"PivotNumber": 15011000,\n "PivotHash": "0x46c838d02d5fa5bc070080ed7965da1d888f6eb1797045365407c7011280af56",\n \t"PivotTotalDifficulty": "52367203434576253689712",\n \t"FastBlocks": true\n}\n'})}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"snap-sync-vs-other-sync-modes",children:"Snap Sync vs Other Sync Modes"}),"\n",(0,i.jsx)(n.p,{children:"More than 12TB of storage is needed today to run a full archive node \u2014 one that stores all the state since genesis.\nBecause of that, setting up an archive node can take days or even weeks. Fast Sync can still take more than 24 hours on\nthe fast machine and download about 90GB state data. With Snap Sync, sync time is reduced to 2-3h with a download of\nabout 30GB."}),"\n",(0,i.jsx)(n.p,{children:"This reduction in sync time and download size has to do with the specific way in which Ethereum\u2019s state is stored in a\nnode: Merkle trees."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(5330).A+"",width:"1168",height:"939"})}),"\n",(0,i.jsx)(n.p,{children:"With Fast Sync, a node downloads the headers of each block and retrieves all the nodes beneath it until it reaches the\nleaves. By contrast, Snap Sync only downloads the leaf nodes, generating the remaining nodes locally which saves time\nand packets downloaded."}),"\n",(0,i.jsx)(n.h4,{id:"current-limitations-and-future-development",children:"Current limitations and future development"}),"\n",(0,i.jsx)(n.p,{children:"For now Snap Sync on the Nethermind client can only download the Ethereum state but not serve it to other clients - snap\nserving development is in progress, expected late 2023/early 2024."}),"\n",(0,i.jsx)(n.p,{children:"The only Ethereum client that supports serving Snap Sync requests is Geth, so only networks supported by Geth can be\nsynced using that method: Mainnet, Goerli, Sepolia."}),"\n",(0,i.jsx)(n.h2,{id:"fast-sync",children:"Fast Sync"}),"\n",(0,i.jsxs)(n.p,{children:["After completing the fast sync your node will have the ability to answer questions like ",(0,i.jsxs)(n.em,{children:["'what is my account\nbalance ",(0,i.jsx)(n.strong,{children:"now"}),"'"]}),", ",(0,i.jsxs)(n.em,{children:["'how many XYZ tokens SomeExchange holds ",(0,i.jsx)(n.strong,{children:"at the moment"}),"'"]}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Fast sync has multiple stages. Nethermind uses a ",(0,i.jsx)(n.code,{children:"pivot block"})," number to improve fast sync performance.\nThe ",(0,i.jsx)(n.code,{children:"pivot block"})," data is automatically updated after initialization of the client and consists of\nthe ",(0,i.jsx)(n.code,{children:"block number"}),", ",(0,i.jsx)(n.code,{children:"block hash"})," and ",(0,i.jsx)(n.code,{children:"block total difficulty"})," (please note that ",(0,i.jsx)(n.code,{children:"total difficulty"})," is different\nthan ",(0,i.jsx)(n.code,{children:"difficulty"}),"). Before synchronizing state data Nethermind synchronizes in two directions - backwards\nfrom ",(0,i.jsx)(n.code,{children:"pivot block"})," to 0 for headers and forward to the head of the chain for headers, blocks and receipts. Forward sync\nmight be very slow (5 - 50 bps) so having fresh pivot block is very important - it is guaranteed by recently implemented\nauto-update."]}),"\n",(0,i.jsx)(n.p,{children:"After downloading the block data Nethermind will start state sync (downloading the latest state trie nodes). We are\nproviding an estimate for the download size and progress but the real value may be different than the estimate (\nespecially if you are using an old version of Nethermind as we sometimes manually adjust the estimator based on our\nobservations of the chain growth rate). Because of this sometimes your sync may continue even when it shows ~100%\nfinished. The other important component is the speed of your sync - if your IO / network / file system causes the state\nsync to go much slower than around 1.5MB per second on average then you will start downloading some parts of the trie\nover and over again. In such cases you may be surprised to see something like 58000MB / 53000MB (100%). It means that\nyou downloaded around 5GB of data that is no longer needed. If your sync is very slow (extended beyond two days) then\nvery likely your setup cannot catch up with the chain progress."}),"\n",(0,i.jsxs)(n.p,{children:["After the state sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," messages like in archive sync - it means that your node\nis in sync and is processing the latest blocks."]}),"\n",(0,i.jsx)(n.p,{children:"Mainnet sync, at the time of writing (December 2020), takes around 8 hours on an UpCloud 16GB RAM 8 CPU $40 VM (and then\nsyncs receipts and bodies in the background if you enabled them in the configuration). Goerli sync should take around 40\nminutes."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast sync logs example for mainnet.",src:s(7017).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsxs)(n.p,{children:["State sync log messages have multiple values displayed. First ",(0,i.jsx)(n.code,{children:"dd.HH:mm:ss"})," total state sync time is displayed, followed\nby an estimated sync progress (percentage of total database data synced), then the current download speed is displayed (\nthere will be times when it will slow down to 0 or single digit numbers, especially towards the end of the sync). In\ngeneral 6 hours sync times shown on screenshots are with around 2000 kB/s (kilobytes per second) average sync rate. You\ncan calculate it in the example as ~45GB / (2MB/s) ~ 22500 seconds ~6.25 hours. We also display the number of state\naccounts synced, number of trie nodes synced and a diagnostic message in the format of ",(0,i.jsx)(n.em,{children:"[number_of_pending_requests]\n.[average time spent in response handler displayed as milliseconds]"}),". So ",(0,i.jsx)(n.code,{children:"5.6.20ms"})," means that we are awaiting for\nresponses to 5 requests that have been sent to peers and the average time it takes us to process a single response is\n6.20ms. The response handling times will differ depending on how many trie nodes are already cached (so they will be\nsignificantly slower for a while after the node restart when cache has to be rebuilt) and based on how fast the database\nIO is (SSD vs NVMe vs cloud drives). For a reasonable sync time you probably should expect these values to be below\n15ms (but they may be as high as 700ms for a while after restarting the node)."]}),"\n",(0,i.jsx)(n.p,{children:"A single restart of the node during the fast sync may extend the sync time by up to two hours because the node has to\nrebuild the caches by reading millions of values from the database."}),"\n",(0,i.jsx)(n.p,{children:"At the last stages of the sync the node will be repeatedly displaying the branch sync progress and changing the block\nnumber to which it tries to catch up. This stage should take between 30 minutes and two hours. If it lasts much more\nthen it is possible that you will not be able to catch up with the network progress."}),"\n",(0,i.jsx)(n.p,{children:"One of the best indicators that you are close to be synced is combined ~100% state size progress and nearly 100% branch\nsync progress."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(2725).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(3203).A+"",width:"1895",height:"795"})}),"\n",(0,i.jsx)(n.h2,{id:"archive-sync",children:"Archive Sync"}),"\n",(0,i.jsxs)(n.p,{children:["Archive sync is the 'heaviest' and slowest sync mode but allows to ask questions like ",(0,i.jsx)(n.em,{children:"'what was the balance of my\naccount 2 years ago?'"}),", ",(0,i.jsx)(n.em,{children:"'how many XYZ token were held in SomeExchange custody in 2017?'"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["We have prepared default archive sync configurations and they can be launched from Nethermind Launcher (just choose the\narchive options) or by simply loading appropriate config when launching ",(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config mainnet_archive"})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"./Nethermind.Runner --config goerli_archive"})}),"\n",(0,i.jsx)(n.p,{children:"While for some smaller networks archive sync can complete very quickly (in minutes or hours) mainnet sync would take 2 -\n6 weeks depending on the speed of your IO (whether you use SSD or NVMe or depending on the cloud provider IOPS).\nDatabase size in archive sync is the biggest from all modes as you will store all the historical data."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Example of the archive sync logs",src:s(4466).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(9175).A+"",width:"1920",height:"1030"})}),"\n",(0,i.jsx)(n.p,{children:"Explanation of some data in the logs:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["at the beginning you may see a ",(0,i.jsx)(n.em,{children:"'Waiting for peers...'"})," message while the node is trying to discover nodes that it can\nsync with."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Downloaded 1234/8000000'"})," shows the number of unprocessed blocks (with transactions) downloaded from the network.\nFor ",(0,i.jsx)(n.code,{children:"mainnet"}),"this value may be slower than processing at first but very quickly you will see blocks being downloaded\nmuch faster than processed. Empty blocks can be as small as 512 bytes (just headers without transactions) and full\nblocks with heavy transactions can reach a few hundred kilobytes. We display both current download speed (calculated\nin the last second) and average (total) speed since starting the node."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Processed ...'"})," displays the blocks that have been processed by the EVM. The first number shows the current head\nblock number, then you can see ",(0,i.jsx)(n.code,{children:"mgasps"})," (million gas per second) - current and total, then ",(0,i.jsx)(n.code,{children:"tps"})," (transactions per\nsecond) - current and total, ",(0,i.jsx)(n.code,{children:"bps"})," (blocks per second). Then ",(0,i.jsx)(n.code,{children:"recv queue"})," (transactions signature public key recovery\nqueue), ",(0,i.jsx)(n.code,{children:"proc queue"})," (processor queue). Both recovery queue and processor queue are designed so when too many blocks\nare waiting for processing then only their hashes are kept in memory and remaining data are stored in the database.\nThus, the queues numbers that you can see will be capped by some number."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"'Cache for epoch...'"})," informs about ",(0,i.jsx)(n.code,{children:"ethash"})," cache needed for block seal verification (only on ",(0,i.jsx)(n.code,{children:"mainnet"}),"\nand ",(0,i.jsx)(n.code,{children:"ropsten"}),"). Caches will be calculated every 30000 blocks (length of an epoch) but can also be calculated for the\nlatest blocks that are being broadcast on the network."]}),"\n",(0,i.jsxs)(n.li,{children:["After the archive sync finishes you will see the ",(0,i.jsx)(n.em,{children:"'Processed...'"})," message appearing on average every 15 seconds when\nthe new block is processed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mgasps"}),", ",(0,i.jsx)(n.code,{children:"tps"}),", ",(0,i.jsx)(n.code,{children:"bps"})," values should not be treated as comparable as they may differ massively on different parts of\nthe chain. For example when blocks are empty you may see very high ",(0,i.jsx)(n.code,{children:"bps"})," values with very low (or even zero) ",(0,i.jsx)(n.code,{children:"tps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," values as there are no transactions and no gas for EVM processing and blocks are very light. On the other\nhand when blocks are filled with very heavy transactions then ",(0,i.jsx)(n.code,{children:"bps"})," might be very low while ",(0,i.jsx)(n.code,{children:"mgasps"})," will be very\nhigh. It is even possible that you will see a lot of very light transactions where ",(0,i.jsx)(n.code,{children:"tps"})," will be high while ",(0,i.jsx)(n.code,{children:"bps"}),"\nand ",(0,i.jsx)(n.code,{children:"mgasps"})," will be average."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,i.jsx)(n.p,{children:"Sync time heavily depends on the hardware used for the node, network speed, and peering. We are constantly pursuing to make it as fast as possible. Below is a brief on how the sync time looks on different machines and various chains (tested with Nethermind v1.21.0)."}),"\n",(0,i.jsxs)(r.A,{children:[(0,i.jsxs)(l.A,{value:"highend-vm",label:"High-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Akamai (formerly Linode)"}),"\n",(0,i.jsx)(n.li,{children:"CPU: AMD EPYC 7601, 16 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 64 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1.2 TB, ~40k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 7h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 58m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 2h 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 2m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 5m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 0.3m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 21m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 22m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 17m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 46m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 31m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 10m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"midend-vm",label:"Mid-end VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: AWS"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/c7g/",children:"c7g.2xlarge"}),": 8 vCPU, 16 GiB memory"]}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~10k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 12h 37m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 35m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1h 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 43m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 2h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 4h 28m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 4h 10m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 23m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 49m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 35m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 17m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 1h 3m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 19m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 29m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 18h 28m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 54m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 52m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 25m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 12m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 5m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 5m"]}),"\n"]})]})]})]}),(0,i.jsxs)(l.A,{value:"oldspec-vm",label:"Old-spec VM",children:[(0,i.jsx)(n.p,{children:"Hardware configuration:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cloud provider: Scaleway"}),"\n",(0,i.jsx)(n.li,{children:"CPU: Intel Xeon Processor E5-2620 v2, 2 vCPU"}),"\n",(0,i.jsx)(n.li,{children:"Memory: 192 GB"}),"\n",(0,i.jsx)(n.li,{children:"Storage: 1 TB, ~44k IOPS"}),"\n"]}),(0,i.jsxs)(r.A,{groupId:"network",children:[(0,i.jsxs)(l.A,{value:"mainnet",label:"Mainnet",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 5h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 1m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 4h 29m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 25m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 3h 39m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 8h 3m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"goerli",label:"Goerli",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 1h 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 5h 55m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 1h 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 34m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 2h 14m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"sepolia",label:"Sepolia",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 16m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 2h 9m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Snap sync phase 1:"})," 15m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 1m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 26m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 45m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 56m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"gnosis",label:"Gnosis",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 17h 30m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 15h 13m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 3h 8m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 50m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 25m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"chiado",label:"Chiado",children:[(0,i.jsx)(n.p,{children:"The high-level data on major sync milestones:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attestation time:"})," 20m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 40m"]}),"\n"]}),(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 4m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 1h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 1h 55m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 3h 2m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"energyweb",label:"Energy Web",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 13h 7m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 32m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 51m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 1h 11m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 15h 20m"]}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"volta",label:"Volta",children:[(0,i.jsx)(n.p,{children:"The detailed breakdown of sync stages:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"State sync:"})," 14h 27m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old headers:"})," 2h 42m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old bodies:"})," 40m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Old receipts:"})," 58m"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full sync time:"})," 16h 10m"]}),"\n"]})]})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"resync-a-node-from-scratch",children:"Resync a node from scratch"}),"\n",(0,i.jsx)(n.p,{children:"This guide explains how to resync a Nethermind node using the existing Pivot block or updating it to a more recent one."}),"\n",(0,i.jsx)(n.h3,{id:"steps-to-resync-a-nethermind-node",children:"Steps to Resync a Nethermind Node"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Stop the Nethermind node"}),": If your Nethermind node is currently running, stop it to ensure that no new data is\nbeing written to the database during the resync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Delete the existing database"}),": Navigate to the Nethermind data directory. The location of this directory depends\non how Nethermind was installed and your configuration settings. Inside the data directory, find the ",(0,i.jsx)(n.code,{children:"nethermind_db"}),"\nfolder and delete the ",(0,i.jsx)(n.code,{children:"mainnet"})," subfolder to remove the existing database for the mainnet."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the configuration file (optional)"}),": If you want to change any configuration settings before resyncing the\nnode, edit the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file located in the Nethermind directory. For example, you might want to adjust the\npruning settings or specify a different network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update the Pivot block (optional)"}),"\\","\n",(0,i.jsx)(n.admonition,{type:"danger",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Only for versions before 1.19.0 where Auto-Pivot approach was introduced"})})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Etherscan"}),": If you want to speed up the syncing process, you can update the Pivot block to a more recent\none. To do this, find the ",(0,i.jsx)(n.code,{children:"Sync"})," section in the ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file and update the ",(0,i.jsx)(n.code,{children:"PivotNumber"})," and ",(0,i.jsx)(n.code,{children:"PivotHash"}),'\nfields to match a recent "finalized" block number and its corresponding hash. You can obtain this information from\na block explorer such as ',(0,i.jsx)(n.a,{href:"https://etherscan.io/",children:"Etherscan"}),".",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.br,{}),"\n","Using block number 17165278 from ",(0,i.jsx)(n.a,{href:"https://etherscan.io/block/17165278",children:"Etherscan"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:' { \n \t "PivotNumber": 17165278,\n \t "PivotHash": "0xa665315efd923f3b11215feee09a9d3e13c5e6ee602fa19b642824682ec0a752"\n }\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Using Nethermind's GitHub"}),": Alternatively, you can update the Pivot block by referring to\nthe ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:"Nethermind's mainnet.cfg file on GitHub"}),".\nThe Pivot block is periodically bumped to the HEAD-8192 block of the mainnet chain. Copy the ",(0,i.jsx)(n.code,{children:"PivotNumber"}),"\nand ",(0,i.jsx)(n.code,{children:"PivotHash"})," values from the GitHub file and update your local ",(0,i.jsx)(n.code,{children:"mainnet.cfg"})," file accordingly."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Restart the Nethermind node"}),": Start the Nethermind node again to initiate the resync process. The node will begin\nsyncing from the existing Pivot block or the specified updated Pivot block, downloading and processing all the blocks\nin the blockchain."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["To ensure that your Nethermind node is resyncing, you can monitor the logs for the node's progress. The logs will\ndisplay information about the block processing, synchronization status and ",(0,i.jsx)(n.code,{children:"OldHeaders"})," being processed. By observing\nthe increasing block numbers and synchronization messages in the logs, you can confirm that the resync process is active\nand working as expected."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Old Headers 0 / 17154000 | queue 0 | current 0.00bps | total 0.00bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 768 / 17154000 | queue 0 | current 766.07bps | total 762.49bps"}),"\n",(0,i.jsx)(n.p,{children:"Beacon Headers from block 17154001 to block 17169722 | 960 / 15722 | queue 4992 | current 0.00bps | total\n40622848.83bps"}),"\n",(0,i.jsx)(n.p,{children:"Old Headers 9024 / 17154000 | queue 0 | current 576.40bps | total 1286.40bps"}),"\n",(0,i.jsxs)(n.p,{children:["Beacon Headers from block 17154001 to block 17169723 | 9024 / 15723 | queue 6698 | current 2694.81bps | total\n3882943.63bps",(0,i.jsx)(n.br,{}),"\n","Downloaded 17154031 / 17172359 | current 0.00bps | total 0.00bps"]}),"\n",(0,i.jsx)(n.p,{children:"Downloaded 17154062 / 17169724 | current 0.00bps | total 2.88bps"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Keep in mind that resyncing a Nethermind node can take a considerable amount of time. It depends on your hardware,\ninternet connection, and the size of the blockchain."})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var i=s(4164);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>w});var i=s(6540),t=s(4164),r=s(3104),l=s(6347),d=s(205),o=s(7485),a=s(1682),c=s(679);function h(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:i,default:t}}=e;return{value:n,label:s,attributes:i,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,o.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=u(e),[l,o]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=s.find((e=>e.default))??s[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[a,h]=j({queryString:s,groupId:t}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,c.Dv)(s);return[t,(0,i.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),g=(()=>{const e=a??m;return x({value:e,tabValues:r})?e:null})();(0,d.A)((()=>{g&&o(g)}),[g]);return{selectedValue:l,selectValue:(0,i.useCallback)((e=>{if(!x({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),h(e),p(e)}),[h,p,r]),tabValues:r}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function b(e){let{className:n,block:s,selectedValue:i,selectValue:l,tabValues:d}=e;const o=[],{blockElementScrollPositionUntilNextRender:a}=(0,r.a_)(),c=e=>{const n=e.currentTarget,s=o.indexOf(n),t=d[s].value;t!==i&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const s=o.indexOf(e.currentTarget)+1;n=o[s]??o[0];break}case"ArrowLeft":{const s=o.indexOf(e.currentTarget)-1;n=o[s]??o[o.length-1];break}}n?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>o.push(e),onKeyDown:h,onClick:c,...r,className:(0,t.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":i===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:r}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=m(e);return(0,y.jsxs)("div",{className:(0,t.A)("tabs-container",g.tabList),children:[(0,y.jsx)(b,{...n,...e}),(0,y.jsx)(f,{...n,...e})]})}function w(e){const n=(0,p.A)();return(0,y.jsx)(v,{...e,children:h(e.children)},String(n))}},5330:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png"},9175:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png"},4466:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png"},7017:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png"},3203:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png"},2725:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png"},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var i=s(6540);const t={},r=i.createContext(t);function l(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b72424ba.e5ace87a.js b/assets/js/b72424ba.6839802b.js similarity index 99% rename from assets/js/b72424ba.e5ace87a.js rename to assets/js/b72424ba.6839802b.js index 1672119df..187cb1abe 100644 --- a/assets/js/b72424ba.e5ace87a.js +++ b/assets/js/b72424ba.6839802b.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4909],{4694:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>o,toc:()=>d});var i=s(4848),r=s(8453);const t={title:"Validators",sidebar_position:0},a=void 0,o={id:"validators/validators",title:"Validators",description:"General considerations",source:"@site/versioned_docs/version-1.27.0/validators/validators.md",sourceDirName:"validators",slug:"/validators/",permalink:"/1.27.0/validators/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/validators/validators.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Health check",permalink:"/1.27.0/monitoring/health-check"},next:{title:"Aura-based validators",permalink:"/1.27.0/validators/aura"}},l={},d=[{value:"General considerations",id:"general-considerations",level:2},{value:"Hardware configurations",id:"hardware-configurations",level:2},{value:"On-premises",id:"on-premises",level:3},{value:"AWS",id:"aws",level:3},{value:"Azure",id:"azure",level:3},{value:"GCP",id:"gcp",level:3},{value:"Gnosis validators",id:"gnosis-validators",level:2}];function c(e){const n={a:"a",admonition:"admonition",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"general-considerations",children:"General considerations"}),"\n",(0,i.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,i.jsxs)(n.p,{children:["Please check out the ",(0,i.jsx)(n.a,{href:"/1.27.0/fundamentals/security",children:"security considerations"})," before using Nethermind as a validator."]})}),"\n",(0,i.jsxs)(n.p,{children:["For Ethereum validators, we highly recommend checking out ",(0,i.jsx)(n.a,{href:"https://ethereum.org/staking",children:"Staking with Ethereum"})," and ",(0,i.jsx)(n.a,{href:"https://launchpad.ethereum.org/en/checklist",children:"Validator checklist"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"hardware-configurations",children:"Hardware configurations"}),"\n",(0,i.jsx)(n.p,{children:"The following hardware configurations for Ethereum Mainnet validators have been battle-tested by us and our users. We have observed excellent validator performance and stability with these configurations."}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Before setting up your infrastructure, check out ",(0,i.jsx)(n.a,{href:"/1.27.0/get-started/system-requirements#hardware-requirements",children:"Nethermind hardware requirements"}),"."]})}),"\n",(0,i.jsx)(n.h3,{id:"on-premises",children:"On-premises"}),"\n",(0,i.jsx)(n.p,{children:"A single validator on Intel NUC 11:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"CPU: Intel Core i7-1165G7"}),"\n",(0,i.jsx)(n.li,{children:"Memory: Crucial 32GB DDR4-3200 SODIMM"}),"\n",(0,i.jsx)(n.li,{children:"Storage: Samsung 980 PRO PCIe NVMe SSD 2TB"}),"\n",(0,i.jsx)(n.li,{children:"Internet speed: 620 Mbps download, 160 Mbps upload"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"aws",children:"AWS"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following EC2 instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m6i/",children:"m6i.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m7g/",children:"m7g.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/t4/",children:"t4g.small"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"azure",children:"Azure"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following VM instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dv5-dsv5-series#dv5-series",children:"Standard_D8_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dpsv5-dpdsv5-series#dpsv5-series",children:"Standard_D8ps_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dplsv5-dpldsv5-series#dplsv5-series",children:"Standard_D2pls_v5"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"gcp",children:"GCP"}),"\n",(0,i.jsxs)(n.p,{children:["Multiple validators on the ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/compute-optimized-machines#c2d-high-mem",children:"c2d-highmem-4"})," instance: 4 vCPU, 32 GB memory"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/general-purpose-machines#sharedcore",children:"e2-small"})," instances."]}),"\n",(0,i.jsx)(n.h2,{id:"gnosis-validators",children:"Gnosis validators"}),"\n",(0,i.jsxs)(n.p,{children:["To set up a Gnosis Chain validator, see the ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node",children:"Gnosis Chain documentation"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>o});var i=s(6540);const r={},t=i.createContext(r);function a(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4909],{4694:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>o,toc:()=>d});var i=s(4848),r=s(8453);const t={title:"Validators",sidebar_position:0},a=void 0,o={id:"validators/validators",title:"Validators",description:"General considerations",source:"@site/versioned_docs/version-1.27.0/validators/validators.md",sourceDirName:"validators",slug:"/validators/",permalink:"/1.27.0/validators/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/validators/validators.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Health check",permalink:"/1.27.0/monitoring/health-check"},next:{title:"Aura-based validators",permalink:"/1.27.0/validators/aura"}},l={},d=[{value:"General considerations",id:"general-considerations",level:2},{value:"Hardware configurations",id:"hardware-configurations",level:2},{value:"On-premises",id:"on-premises",level:3},{value:"AWS",id:"aws",level:3},{value:"Azure",id:"azure",level:3},{value:"GCP",id:"gcp",level:3},{value:"Gnosis validators",id:"gnosis-validators",level:2}];function c(e){const n={a:"a",admonition:"admonition",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"general-considerations",children:"General considerations"}),"\n",(0,i.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,i.jsxs)(n.p,{children:["Please check out the ",(0,i.jsx)(n.a,{href:"/1.27.0/fundamentals/security",children:"security considerations"})," before using Nethermind as a validator."]})}),"\n",(0,i.jsxs)(n.p,{children:["For Ethereum validators, we highly recommend checking out ",(0,i.jsx)(n.a,{href:"https://ethereum.org/staking",children:"Staking with Ethereum"})," and ",(0,i.jsx)(n.a,{href:"https://launchpad.ethereum.org/en/checklist",children:"Validator checklist"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"hardware-configurations",children:"Hardware configurations"}),"\n",(0,i.jsx)(n.p,{children:"The following hardware configurations for Ethereum Mainnet validators have been battle-tested by us and our users. We have observed excellent validator performance and stability with these configurations."}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Before setting up your infrastructure, check out ",(0,i.jsx)(n.a,{href:"/1.27.0/get-started/system-requirements#hardware-requirements",children:"Nethermind hardware requirements"}),"."]})}),"\n",(0,i.jsx)(n.h3,{id:"on-premises",children:"On-premises"}),"\n",(0,i.jsx)(n.p,{children:"A single validator on Intel NUC 11:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"CPU: Intel Core i7-1165G7"}),"\n",(0,i.jsx)(n.li,{children:"Memory: Crucial 32GB DDR4-3200 SODIMM"}),"\n",(0,i.jsx)(n.li,{children:"Storage: Samsung 980 PRO PCIe NVMe SSD 2TB"}),"\n",(0,i.jsx)(n.li,{children:"Internet speed: 620 Mbps download, 160 Mbps upload"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"aws",children:"AWS"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following EC2 instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m6i/",children:"m6i.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/m7g/",children:"m7g.2xlarge"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/t4/",children:"t4g.small"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"azure",children:"Azure"}),"\n",(0,i.jsx)(n.p,{children:"Multiple validators on the following VM instances:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dv5-dsv5-series#dv5-series",children:"Standard_D8_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dpsv5-dpdsv5-series#dpsv5-series",children:"Standard_D8ps_v5"}),": 8 vCPU, 32 GiB memory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/virtual-machines/dplsv5-dpldsv5-series#dplsv5-series",children:"Standard_D2pls_v5"})," instances."]}),"\n",(0,i.jsx)(n.h3,{id:"gcp",children:"GCP"}),"\n",(0,i.jsxs)(n.p,{children:["Multiple validators on the ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/compute-optimized-machines#c2d-high-mem",children:"c2d-highmem-4"})," instance: 4 vCPU, 32 GB memory"]}),"\n",(0,i.jsxs)(n.p,{children:["These configurations have proven to work well for 1000-1500 validators and haven't been tested for more validators. Also, the validator clients have been separated from the consensus and execution clients and running on ",(0,i.jsx)(n.a,{href:"https://cloud.google.com/compute/docs/general-purpose-machines#sharedcore",children:"e2-small"})," instances."]}),"\n",(0,i.jsx)(n.h2,{id:"gnosis-validators",children:"Gnosis validators"}),"\n",(0,i.jsxs)(n.p,{children:["To set up a Gnosis Chain validator, see the ",(0,i.jsx)(n.a,{href:"https://docs.gnosischain.com/node",children:"Gnosis Chain documentation"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>o});var i=s(6540);const r={},t=i.createContext(r);function a(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b87be7cc.4fce1efb.js b/assets/js/b87be7cc.fce4ec2c.js similarity index 99% rename from assets/js/b87be7cc.4fce1efb.js rename to assets/js/b87be7cc.fce4ec2c.js index b4497a0ed..b038ec57c 100644 --- a/assets/js/b87be7cc.4fce1efb.js +++ b/assets/js/b87be7cc.fce4ec2c.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3544],{397:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>t});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"trace namespace",sidebar_label:"trace",sidebar_position:8},h=void 0,x={id:"interacting/json-rpc-ns/trace",title:"trace namespace",description:"trace_block",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/trace.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/trace",permalink:"/1.26.0/interacting/json-rpc-ns/trace",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/trace.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"trace namespace",sidebar_label:"trace",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"proof",permalink:"/1.26.0/interacting/json-rpc-ns/proof"},next:{title:"txpool",permalink:"/1.26.0/interacting/json-rpc-ns/txpool"}},j={},t=[{value:"trace_block",id:"trace_block",level:3},{value:"trace_call",id:"trace_call",level:3},{value:"trace_filter",id:"trace_filter",level:3},{value:"trace_rawTransaction",id:"trace_rawtransaction",level:3},{value:"trace_replayBlockTransactions",id:"trace_replayblocktransactions",level:3},{value:"trace_replayTransaction",id:"trace_replaytransaction",level:3},{value:"trace_transaction",id:"trace_transaction",level:3}];function a(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"trace_block",children:"trace_block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"numberOrTag"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_block",\n "params": [numberOrTag]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_call",children:"trace_call"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"call"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_call",\n "params": [call, traceTypes, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_filter",children:"trace_filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceFilterForRpc"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"count"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_filter",\n "params": [traceFilterForRpc]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_rawtransaction",children:"trace_rawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Traces a call to eth_sendRawTransaction without making the call, returning the traces"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_rawTransaction",\n "params": [data, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replayblocktransactions",children:"trace_replayBlockTransactions"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayBlockTransactions",\n "params": [blockParameter, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replaytransaction",children:"trace_replayTransaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayTransaction",\n "params": [txHash, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_transaction",children:"trace_transaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_transaction",\n "params": [txHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>T});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),j=s(679);function t(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function a(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function g(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=a(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,t]=m({queryString:s,groupId:i}),[g,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,j.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??g;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),t(e),u(e)}),[t,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},t=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:t,onClick:j,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=g(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function T(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:t(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3544],{397:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>t});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"trace namespace",sidebar_label:"trace",sidebar_position:8},h=void 0,x={id:"interacting/json-rpc-ns/trace",title:"trace namespace",description:"trace_block",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/trace.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/trace",permalink:"/1.26.0/interacting/json-rpc-ns/trace",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/trace.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"trace namespace",sidebar_label:"trace",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"proof",permalink:"/1.26.0/interacting/json-rpc-ns/proof"},next:{title:"txpool",permalink:"/1.26.0/interacting/json-rpc-ns/txpool"}},j={},t=[{value:"trace_block",id:"trace_block",level:3},{value:"trace_call",id:"trace_call",level:3},{value:"trace_filter",id:"trace_filter",level:3},{value:"trace_rawTransaction",id:"trace_rawtransaction",level:3},{value:"trace_replayBlockTransactions",id:"trace_replayblocktransactions",level:3},{value:"trace_replayTransaction",id:"trace_replaytransaction",level:3},{value:"trace_transaction",id:"trace_transaction",level:3}];function a(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"trace_block",children:"trace_block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"numberOrTag"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_block",\n "params": [numberOrTag]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_call",children:"trace_call"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"call"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_call",\n "params": [call, traceTypes, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_filter",children:"trace_filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceFilterForRpc"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"count"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_filter",\n "params": [traceFilterForRpc]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_rawtransaction",children:"trace_rawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Traces a call to eth_sendRawTransaction without making the call, returning the traces"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_rawTransaction",\n "params": [data, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replayblocktransactions",children:"trace_replayBlockTransactions"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayBlockTransactions",\n "params": [blockParameter, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replaytransaction",children:"trace_replayTransaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayTransaction",\n "params": [txHash, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_transaction",children:"trace_transaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_transaction",\n "params": [txHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>T});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),j=s(679);function t(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function a(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function g(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=a(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,t]=m({queryString:s,groupId:i}),[g,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,j.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??g;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),t(e),u(e)}),[t,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},t=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:t,onClick:j,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=g(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function T(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:t(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b9c601eb.15ea9555.js b/assets/js/b9c601eb.36a580e7.js similarity index 99% rename from assets/js/b9c601eb.15ea9555.js rename to assets/js/b9c601eb.36a580e7.js index 96e20255f..451245d13 100644 --- a/assets/js/b9c601eb.15ea9555.js +++ b/assets/js/b9c601eb.36a580e7.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5419],{9419:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>l,frontMatter:()=>i,metadata:()=>c,toc:()=>h});var s=t(4848),o=t(8453);const i={title:"Consensus clients",sidebar_position:1},r=void 0,c={id:"get-started/running-node/consensus-clients",title:"Consensus clients",description:"Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.",source:"@site/docs/get-started/running-node/consensus-clients.md",sourceDirName:"get-started/running-node",slug:"/get-started/running-node/consensus-clients",permalink:"/next/get-started/running-node/consensus-clients",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/get-started/running-node/consensus-clients.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Consensus clients",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Running a node",permalink:"/next/get-started/running-node/"},next:{title:"Layer 2 networks",permalink:"/next/get-started/running-node/l2-networks"}},a={},h=[{value:"Choosing a consensus client",id:"choosing-a-consensus-client",level:2},{value:"Configuring JSON-RPC interface",id:"configuring-json-rpc-interface",level:2},{value:"Running the consensus client",id:"running-the-consensus-client",level:2},{value:"Grandine",id:"grandine",level:3},{value:"Lighthouse",id:"lighthouse",level:3},{value:"Lodestar",id:"lodestar",level:3},{value:"Nimbus",id:"nimbus",level:3},{value:"Prysm",id:"prysm",level:3},{value:"Teku",id:"teku",level:3},{value:"Running Nethermind",id:"running-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/roadmap/merge/",children:"The Merge"})," happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.\nThe Merge changed how operators run nodes on the Ethereum blockchain. A node now needs two clients that work together as a pair. In addition to the ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#execution-client",children:"execution client"})," (e.g., Nethermind), you need a ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#consensus-client",children:"consensus client"})," that connects to the consensus layer and runs the PoS algorithm. This guide shows how to run an Ethereum node with Nethermind and a consensus client of your choice."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["An easy way to run both consensus and execution clients is with ",(0,s.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"}),". Sedge is a setup tool for PoS validators and nodes that runs on Linux and macOS."]})}),"\n",(0,s.jsx)(n.h2,{id:"choosing-a-consensus-client",children:"Choosing a consensus client"}),"\n",(0,s.jsx)(n.p,{children:"On the consensus layer, there are 5 client implementations to choose from. Though all consensus clients are great, check them out yourself to find the one best suited to your needs."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku"})}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.p,{children:["We urge you to take ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/client-diversity",children:"client diversity"})," into consideration when choosing your consensus client and avoid the majority clients."]})}),"\n",(0,s.jsx)(n.h2,{id:"configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"\n",(0,s.jsxs)(n.p,{children:["Execution and consensus clients communicate via an authenticated endpoint specified in Engine JSON-RPC API. In order to connect to a consensus client, the execution client must generate a ",(0,s.jsx)(n.a,{href:"https://jwt.io",children:"JWT"})," secret at a known path. Although the secret is generated automatically by Nethermind on startup at ",(0,s.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory, in some cases, you might need to do it yourself. You can generate one using ",(0,s.jsx)(n.a,{href:"https://www.openssl.org",children:"OpenSSL"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"openssl rand -hex 32 > path/to/jwt.hex\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"Since the JWT secret is simply a 64-character hex value, there are many other ways of generating it, including online resources. However, for security reasons, we recommend using OpenSSL."})}),"\n",(0,s.jsxs)(n.p,{children:["The generated JWT secret can be specified with the ",(0,s.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option. For more configuration options, see ",(0,s.jsx)(n.a,{href:"/next/interacting/json-rpc-server#engine-api",children:"Engine API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-the-consensus-client",children:"Running the consensus client"}),"\n",(0,s.jsxs)(n.p,{children:["This step assumes that you have already ",(0,s.jsx)(n.a,{href:"/next/get-started/installing-nethermind",children:"installed"})," Nethermind, the ",(0,s.jsx)(n.a,{href:"#choosing-a-consensus-client",children:"consensus client"})," of your choice, and, optionally, created the ",(0,s.jsx)(n.a,{href:"#configuring-json-rpc-interface",children:"JWT secret"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["As syncing from the scratch can take a very long time on some networks (up to several days), the commands below optionally use ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/#checkpoint-sync",children:"checkpoint sync"})," to speed up the process."]})}),"\n",(0,s.jsx)(n.h3,{id:"grandine",children:"Grandine"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"grandine \\\n --network mainnet \\\n --eth1-rpc-urls http://localhost:8551 \\\n --jwt-secret path/to/jwt.hex \\\n --checkpoint-sync-url https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Grandine on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lighthouse",children:"Lighthouse"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lighthouse bn \\\n --network mainnet \\\n --execution-endpoint http://localhost:8551 \\\n --execution-jwt path/to/jwt.hex \\\n --checkpoint-sync-url https://mainnet.checkpoint.sigp.io \\\n --http\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lighthouse on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lodestar",children:"Lodestar"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lodestar beacon \\\n --network mainnet \\\n --jwt-secret path/to/jwt.hex \\\n --checkpointSyncUrl https://beaconstate-mainnet.chainsafe.io\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lodestar on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpointSyncUrl"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"nimbus",children:"Nimbus"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./run-mainnet-beacon-node.sh \\\n --web3-url=http://127.0.0.1:8551 \\\n --jwt-secret=path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Numbus on Mainnet without checkpoint sync. For checkpoint sync, see ",(0,s.jsx)(n.a,{href:"https://nimbus.guide/trusted-node-sync.html",children:"Sync from a trusted node"}),". For other networks, see the ",(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus documentation"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"prysm",children:"Prysm"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./prysm.sh beacon-chain \\\n --mainnet \\\n --execution-endpoint=http://localhost:8551 \\\n --jwt-secret=path/to/jwt.hex \\\n --checkpoint-sync-url=https://beaconstate.ethstaker.cc \\\n --genesis-beacon-api-url=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Prysm on Mainnet. For other networks, replace the ",(0,s.jsx)(n.code,{children:"--mainnet"})," and set ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," and ",(0,s.jsx)(n.code,{children:"--genesis-beacon-api-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"teku",children:"Teku"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"teku \\\n --network=mainnet \\\n --ee-endpoint=http://localhost:8551 \\\n --ee-jwt-secret-file=path/to/jwt.hex \\\n --metrics-enabled=true \\\n --rest-api-enabled=true \\\n --initial-state=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Teku on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--initial-state"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-nethermind",children:"Running Nethermind"}),"\n",(0,s.jsxs)(n.p,{children:["Once your consensus client is up and running, you can start Nethermind with the ",(0,s.jsx)(n.em,{children:"same"})," JWT secret provided to the consensus client:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For more info about running a node with Nethermind, see ",(0,s.jsx)(n.a,{href:"/next/get-started/running-node/",children:"Running a node"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(6540);const o={},i=s.createContext(o);function r(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5419],{9419:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>l,frontMatter:()=>i,metadata:()=>c,toc:()=>h});var s=t(4848),o=t(8453);const i={title:"Consensus clients",sidebar_position:1},r=void 0,c={id:"get-started/running-node/consensus-clients",title:"Consensus clients",description:"Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.",source:"@site/docs/get-started/running-node/consensus-clients.md",sourceDirName:"get-started/running-node",slug:"/get-started/running-node/consensus-clients",permalink:"/next/get-started/running-node/consensus-clients",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/get-started/running-node/consensus-clients.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Consensus clients",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Running a node",permalink:"/next/get-started/running-node/"},next:{title:"Layer 2 networks",permalink:"/next/get-started/running-node/l2-networks"}},a={},h=[{value:"Choosing a consensus client",id:"choosing-a-consensus-client",level:2},{value:"Configuring JSON-RPC interface",id:"configuring-json-rpc-interface",level:2},{value:"Running the consensus client",id:"running-the-consensus-client",level:2},{value:"Grandine",id:"grandine",level:3},{value:"Lighthouse",id:"lighthouse",level:3},{value:"Lodestar",id:"lodestar",level:3},{value:"Nimbus",id:"nimbus",level:3},{value:"Prysm",id:"prysm",level:3},{value:"Teku",id:"teku",level:3},{value:"Running Nethermind",id:"running-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/roadmap/merge/",children:"The Merge"})," happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.\nThe Merge changed how operators run nodes on the Ethereum blockchain. A node now needs two clients that work together as a pair. In addition to the ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#execution-client",children:"execution client"})," (e.g., Nethermind), you need a ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#consensus-client",children:"consensus client"})," that connects to the consensus layer and runs the PoS algorithm. This guide shows how to run an Ethereum node with Nethermind and a consensus client of your choice."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["An easy way to run both consensus and execution clients is with ",(0,s.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"}),". Sedge is a setup tool for PoS validators and nodes that runs on Linux and macOS."]})}),"\n",(0,s.jsx)(n.h2,{id:"choosing-a-consensus-client",children:"Choosing a consensus client"}),"\n",(0,s.jsx)(n.p,{children:"On the consensus layer, there are 5 client implementations to choose from. Though all consensus clients are great, check them out yourself to find the one best suited to your needs."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku"})}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.p,{children:["We urge you to take ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/client-diversity",children:"client diversity"})," into consideration when choosing your consensus client and avoid the majority clients."]})}),"\n",(0,s.jsx)(n.h2,{id:"configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"\n",(0,s.jsxs)(n.p,{children:["Execution and consensus clients communicate via an authenticated endpoint specified in Engine JSON-RPC API. In order to connect to a consensus client, the execution client must generate a ",(0,s.jsx)(n.a,{href:"https://jwt.io",children:"JWT"})," secret at a known path. Although the secret is generated automatically by Nethermind on startup at ",(0,s.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory, in some cases, you might need to do it yourself. You can generate one using ",(0,s.jsx)(n.a,{href:"https://www.openssl.org",children:"OpenSSL"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"openssl rand -hex 32 > path/to/jwt.hex\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"Since the JWT secret is simply a 64-character hex value, there are many other ways of generating it, including online resources. However, for security reasons, we recommend using OpenSSL."})}),"\n",(0,s.jsxs)(n.p,{children:["The generated JWT secret can be specified with the ",(0,s.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option. For more configuration options, see ",(0,s.jsx)(n.a,{href:"/next/interacting/json-rpc-server#engine-api",children:"Engine API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-the-consensus-client",children:"Running the consensus client"}),"\n",(0,s.jsxs)(n.p,{children:["This step assumes that you have already ",(0,s.jsx)(n.a,{href:"/next/get-started/installing-nethermind",children:"installed"})," Nethermind, the ",(0,s.jsx)(n.a,{href:"#choosing-a-consensus-client",children:"consensus client"})," of your choice, and, optionally, created the ",(0,s.jsx)(n.a,{href:"#configuring-json-rpc-interface",children:"JWT secret"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["As syncing from the scratch can take a very long time on some networks (up to several days), the commands below optionally use ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/#checkpoint-sync",children:"checkpoint sync"})," to speed up the process."]})}),"\n",(0,s.jsx)(n.h3,{id:"grandine",children:"Grandine"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"grandine \\\n --network mainnet \\\n --eth1-rpc-urls http://localhost:8551 \\\n --jwt-secret path/to/jwt.hex \\\n --checkpoint-sync-url https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Grandine on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lighthouse",children:"Lighthouse"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lighthouse bn \\\n --network mainnet \\\n --execution-endpoint http://localhost:8551 \\\n --execution-jwt path/to/jwt.hex \\\n --checkpoint-sync-url https://mainnet.checkpoint.sigp.io \\\n --http\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lighthouse on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lodestar",children:"Lodestar"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lodestar beacon \\\n --network mainnet \\\n --jwt-secret path/to/jwt.hex \\\n --checkpointSyncUrl https://beaconstate-mainnet.chainsafe.io\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lodestar on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpointSyncUrl"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"nimbus",children:"Nimbus"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./run-mainnet-beacon-node.sh \\\n --web3-url=http://127.0.0.1:8551 \\\n --jwt-secret=path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Numbus on Mainnet without checkpoint sync. For checkpoint sync, see ",(0,s.jsx)(n.a,{href:"https://nimbus.guide/trusted-node-sync.html",children:"Sync from a trusted node"}),". For other networks, see the ",(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus documentation"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"prysm",children:"Prysm"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./prysm.sh beacon-chain \\\n --mainnet \\\n --execution-endpoint=http://localhost:8551 \\\n --jwt-secret=path/to/jwt.hex \\\n --checkpoint-sync-url=https://beaconstate.ethstaker.cc \\\n --genesis-beacon-api-url=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Prysm on Mainnet. For other networks, replace the ",(0,s.jsx)(n.code,{children:"--mainnet"})," and set ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," and ",(0,s.jsx)(n.code,{children:"--genesis-beacon-api-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"teku",children:"Teku"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"teku \\\n --network=mainnet \\\n --ee-endpoint=http://localhost:8551 \\\n --ee-jwt-secret-file=path/to/jwt.hex \\\n --metrics-enabled=true \\\n --rest-api-enabled=true \\\n --initial-state=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Teku on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--initial-state"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-nethermind",children:"Running Nethermind"}),"\n",(0,s.jsxs)(n.p,{children:["Once your consensus client is up and running, you can start Nethermind with the ",(0,s.jsx)(n.em,{children:"same"})," JWT secret provided to the consensus client:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For more info about running a node with Nethermind, see ",(0,s.jsx)(n.a,{href:"/next/get-started/running-node/",children:"Running a node"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(6540);const o={},i=s.createContext(o);function r(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ba2a4595.8debbfc0.js b/assets/js/ba2a4595.5d880e5d.js similarity index 99% rename from assets/js/ba2a4595.8debbfc0.js rename to assets/js/ba2a4595.5d880e5d.js index fb6547bb8..b51b69b19 100644 --- a/assets/js/ba2a4595.8debbfc0.js +++ b/assets/js/ba2a4595.5d880e5d.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7104],{712:(n,e,s)=>{s.r(e),s.d(e,{assets:()=>h,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>l,toc:()=>t});var r=s(4848),i=s(8453);const d={title:"Metrics",sidebar_position:0,toc_max_heading_level:4},c=void 0,l={id:"monitoring/metrics/metrics",title:"Metrics",description:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:",source:"@site/versioned_docs/version-1.28.0/monitoring/metrics/metrics.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/",permalink:"/1.28.0/monitoring/metrics/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/monitoring/metrics/metrics.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Metrics",sidebar_position:0,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"web3",permalink:"/1.28.0/interacting/json-rpc-ns/web3"},next:{title:"Grafana and Prometheus",permalink:"/1.28.0/monitoring/metrics/grafana-and-prometheus"}},h={},t=[{value:"Parameters by namespace",id:"parameters-by-namespace",level:3},{value:"Aura",id:"aura",level:4},{value:"Blockchain",id:"blockchain",level:4},{value:"Db",id:"db",level:4},{value:"Evm",id:"evm",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"Merge",id:"merge",level:4},{value:"Network",id:"network",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Runner",id:"runner",level:4},{value:"Synchronization",id:"synchronization",level:4},{value:"Trie",id:"trie",level:4},{value:"TxPool",id:"txpool",level:4}];function o(n){const e={a:"a",code:"code",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...n.components},{Details:s}=e;return s||function(n,e){throw new Error("Expected "+(e?"component":"object")+" `"+n+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(e.p,{children:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/1.28.0/monitoring/metrics/grafana-and-prometheus",children:"Grafana and Prometheus"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/1.28.0/monitoring/metrics/dotnet-counters",children:"dotnet-counters"})}),"\n"]}),"\n",(0,r.jsx)(e.h3,{id:"parameters-by-namespace",children:"Parameters by namespace"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"aura",children:"Aura"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_au_ra_step"})})}),"\n",(0,r.jsx)(e.p,{children:"Current AuRa step"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_commit_hash_transaction"})})}),"\n",(0,r.jsx)(e.p,{children:"RANDAO number of commit hash transactions"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_emit_initiate_change"})})}),"\n",(0,r.jsx)(e.p,{children:"POSDAO number of emit init change transactions"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reported_benign_misbehaviour"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reported benign misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reported_malicious_misbehaviour"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reported malicious misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reveal_number"})})}),"\n",(0,r.jsx)(e.p,{children:"RANDAO number of reveal number transactions"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sealed_transactions"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of sealed transactions generated by engine"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_validators_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of current AuRa validators"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"blockchain",children:"Blockchain"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_best_known_block_number"})})}),"\n",(0,r.jsx)(e.p,{children:"The estimated highest block available."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blockchain_height"})})}),"\n",(0,r.jsx)(e.p,{children:"The current height of the canonical chain."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blocks"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of blocks processed"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blocks_sealed"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of sealed blocks"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_failed_block_seals"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of failed block seals"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_gas_limit"})})}),"\n",(0,r.jsx)(e.p,{children:"Gas Limit for processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_gas_used"})})}),"\n",(0,r.jsx)(e.p,{children:"Gas Used in processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_last_difficulty"})})}),"\n",(0,r.jsx)(e.p,{children:"Difficulty of the last block"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_mgas"})})}),"\n",(0,r.jsx)(e.p,{children:"Total MGas processed"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_mgas_per_sec"})})}),"\n",(0,r.jsx)(e.p,{children:"MGas processed per second"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_processing_queue_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blocks awaiting for processing."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_recovery_queue_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blocks awaiting for recovery of public keys from signatures."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reorganizations"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of chain reorganizations"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_total_difficulty"})})}),"\n",(0,r.jsx)(e.p,{children:"Total difficulty on the chain"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_transactions"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of transactions processed"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"db",children:"Db"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_code_db_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Code DB cache reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_block_cache_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database block cache size per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_compaction_stats"})})}),"\n",(0,r.jsx)(e.p,{children:"Metrics extracted from RocksDB Compaction Stats"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_index_filter_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database index and filter size per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_memtable_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database memtable per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Database reads per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database size per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_stats"})})}),"\n",(0,r.jsx)(e.p,{children:"Metrics extracted from RocksDB Compaction Stats and DB Statistics"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_writes"})})}),"\n",(0,r.jsx)(e.p,{children:"Database writes per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_db_pruning"})})}),"\n",(0,r.jsx)(e.p,{children:"Indicator if StadeDb is being pruned."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_reader_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Reader reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_tree_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Trie cache hits."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Trie reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_tree_writes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Blocks Trie writes."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_reader_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage reader reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_tree_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie cache hits."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_tree_writes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie writes."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_code_db_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Code DB cache reads on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_state_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Trie reads on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_storage_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie reads on thread."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"evm",children:"Evm"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blockhash_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BLOCKHASH opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_bn254_add_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BN254_ADD precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_bn254_mul_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BN254_MUL precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_bn254_pairing_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BN254_PAIRING precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls to other contracts."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_contracts_analysed"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contracts' code analysed for jump destinations."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_creates"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contract create calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_ec_recover_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of EC_RECOVERY precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_empty_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls made to addresses without code."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_evm_exceptions"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of EVM exceptions thrown by contracts."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_exp_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of EXP opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_m_copy_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of MCOPY opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_mod_exp_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of MODEXP precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_point_evaluation_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Point Evaluation precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_ripemd160_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of RIPEMD160 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_secp256r1_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Secp256r1 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_self_destructs"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SELFDESTRUCT calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sha256_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SHA256 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sload_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sstore_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SSTORE opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls to other contracts on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_contracts_analysed"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contracts' code analysed for jump destinations on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_creates"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contract create calls on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_empty_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls made to addresses without code on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_s_load_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SLOAD opcodes executed on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_s_store_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SSTORE opcodes executed on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tload_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of TLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tstore_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of TSTORE opcodes executed."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_bytes_received"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC bytes received."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_bytes_sent"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC bytes sent."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_errors"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests processed with errors."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_invalid_requests"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests that were invalid."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_request_deserialization_failures"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests that failed JSON deserialization."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_requests"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of JSON RPC requests received by the node."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_successes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests processed successfully."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"merge",children:"Merge"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_forkchoice_upded_execution_time"})})}),"\n",(0,r.jsx)(e.p,{children:"ForkchoiceUpded request execution time"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_get_payload_requests"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of GetPayload Requests"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_new_payload_execution_time"})})}),"\n",(0,r.jsx)(e.p,{children:"NewPayload request execution time"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_number_of_transactions_in_get_payload"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Transactions included in the Last GetPayload Request"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"network",children:"Network"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_handshakes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of devp2p handshakes"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_handshake_timeouts"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of devp2p handshake timeouts"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_incoming_connections"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of incoming connection."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_incoming_p2_p_message_bytes"})})}),"\n",(0,r.jsx)(e.p,{children:"Bytes of incoming p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_incoming_p2_p_messages"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of incoming p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_local_disconnects_total"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of local disconnects"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_outgoing_connections"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of outgoing connection."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_outgoing_p2_p_message_bytes"})})}),"\n",(0,r.jsx)(e.p,{children:"Bytes of outgoing p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_outgoing_p2_p_messages"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of outgoing p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_peer_limit"})})}),"\n",(0,r.jsx)(e.p,{children:"The maximum number of peers this node allows to connect."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_remote_disconnects_total"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of remote disconnects"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"pruning",children:"Pruning"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_cached_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that are currently kept in cache (either persisted or not)"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_committed_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been committed since the session start. These nodes may have been pruned, persisted or replaced."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_deep_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been removed from the cache during deep pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_deep_pruning_time"})})}),"\n",(0,r.jsx)(e.p,{children:"Time taken by the last deep pruning."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_last_persisted_block_number"})})}),"\n",(0,r.jsx)(e.p,{children:"Last persisted block number (snapshot)."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_loaded_from_cache_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reads from the node cache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_loaded_from_db_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of DB reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_loaded_from_rlp_cache_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reads from the RLP cache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_memory_used_by_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Estimated memory used by cache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_persisted_node_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been persisted since the session start."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been removed from the cache during pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pruned_transient_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been removed from the cache during pruning because they were no longer needed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pruning_time"})})}),"\n",(0,r.jsx)(e.p,{children:"Time taken by the last pruning."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_removed_node_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that was removed via live pruning."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_replaced_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of nodes that have been exactly the same as other nodes in the cache when committing."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_snapshot_persistence_time"})})}),"\n",(0,r.jsx)(e.p,{children:"Time taken by the last snapshot persistence."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"runner",children:"Runner"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_version"})})}),"\n",(0,r.jsx)(e.p,{children:"Version number"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"synchronization",children:"Synchronization"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sync_peers"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of sync peers."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"trie",children:"Trie"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tree_node_hash_calculations"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of trie node hash calculations."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tree_node_rlp_decodings"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of trie node RLP decodings."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tree_node_rlp_encodings"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of trie node RLP encodings."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"txpool",children:"TxPool"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blobs_in_block"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blobs in the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blob_transaction_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blob transactions in pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blob_transactions_in_block"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blob transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_dark_pool_ratio_level1"})})}),"\n",(0,r.jsx)(e.p,{children:"Ratio of transactions in the block absent in hashCache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_dark_pool_ratio_level2"})})}),"\n",(0,r.jsx)(e.p,{children:"Ratio of transactions in the block absent in pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_eip1559_transactions_ratio"})})}),"\n",(0,r.jsx)(e.p,{children:"Ratio of 1559-type transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending1559_transactions_added"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending 1559-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_blob_transactions_added"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending blob-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_added"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_balance_below_value"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because balance is less than txn value."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_conflicting_tx_type"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions rejected because of already pending tx of other type (allowed blob txs or others, not both at once)."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_discarded"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_evicted"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions evicted from transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_gas_limit_too_high"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because the gas limit was to high for the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_hashes_received"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of hashes of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_hashes_sent"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of hashes of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_known"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of already known pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_low_nonce"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions with already used nonce."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_malformed"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of malformed transactions."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_nonce_gap"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of not having preceding nonce of this sender in TxPool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_nonce_too_far_in_future"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions with nonce too far in future."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_not_supported_tx_type"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of not supported transaction type."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored after passing early rejections as balance is too low to compete with lowest effective fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_replace"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were trying to replace tx with the same sender and nonce and failed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_received"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_sent"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_too_low_balance"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because balance too low for fee to be higher than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_too_low_fee"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of fee lower than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_too_low_priority_fee"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of priority fee lower than minimal requirement."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_unresolvable_sender"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because the sender couldn't be resolved."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_with_expensive_filtering"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions that reached filters which are resource expensive"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_zero_balance"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because balance is zero and cannot pay gas."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_transaction_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions in pool."}),"\n"]}),"\n"]})})]})]})}function x(n={}){const{wrapper:e}={...(0,i.R)(),...n.components};return e?(0,r.jsx)(e,{...n,children:(0,r.jsx)(o,{...n})}):o(n)}},8453:(n,e,s)=>{s.d(e,{R:()=>c,x:()=>l});var r=s(6540);const i={},d=r.createContext(i);function c(n){const e=r.useContext(d);return r.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function l(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(i):n.components||i:c(n.components),r.createElement(d.Provider,{value:e},n.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7104],{712:(n,e,s)=>{s.r(e),s.d(e,{assets:()=>h,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>l,toc:()=>t});var r=s(4848),i=s(8453);const d={title:"Metrics",sidebar_position:0,toc_max_heading_level:4},c=void 0,l={id:"monitoring/metrics/metrics",title:"Metrics",description:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:",source:"@site/versioned_docs/version-1.28.0/monitoring/metrics/metrics.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/",permalink:"/1.28.0/monitoring/metrics/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/monitoring/metrics/metrics.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Metrics",sidebar_position:0,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"web3",permalink:"/1.28.0/interacting/json-rpc-ns/web3"},next:{title:"Grafana and Prometheus",permalink:"/1.28.0/monitoring/metrics/grafana-and-prometheus"}},h={},t=[{value:"Parameters by namespace",id:"parameters-by-namespace",level:3},{value:"Aura",id:"aura",level:4},{value:"Blockchain",id:"blockchain",level:4},{value:"Db",id:"db",level:4},{value:"Evm",id:"evm",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"Merge",id:"merge",level:4},{value:"Network",id:"network",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Runner",id:"runner",level:4},{value:"Synchronization",id:"synchronization",level:4},{value:"Trie",id:"trie",level:4},{value:"TxPool",id:"txpool",level:4}];function o(n){const e={a:"a",code:"code",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...n.components},{Details:s}=e;return s||function(n,e){throw new Error("Expected "+(e?"component":"object")+" `"+n+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(e.p,{children:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/1.28.0/monitoring/metrics/grafana-and-prometheus",children:"Grafana and Prometheus"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/1.28.0/monitoring/metrics/dotnet-counters",children:"dotnet-counters"})}),"\n"]}),"\n",(0,r.jsx)(e.h3,{id:"parameters-by-namespace",children:"Parameters by namespace"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"aura",children:"Aura"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_au_ra_step"})})}),"\n",(0,r.jsx)(e.p,{children:"Current AuRa step"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_commit_hash_transaction"})})}),"\n",(0,r.jsx)(e.p,{children:"RANDAO number of commit hash transactions"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_emit_initiate_change"})})}),"\n",(0,r.jsx)(e.p,{children:"POSDAO number of emit init change transactions"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reported_benign_misbehaviour"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reported benign misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reported_malicious_misbehaviour"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reported malicious misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reveal_number"})})}),"\n",(0,r.jsx)(e.p,{children:"RANDAO number of reveal number transactions"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sealed_transactions"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of sealed transactions generated by engine"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_validators_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of current AuRa validators"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"blockchain",children:"Blockchain"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_best_known_block_number"})})}),"\n",(0,r.jsx)(e.p,{children:"The estimated highest block available."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blockchain_height"})})}),"\n",(0,r.jsx)(e.p,{children:"The current height of the canonical chain."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blocks"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of blocks processed"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blocks_sealed"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of sealed blocks"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_failed_block_seals"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of failed block seals"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_gas_limit"})})}),"\n",(0,r.jsx)(e.p,{children:"Gas Limit for processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_gas_used"})})}),"\n",(0,r.jsx)(e.p,{children:"Gas Used in processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_last_difficulty"})})}),"\n",(0,r.jsx)(e.p,{children:"Difficulty of the last block"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_mgas"})})}),"\n",(0,r.jsx)(e.p,{children:"Total MGas processed"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_mgas_per_sec"})})}),"\n",(0,r.jsx)(e.p,{children:"MGas processed per second"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_processing_queue_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blocks awaiting for processing."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_recovery_queue_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blocks awaiting for recovery of public keys from signatures."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_reorganizations"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of chain reorganizations"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_total_difficulty"})})}),"\n",(0,r.jsx)(e.p,{children:"Total difficulty on the chain"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_transactions"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of transactions processed"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"db",children:"Db"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_code_db_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Code DB cache reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_block_cache_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database block cache size per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_compaction_stats"})})}),"\n",(0,r.jsx)(e.p,{children:"Metrics extracted from RocksDB Compaction Stats"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_index_filter_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database index and filter size per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_memtable_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database memtable per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Database reads per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_size"})})}),"\n",(0,r.jsx)(e.p,{children:"Database size per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_stats"})})}),"\n",(0,r.jsx)(e.p,{children:"Metrics extracted from RocksDB Compaction Stats and DB Statistics"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_db_writes"})})}),"\n",(0,r.jsx)(e.p,{children:"Database writes per database"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_db_pruning"})})}),"\n",(0,r.jsx)(e.p,{children:"Indicator if StadeDb is being pruned."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_reader_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Reader reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_tree_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Trie cache hits."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Trie reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_state_tree_writes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Blocks Trie writes."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_reader_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage reader reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_tree_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie cache hits."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_storage_tree_writes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie writes."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_code_db_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Code DB cache reads on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_state_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of State Trie reads on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_storage_tree_reads"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of storage trie reads on thread."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"evm",children:"Evm"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blockhash_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BLOCKHASH opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_bn254_add_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BN254_ADD precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_bn254_mul_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BN254_MUL precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_bn254_pairing_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of BN254_PAIRING precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls to other contracts."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_contracts_analysed"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contracts' code analysed for jump destinations."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_creates"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contract create calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_ec_recover_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of EC_RECOVERY precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_empty_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls made to addresses without code."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_evm_exceptions"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of EVM exceptions thrown by contracts."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_exp_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of EXP opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_m_copy_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of MCOPY opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_mod_exp_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of MODEXP precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_point_evaluation_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Point Evaluation precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_ripemd160_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of RIPEMD160 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_secp256r1_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Secp256r1 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_self_destructs"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SELFDESTRUCT calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sha256_precompile"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SHA256 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sload_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sstore_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SSTORE opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls to other contracts on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_contracts_analysed"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contracts' code analysed for jump destinations on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_creates"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of contract create calls on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_empty_calls"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of calls made to addresses without code on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_s_load_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SLOAD opcodes executed on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_thread_local_s_store_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of SSTORE opcodes executed on thread."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tload_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of TLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tstore_opcode"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of TSTORE opcodes executed."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_bytes_received"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC bytes received."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_bytes_sent"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC bytes sent."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_errors"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests processed with errors."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_invalid_requests"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests that were invalid."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_request_deserialization_failures"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests that failed JSON deserialization."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_requests"})})}),"\n",(0,r.jsx)(e.p,{children:"Total number of JSON RPC requests received by the node."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_json_rpc_successes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of JSON RPC requests processed successfully."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"merge",children:"Merge"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_forkchoice_upded_execution_time"})})}),"\n",(0,r.jsx)(e.p,{children:"ForkchoiceUpded request execution time"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_get_payload_requests"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of GetPayload Requests"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_new_payload_execution_time"})})}),"\n",(0,r.jsx)(e.p,{children:"NewPayload request execution time"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_number_of_transactions_in_get_payload"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of Transactions included in the Last GetPayload Request"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"network",children:"Network"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_handshakes"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of devp2p handshakes"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_handshake_timeouts"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of devp2p handshake timeouts"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_incoming_connections"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of incoming connection."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_incoming_p2_p_message_bytes"})})}),"\n",(0,r.jsx)(e.p,{children:"Bytes of incoming p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_incoming_p2_p_messages"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of incoming p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_local_disconnects_total"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of local disconnects"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_outgoing_connections"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of outgoing connection."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_outgoing_p2_p_message_bytes"})})}),"\n",(0,r.jsx)(e.p,{children:"Bytes of outgoing p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_outgoing_p2_p_messages"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of outgoing p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_peer_limit"})})}),"\n",(0,r.jsx)(e.p,{children:"The maximum number of peers this node allows to connect."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_remote_disconnects_total"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of remote disconnects"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"pruning",children:"Pruning"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_cached_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that are currently kept in cache (either persisted or not)"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_committed_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been committed since the session start. These nodes may have been pruned, persisted or replaced."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_deep_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been removed from the cache during deep pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_deep_pruning_time"})})}),"\n",(0,r.jsx)(e.p,{children:"Time taken by the last deep pruning."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_last_persisted_block_number"})})}),"\n",(0,r.jsx)(e.p,{children:"Last persisted block number (snapshot)."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_loaded_from_cache_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reads from the node cache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_loaded_from_db_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of DB reads."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_loaded_from_rlp_cache_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of reads from the RLP cache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_memory_used_by_cache"})})}),"\n",(0,r.jsx)(e.p,{children:"Estimated memory used by cache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_persisted_node_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been persisted since the session start."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been removed from the cache during pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pruned_transient_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that have been removed from the cache during pruning because they were no longer needed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pruning_time"})})}),"\n",(0,r.jsx)(e.p,{children:"Time taken by the last pruning."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_removed_node_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Nodes that was removed via live pruning."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_replaced_nodes_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of nodes that have been exactly the same as other nodes in the cache when committing."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_snapshot_persistence_time"})})}),"\n",(0,r.jsx)(e.p,{children:"Time taken by the last snapshot persistence."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"runner",children:"Runner"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_version"})})}),"\n",(0,r.jsx)(e.p,{children:"Version number"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"synchronization",children:"Synchronization"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_sync_peers"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of sync peers."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"trie",children:"Trie"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tree_node_hash_calculations"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of trie node hash calculations."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tree_node_rlp_decodings"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of trie node RLP decodings."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_tree_node_rlp_encodings"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of trie node RLP encodings."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(e.h4,{id:"txpool",children:"TxPool"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blobs_in_block"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blobs in the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blob_transaction_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blob transactions in pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_blob_transactions_in_block"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of blob transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_dark_pool_ratio_level1"})})}),"\n",(0,r.jsx)(e.p,{children:"Ratio of transactions in the block absent in hashCache."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_dark_pool_ratio_level2"})})}),"\n",(0,r.jsx)(e.p,{children:"Ratio of transactions in the block absent in pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_eip1559_transactions_ratio"})})}),"\n",(0,r.jsx)(e.p,{children:"Ratio of 1559-type transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending1559_transactions_added"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending 1559-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_blob_transactions_added"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending blob-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_added"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_balance_below_value"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because balance is less than txn value."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_conflicting_tx_type"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions rejected because of already pending tx of other type (allowed blob txs or others, not both at once)."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_discarded"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_evicted"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions evicted from transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_gas_limit_too_high"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because the gas limit was to high for the block."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_hashes_received"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of hashes of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_hashes_sent"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of hashes of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_known"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of already known pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_low_nonce"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions with already used nonce."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_malformed"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of malformed transactions."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_nonce_gap"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of not having preceding nonce of this sender in TxPool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_nonce_too_far_in_future"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions with nonce too far in future."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_not_supported_tx_type"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of not supported transaction type."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored after passing early rejections as balance is too low to compete with lowest effective fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_replace"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were trying to replace tx with the same sender and nonce and failed."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_received"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_sent"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_too_low_balance"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because balance too low for fee to be higher than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_too_low_fee"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of fee lower than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_too_low_priority_fee"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because of priority fee lower than minimal requirement."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_unresolvable_sender"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because the sender couldn't be resolved."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_with_expensive_filtering"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions that reached filters which are resource expensive"}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_pending_transactions_zero_balance"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of pending transactions received that were ignored because balance is zero and cannot pay gas."}),"\n"]}),"\n",(0,r.jsxs)(e.li,{children:["\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.strong,{children:(0,r.jsx)(e.code,{children:"nethermind_transaction_count"})})}),"\n",(0,r.jsx)(e.p,{children:"Number of transactions in pool."}),"\n"]}),"\n"]})})]})]})}function x(n={}){const{wrapper:e}={...(0,i.R)(),...n.components};return e?(0,r.jsx)(e,{...n,children:(0,r.jsx)(o,{...n})}):o(n)}},8453:(n,e,s)=>{s.d(e,{R:()=>c,x:()=>l});var r=s(6540);const i={},d=r.createContext(i);function c(n){const e=r.useContext(d);return r.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function l(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(i):n.components||i:c(n.components),r.createElement(d.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/bca8cef8.d28aaae5.js b/assets/js/bca8cef8.21bf8329.js similarity index 98% rename from assets/js/bca8cef8.d28aaae5.js rename to assets/js/bca8cef8.21bf8329.js index 2ad053e70..236371262 100644 --- a/assets/js/bca8cef8.d28aaae5.js +++ b/assets/js/bca8cef8.21bf8329.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6379],{1858:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>a});var r=i(4848),t=i(8453);const s={title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},d=void 0,o={id:"developers/building-from-source",title:"Building from source",description:"The Nethermind's source code can be obtained from our repository on",source:"@site/versioned_docs/version-1.27.0/developers/building-from-source.md",sourceDirName:"developers",slug:"/developers/building-from-source",permalink:"/1.27.0/developers/building-from-source",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/developers/building-from-source.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Aura-based validators",permalink:"/1.27.0/validators/aura"},next:{title:"Plugins",permalink:"/1.27.0/developers/plugins"}},l={},a=[{value:"Building standalone binaries",id:"building-standalone-binaries",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Building",id:"building",level:3},{value:"Running",id:"running",level:4},{value:"Testing",id:"testing",level:4},{value:"Bulding Docker image",id:"bulding-docker-image",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["The Nethermind's source code can be obtained from ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind",children:"our repository"})," on\nGitHub:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone --recursive https://github.com/nethermindeth/nethermind.git\n"})}),"\n",(0,r.jsx)(n.p,{children:"There are two options buiding Nethermind from source code:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#building-standalone-binaries",children:"Standalone binaries"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#bulding-docker-image",children:"Docker image"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"building-standalone-binaries",children:"Building standalone binaries"}),"\n",(0,r.jsx)(n.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(n.p,{children:["To build Nethermind from source, install ",(0,r.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/download",children:".NET SDK"})," 8 or later."]}),"\n",(0,r.jsx)(n.h3,{id:"building",children:"Building"}),"\n",(0,r.jsx)(n.p,{children:"To build both the client and tests, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"dotnet build src/Nethermind/Nethermind.sln -c release\n"})}),"\n",(0,r.jsx)(n.p,{children:"To simply run the client with a specific configuration without building tests, see below."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Before running the client or tests, ensure the\nplatform-specific ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#prerequisites",children:"prerequisites"})," are met."]})}),"\n",(0,r.jsx)(n.h4,{id:"running",children:"Running"}),"\n",(0,r.jsx)(n.p,{children:"Nethermind can be launched immediately without compiling explicitly (thus, the previous step can be skipped). The following command builds Nethermind if needed and runs it:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind/Nethermind.Runner\ndotnet run -c release -- -c mainnet\n"})}),"\n",(0,r.jsxs)(n.p,{children:["All Nethermind-specific parameters can be specified after ",(0,r.jsx)(n.code,{children:"--"}),". For instance, the command above specifies the Mainnet\nconfiguration only."]}),"\n",(0,r.jsxs)(n.p,{children:["The build artifacts can be found in the ",(0,r.jsx)(n.code,{children:"src/Nethermind/artifacts/bin/Nethermind.Runner/release"})," directory. By default, the logs and database directories are located here as well."]}),"\n",(0,r.jsxs)(n.p,{children:["For more info, see ",(0,r.jsx)(n.a,{href:"/1.27.0/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"testing",children:"Testing"}),"\n",(0,r.jsx)(n.p,{children:"There are two test suites \u2014 Nethermind and Ethereum Foundation. Tests can be run with the following commands (the\ninitial step of the build is not required):"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind\n\n# Run Nethermind tests\ndotnet test Nethermind.sln -c release\n\n# Run Ethereum Foundation tests\ndotnet test EthereumTests.sln -c release\n"})}),"\n",(0,r.jsx)(n.h2,{id:"bulding-docker-image",children:"Bulding Docker image"}),"\n",(0,r.jsx)(n.p,{children:"To build Nethermind Docker image, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker build -t nethermind .\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For more info about running Docker containers,\nsee ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#docker-container",children:"Installing Nethermind"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>o});var r=i(6540);const t={},s=r.createContext(t);function d(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6379],{1858:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>a});var r=i(4848),t=i(8453);const s={title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},d=void 0,o={id:"developers/building-from-source",title:"Building from source",description:"The Nethermind's source code can be obtained from our repository on",source:"@site/versioned_docs/version-1.27.0/developers/building-from-source.md",sourceDirName:"developers",slug:"/developers/building-from-source",permalink:"/1.27.0/developers/building-from-source",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/developers/building-from-source.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Aura-based validators",permalink:"/1.27.0/validators/aura"},next:{title:"Plugins",permalink:"/1.27.0/developers/plugins"}},l={},a=[{value:"Building standalone binaries",id:"building-standalone-binaries",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Building",id:"building",level:3},{value:"Running",id:"running",level:4},{value:"Testing",id:"testing",level:4},{value:"Bulding Docker image",id:"bulding-docker-image",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["The Nethermind's source code can be obtained from ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind",children:"our repository"})," on\nGitHub:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone --recursive https://github.com/nethermindeth/nethermind.git\n"})}),"\n",(0,r.jsx)(n.p,{children:"There are two options buiding Nethermind from source code:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#building-standalone-binaries",children:"Standalone binaries"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#bulding-docker-image",children:"Docker image"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"building-standalone-binaries",children:"Building standalone binaries"}),"\n",(0,r.jsx)(n.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(n.p,{children:["To build Nethermind from source, install ",(0,r.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/download",children:".NET SDK"})," 8 or later."]}),"\n",(0,r.jsx)(n.h3,{id:"building",children:"Building"}),"\n",(0,r.jsx)(n.p,{children:"To build both the client and tests, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"dotnet build src/Nethermind/Nethermind.sln -c release\n"})}),"\n",(0,r.jsx)(n.p,{children:"To simply run the client with a specific configuration without building tests, see below."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Before running the client or tests, ensure the\nplatform-specific ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#prerequisites",children:"prerequisites"})," are met."]})}),"\n",(0,r.jsx)(n.h4,{id:"running",children:"Running"}),"\n",(0,r.jsx)(n.p,{children:"Nethermind can be launched immediately without compiling explicitly (thus, the previous step can be skipped). The following command builds Nethermind if needed and runs it:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind/Nethermind.Runner\ndotnet run -c release -- -c mainnet\n"})}),"\n",(0,r.jsxs)(n.p,{children:["All Nethermind-specific parameters can be specified after ",(0,r.jsx)(n.code,{children:"--"}),". For instance, the command above specifies the Mainnet\nconfiguration only."]}),"\n",(0,r.jsxs)(n.p,{children:["The build artifacts can be found in the ",(0,r.jsx)(n.code,{children:"src/Nethermind/artifacts/bin/Nethermind.Runner/release"})," directory. By default, the logs and database directories are located here as well."]}),"\n",(0,r.jsxs)(n.p,{children:["For more info, see ",(0,r.jsx)(n.a,{href:"/1.27.0/get-started/installing-nethermind#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"testing",children:"Testing"}),"\n",(0,r.jsx)(n.p,{children:"There are two test suites \u2014 Nethermind and Ethereum Foundation. Tests can be run with the following commands (the\ninitial step of the build is not required):"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind\n\n# Run Nethermind tests\ndotnet test Nethermind.sln -c release\n\n# Run Ethereum Foundation tests\ndotnet test EthereumTests.sln -c release\n"})}),"\n",(0,r.jsx)(n.h2,{id:"bulding-docker-image",children:"Bulding Docker image"}),"\n",(0,r.jsx)(n.p,{children:"To build Nethermind Docker image, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker build -t nethermind .\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For more info about running Docker containers,\nsee ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#docker-container",children:"Installing Nethermind"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>o});var r=i(6540);const t={},s=r.createContext(t);function d(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bccdab75.dec8485e.js b/assets/js/bccdab75.63dfb541.js similarity index 97% rename from assets/js/bccdab75.dec8485e.js rename to assets/js/bccdab75.63dfb541.js index a97dad9ec..34b35209d 100644 --- a/assets/js/bccdab75.dec8485e.js +++ b/assets/js/bccdab75.63dfb541.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4530],{8114:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=t(4848),r=t(8453);const o={title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},a=void 0,s={id:"get-started/intro",title:"Introduction and overview",description:"Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.",source:"@site/versioned_docs/version-1.29.0/get-started/intro.md",sourceDirName:"get-started",slug:"/",permalink:"/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/get-started/intro.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},sidebar:"tutorialSidebar",next:{title:"System requirements",permalink:"/get-started/system-requirements"}},d={},c=[];function u(e){const n={a:"a",p:"p",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Nethermind is a high-performance, highly configurable Ethereum execution client built on ",(0,i.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/",children:".NET"})," that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with ",(0,i.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,i.jsx)(n.a,{href:"https://datalust.co/seq",children:"Seq"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators."}),"\n",(0,i.jsx)(n.p,{children:"Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding."}),"\n",(0,i.jsx)(n.p,{children:"We hope you find this documentation helpful and welcome your feedback and suggestions!"})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var i=t(6540);const r={},o=i.createContext(r);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4530],{8114:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=t(4848),r=t(8453);const o={title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},a=void 0,s={id:"get-started/intro",title:"Introduction and overview",description:"Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.",source:"@site/versioned_docs/version-1.29.0/get-started/intro.md",sourceDirName:"get-started",slug:"/",permalink:"/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/get-started/intro.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},sidebar:"tutorialSidebar",next:{title:"System requirements",permalink:"/get-started/system-requirements"}},d={},c=[];function u(e){const n={a:"a",p:"p",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Nethermind is a high-performance, highly configurable Ethereum execution client built on ",(0,i.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/",children:".NET"})," that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with ",(0,i.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,i.jsx)(n.a,{href:"https://datalust.co/seq",children:"Seq"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators."}),"\n",(0,i.jsx)(n.p,{children:"Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding."}),"\n",(0,i.jsx)(n.p,{children:"We hope you find this documentation helpful and welcome your feedback and suggestions!"})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var i=t(6540);const r={},o=i.createContext(r);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bd044685.3ddcaa31.js b/assets/js/bd044685.ec3d4a6b.js similarity index 99% rename from assets/js/bd044685.3ddcaa31.js rename to assets/js/bd044685.ec3d4a6b.js index c40838e70..d723f17d9 100644 --- a/assets/js/bd044685.3ddcaa31.js +++ b/assets/js/bd044685.ec3d4a6b.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2378],{550:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var t=i(4848),l=i(8453);const s={title:"Plugins",sidebar_position:1},o=void 0,r={id:"developers/plugins",title:"Plugins",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.28.0/developers/plugins.md",sourceDirName:"developers",slug:"/developers/plugins",permalink:"/1.28.0/developers/plugins",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/developers/plugins.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Plugins",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Building from source",permalink:"/1.28.0/developers/building-from-source"},next:{title:"Custom analytic tools",permalink:"/1.28.0/developers/custom-analytic-tools"}},a={},c=[{value:"RPC Plugin example:",id:"rpc-plugin-example",level:2},{value:"CLI Plugin example:",id:"cli-plugin-example",level:2},{value:"Block Tree Visitor Plugin example:",id:"block-tree-visitor-plugin-example",level:2},{value:"Config plugin example:",id:"config-plugin-example",level:2},{value:"State Tree Visitor example:",id:"state-tree-visitor-example",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,t.jsx)(n.p,{children:"Nethermind plugins is a powerful way of extending your local node capabilities."}),"\n",(0,t.jsxs)(n.p,{children:["(see also an article\nhere: ",(0,t.jsx)(n.a,{href:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59",children:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59"}),")"]}),"\n",(0,t.jsx)(n.p,{children:"Plugins that you can write:"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"Plugin Type"}),(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"What can it be used for?"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"RPC"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Adding additional RPC modules to the client that have full access to the internal Nethermind APIs and can extend capabilities of the node when integrating with your infrastructure / systems."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Block Tree Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Code allowing you to analyze entire block tree from genesis to the head block and execute aggregated calculations and checks."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Devp2p"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allows you to create additional devp2p network protocol for your nodes to communicate over TCP/IP. You can also build custom products that will run attached to Nethermind nodes."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"State Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allow you to run aggregated analysis on the entire raw format state (or just some accounts storages)."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Config"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"You can add additional configuration categories to our config files and then use them in env variables, json files or command line to configure behaviour of your plugins."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool behaviours and listeners."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Tracers"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Custom, powerful EVM tracers capable of extracting elements of EVM execution in real time."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"CLI"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Additional modules for Nethermind CLI that can allow you build some quick scratchpad style JavaScript based behaviors."})]})]})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," When writing a plugin be carefull about exceptions you throw. Especially if you are hooking up event handlers\non some core objects like BlockProcessor or BlockTree. Those exceptions can bring the node down. This is by design. Its\nresponsibility of plugin writer to correctly handle those exceptions."]}),"\n",(0,t.jsx)(n.p,{children:"How to build a plugin? We included an example inside the Nethermind.Analytics plugin:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:i(7200).A+"",width:"547",height:"417"})}),"\n",(0,t.jsx)(n.h2,{id:"rpc-plugin-example",children:"RPC Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' [RpcModule(ModuleType.Clique)]\n public interface IAnalyticsModule : IModule\n {\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from state.", IsImplemented = true)]\n ResultWrapper analytics_verifySupply();\n\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from rewards.", IsImplemented = true)]\n ResultWrapper analytics_verifyRewards();\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"cli-plugin-example",children:"CLI Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'[CliModule("analytics")]\npublic class AnalyticsCliModule : CliModuleBase\n{\n [CliFunction("analytics", "verifySupply")]\n public string VerifySupply()\n {\n return NodeManager.Post("analytics_verifySupply").Result;\n }\n\n [CliFunction("analytics", "verifyRewards")]\n public string VerifyRewards()\n {\n return NodeManager.Post("analytics_verifyRewards").Result;\n }\n\n public AnalyticsCliModule(ICliEngine cliEngine, INodeManager nodeManager)\n : base(cliEngine, nodeManager) { }\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"block-tree-visitor-plugin-example",children:"Block Tree Visitor Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive { get; }\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n\n public UInt256 BlockRewards { get; private set; }\n\n public RewardsVerifier(ILogManager logManager, long endLevelExclusive)\n {\n _logger = logManager.GetClassLogger();\n EndLevelExclusive = endLevelExclusive;\n BlockRewards = _genesisAllocations;\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n BlockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {BlockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(HeaderVisitOutcome.None);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"config-plugin-example",children:"Config plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:"public class AnalyticsConfig : IAnalyticsConfig\n{\n public bool PluginsEnabled { get; set; }\n public bool StreamTransactions { get; set; }\n public bool StreamBlocks { get; set; }\n public bool LogPublishedData { get; set; }\n}\n"})}),"\n",(0,t.jsx)(n.h2,{id:"state-tree-visitor-example",children:"State Tree Visitor example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'public class SupplyVerifier : ITreeVisitor\n{\n private readonly ILogger _logger;\n private HashSet _ignoreThisOne = new HashSet();\n private int _accountsVisited;\n private int _nodesVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public UInt256 Balance { get; set; } = UInt256.Zero;\n\n public bool ShouldVisit(Keccak nextNode)\n {\n if (_ignoreThisOne.Count > 16)\n {\n _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");\n }\n\n if (_ignoreThisOne.Contains(nextNode))\n {\n _ignoreThisOne.Remove(nextNode);\n return false;\n }\n\n return true;\n }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)\n {\n }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)\n {\n _logger.Warn($"Missing node {nodeHash}");\n }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n for (int i = 0; i < 16; i++)\n {\n Keccak childHash = node.GetChildHash(i);\n if (childHash != null)\n {\n _ignoreThisOne.Add(childHash);\n }\n }\n }\n }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n if (trieVisitContext.IsStorage)\n {\n _ignoreThisOne.Add(node.GetChildHash(0));\n }\n }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n Balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n }\n}\n'})})]})}function u(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},7200:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png"},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var t=i(6540);const l={},s=t.createContext(l);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2378],{550:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var t=i(4848),l=i(8453);const s={title:"Plugins",sidebar_position:1},o=void 0,r={id:"developers/plugins",title:"Plugins",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.28.0/developers/plugins.md",sourceDirName:"developers",slug:"/developers/plugins",permalink:"/1.28.0/developers/plugins",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/developers/plugins.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Plugins",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Building from source",permalink:"/1.28.0/developers/building-from-source"},next:{title:"Custom analytic tools",permalink:"/1.28.0/developers/custom-analytic-tools"}},a={},c=[{value:"RPC Plugin example:",id:"rpc-plugin-example",level:2},{value:"CLI Plugin example:",id:"cli-plugin-example",level:2},{value:"Block Tree Visitor Plugin example:",id:"block-tree-visitor-plugin-example",level:2},{value:"Config plugin example:",id:"config-plugin-example",level:2},{value:"State Tree Visitor example:",id:"state-tree-visitor-example",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,t.jsx)(n.p,{children:"Nethermind plugins is a powerful way of extending your local node capabilities."}),"\n",(0,t.jsxs)(n.p,{children:["(see also an article\nhere: ",(0,t.jsx)(n.a,{href:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59",children:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59"}),")"]}),"\n",(0,t.jsx)(n.p,{children:"Plugins that you can write:"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"Plugin Type"}),(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"What can it be used for?"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"RPC"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Adding additional RPC modules to the client that have full access to the internal Nethermind APIs and can extend capabilities of the node when integrating with your infrastructure / systems."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Block Tree Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Code allowing you to analyze entire block tree from genesis to the head block and execute aggregated calculations and checks."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Devp2p"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allows you to create additional devp2p network protocol for your nodes to communicate over TCP/IP. You can also build custom products that will run attached to Nethermind nodes."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"State Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allow you to run aggregated analysis on the entire raw format state (or just some accounts storages)."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Config"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"You can add additional configuration categories to our config files and then use them in env variables, json files or command line to configure behaviour of your plugins."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool behaviours and listeners."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Tracers"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Custom, powerful EVM tracers capable of extracting elements of EVM execution in real time."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"CLI"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Additional modules for Nethermind CLI that can allow you build some quick scratchpad style JavaScript based behaviors."})]})]})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," When writing a plugin be carefull about exceptions you throw. Especially if you are hooking up event handlers\non some core objects like BlockProcessor or BlockTree. Those exceptions can bring the node down. This is by design. Its\nresponsibility of plugin writer to correctly handle those exceptions."]}),"\n",(0,t.jsx)(n.p,{children:"How to build a plugin? We included an example inside the Nethermind.Analytics plugin:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:i(7200).A+"",width:"547",height:"417"})}),"\n",(0,t.jsx)(n.h2,{id:"rpc-plugin-example",children:"RPC Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' [RpcModule(ModuleType.Clique)]\n public interface IAnalyticsModule : IModule\n {\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from state.", IsImplemented = true)]\n ResultWrapper analytics_verifySupply();\n\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from rewards.", IsImplemented = true)]\n ResultWrapper analytics_verifyRewards();\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"cli-plugin-example",children:"CLI Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'[CliModule("analytics")]\npublic class AnalyticsCliModule : CliModuleBase\n{\n [CliFunction("analytics", "verifySupply")]\n public string VerifySupply()\n {\n return NodeManager.Post("analytics_verifySupply").Result;\n }\n\n [CliFunction("analytics", "verifyRewards")]\n public string VerifyRewards()\n {\n return NodeManager.Post("analytics_verifyRewards").Result;\n }\n\n public AnalyticsCliModule(ICliEngine cliEngine, INodeManager nodeManager)\n : base(cliEngine, nodeManager) { }\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"block-tree-visitor-plugin-example",children:"Block Tree Visitor Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive { get; }\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n\n public UInt256 BlockRewards { get; private set; }\n\n public RewardsVerifier(ILogManager logManager, long endLevelExclusive)\n {\n _logger = logManager.GetClassLogger();\n EndLevelExclusive = endLevelExclusive;\n BlockRewards = _genesisAllocations;\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n BlockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {BlockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(HeaderVisitOutcome.None);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"config-plugin-example",children:"Config plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:"public class AnalyticsConfig : IAnalyticsConfig\n{\n public bool PluginsEnabled { get; set; }\n public bool StreamTransactions { get; set; }\n public bool StreamBlocks { get; set; }\n public bool LogPublishedData { get; set; }\n}\n"})}),"\n",(0,t.jsx)(n.h2,{id:"state-tree-visitor-example",children:"State Tree Visitor example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'public class SupplyVerifier : ITreeVisitor\n{\n private readonly ILogger _logger;\n private HashSet _ignoreThisOne = new HashSet();\n private int _accountsVisited;\n private int _nodesVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public UInt256 Balance { get; set; } = UInt256.Zero;\n\n public bool ShouldVisit(Keccak nextNode)\n {\n if (_ignoreThisOne.Count > 16)\n {\n _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");\n }\n\n if (_ignoreThisOne.Contains(nextNode))\n {\n _ignoreThisOne.Remove(nextNode);\n return false;\n }\n\n return true;\n }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)\n {\n }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)\n {\n _logger.Warn($"Missing node {nodeHash}");\n }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n for (int i = 0; i < 16; i++)\n {\n Keccak childHash = node.GetChildHash(i);\n if (childHash != null)\n {\n _ignoreThisOne.Add(childHash);\n }\n }\n }\n }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n if (trieVisitContext.IsStorage)\n {\n _ignoreThisOne.Add(node.GetChildHash(0));\n }\n }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n Balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n }\n}\n'})})]})}function u(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},7200:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png"},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var t=i(6540);const l={},s=t.createContext(l);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bdacd39a.c1c4620c.js b/assets/js/bdacd39a.90ed0673.js similarity index 98% rename from assets/js/bdacd39a.c1c4620c.js rename to assets/js/bdacd39a.90ed0673.js index af621a223..6ed2dd3a2 100644 --- a/assets/js/bdacd39a.c1c4620c.js +++ b/assets/js/bdacd39a.90ed0673.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2828],{8784:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var i=n(4848),r=n(8453);const o={title:"Security",sidebar_position:3},s=void 0,c={id:"fundamentals/security",title:"Security",description:"General security considerations",source:"@site/versioned_docs/version-1.29.0/fundamentals/security.md",sourceDirName:"fundamentals",slug:"/fundamentals/security",permalink:"/fundamentals/security",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/security.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"Security",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Sync",permalink:"/fundamentals/sync"},next:{title:"Logs",permalink:"/fundamentals/logs"}},a={},d=[{value:"General security considerations",id:"general-security-considerations",level:2},{value:"Networking security",id:"networking-security",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{id:"general-security-considerations",children:"General security considerations"}),"\n",(0,i.jsx)(t.admonition,{type:"tip",children:(0,i.jsx)(t.p,{children:"Although Nethermind is thoroughly tested, the more popular it becomes, the more likely it will be a target of client-specific attacks. Generally, we recommend you always consider running backup client nodes from another developer for any critical operations."})}),"\n",(0,i.jsx)(t.admonition,{type:"warning",children:(0,i.jsxs)(t.p,{children:["Enable only the ",(0,i.jsx)(t.a,{href:"/interacting/json-rpc-server",children:"JSON-RPC namespaces"})," you absolutely need. This is particularly important for namespaces like ",(0,i.jsx)(t.code,{children:"admin"})," and ",(0,i.jsx)(t.code,{children:"debug"}),", as they can be exploited to get elevated access to your node or for DOS attacks."]})}),"\n",(0,i.jsx)(t.admonition,{type:"danger",children:(0,i.jsx)(t.p,{children:"The private key the node id is derived from is stored on the disk as plaintext."})}),"\n",(0,i.jsx)(t.h2,{id:"networking-security",children:"Networking security"}),"\n",(0,i.jsxs)(t.p,{children:["These rules are ",(0,i.jsx)(t.strong,{children:"highly recommended"})," to be applied to your firewall:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Block all traffic to the port ",(0,i.jsx)(t.code,{children:"8545"}),", or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the TCP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port is defined for P2P communication. This allows the node to connect to peers."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the UDP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port ia defined for P2P communication. This allows node discovery."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var i=n(6540);const r={},o=i.createContext(r);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2828],{8784:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var i=n(4848),r=n(8453);const o={title:"Security",sidebar_position:3},s=void 0,c={id:"fundamentals/security",title:"Security",description:"General security considerations",source:"@site/versioned_docs/version-1.29.0/fundamentals/security.md",sourceDirName:"fundamentals",slug:"/fundamentals/security",permalink:"/fundamentals/security",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/security.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"Security",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Sync",permalink:"/fundamentals/sync"},next:{title:"Logs",permalink:"/fundamentals/logs"}},a={},d=[{value:"General security considerations",id:"general-security-considerations",level:2},{value:"Networking security",id:"networking-security",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{id:"general-security-considerations",children:"General security considerations"}),"\n",(0,i.jsx)(t.admonition,{type:"tip",children:(0,i.jsx)(t.p,{children:"Although Nethermind is thoroughly tested, the more popular it becomes, the more likely it will be a target of client-specific attacks. Generally, we recommend you always consider running backup client nodes from another developer for any critical operations."})}),"\n",(0,i.jsx)(t.admonition,{type:"warning",children:(0,i.jsxs)(t.p,{children:["Enable only the ",(0,i.jsx)(t.a,{href:"/interacting/json-rpc-server",children:"JSON-RPC namespaces"})," you absolutely need. This is particularly important for namespaces like ",(0,i.jsx)(t.code,{children:"admin"})," and ",(0,i.jsx)(t.code,{children:"debug"}),", as they can be exploited to get elevated access to your node or for DOS attacks."]})}),"\n",(0,i.jsx)(t.admonition,{type:"danger",children:(0,i.jsx)(t.p,{children:"The private key the node id is derived from is stored on the disk as plaintext."})}),"\n",(0,i.jsx)(t.h2,{id:"networking-security",children:"Networking security"}),"\n",(0,i.jsxs)(t.p,{children:["These rules are ",(0,i.jsx)(t.strong,{children:"highly recommended"})," to be applied to your firewall:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Block all traffic to the port ",(0,i.jsx)(t.code,{children:"8545"}),", or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the TCP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port is defined for P2P communication. This allows the node to connect to peers."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the UDP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port ia defined for P2P communication. This allows node discovery."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var i=n(6540);const r={},o=i.createContext(r);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/be51d2a4.e67426c0.js b/assets/js/be51d2a4.c85fba01.js similarity index 98% rename from assets/js/be51d2a4.e67426c0.js rename to assets/js/be51d2a4.c85fba01.js index bcee42c01..f4345d668 100644 --- a/assets/js/be51d2a4.e67426c0.js +++ b/assets/js/be51d2a4.c85fba01.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3671],{4872:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=t(4848),i=t(8453);const o={title:"Performance tuning",sidebar_position:7},r=void 0,a={id:"fundamentals/performance-tuning",title:"Performance tuning",description:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.",source:"@site/versioned_docs/version-1.27.0/fundamentals/performance-tuning.md",sourceDirName:"fundamentals",slug:"/fundamentals/performance-tuning",permalink:"/1.27.0/fundamentals/performance-tuning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/performance-tuning.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:7,frontMatter:{title:"Performance tuning",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Pruning",permalink:"/1.27.0/fundamentals/pruning"},next:{title:"Private networks",permalink:"/1.27.0/fundamentals/private-networks"}},c={},d=[{value:"Peer discovery",id:"peer-discovery",level:2},{value:"Port forwarding",id:"port-forwarding",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Snap sync",id:"snap-sync",level:2},{value:"Old bodies and receipts",id:"old-bodies-and-receipts",level:2},{value:"Block processing time and attestation",id:"block-processing-time-and-attestation",level:2}];function l(e){const n={code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs."}),"\n",(0,s.jsx)(n.h2,{id:"peer-discovery",children:"Peer discovery"}),"\n",(0,s.jsxs)(n.p,{children:["To connect to the Ethereum network, Nethermind needs to maintain connections to other clients. The number of connections can be configured with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers "}),". The default value depends on the network. Increasing this number may reduce syncing time, while reducing this number may help with attestation performance.\nAlso, you can increase the rate at which a new connection is established with ",(0,s.jsx)(n.code,{children:"--Network.MaxOutgoingConnectsPerSec "}),". The default value is 20 while 50 would be a reasonable higher value. This tends to reduce the snap sync time; however, some ISPs may throttle your Internet connection if you set this value too high. Also, some WiFi routers may hang if the value is set too high."]}),"\n",(0,s.jsx)(n.h2,{id:"port-forwarding",children:"Port forwarding"}),"\n",(0,s.jsxs)(n.p,{children:["While port forwarding is not strictly required, it helps significantly with finding peers and is essential for the network's overall health. The exact steps for port forwarding highly depend on your environment, router, and ISP. For most home configurations, automatic port forwarding can be turned on with ",(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true"}),".\nSome ISPs are more restrictive and do not support port forwarding and/or utilize provider-level NAT. In such cases, your best option is to use a VPN that supports port forwarding. Keep in mind that consensus clients need a separate port forwarding."]}),"\n",(0,s.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,s.jsx)(n.p,{children:"On the Ethereum mainnet, most of the syncing time is split into three phases: snap sync, old bodies, and old receipts. Strictly speaking, there are also fast sync, full sync, and state sync phases. However, they usually complete in less than a minute, with state sync usually taking up to 3 minutes."}),"\n",(0,s.jsx)(n.p,{children:"At the moment, the best test case sync time is 1 hour 50 minutes for all phases with the following configuration:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"CPU: AMD Ryzen 9 7950X"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Memory: 128GB RAM"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Storage: Intel Optane SSD 905P Series 900GB"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Network: 1 Gbps Internet with TorGuard VPN with WireGuard protocol. Both execution and consensus clients port forwarding are set up manually."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Command line options:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true\n--Network.MaxOutgoingConnectsPerSec 50\n--Network.ProcessingThreadCount 32\n--Sync.TuneDbMode HeavyWrite\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"snap-sync",children:"Snap sync"}),"\n",(0,s.jsx)(n.p,{children:"Snap sync is the process of downloading the Ethereum state tree. After it is complete, and after the state sync phase, Nethermind can process and follow the chain. The fastest tested snap sync and state sync time is 25 minutes.\nThis phase is the most I/O-intensive sync phase, and therefore, assuming a fast internet, the sync time highly depends on your SSD's write speed. Remember that most SSDs only advertise peak write speed, usually above 5GB/s. However, they tend to slow down significantly to around 0.5GB/s (or even less for a QLC SSD) after a few seconds. Therefore, look for SSDs with high sustained write speed."}),"\n",(0,s.jsxs)(n.p,{children:["Also, ensuring your SSD is sufficiently cooled to prevent thermal throttling is essential. This is often overlooked as most workloads rarely stress SSD as much; however, to reduce sync time, Nethermind will utilize your SSD to its limit. If, for whatever reason, you need to minimize the I/O load, you can specify a rate limit with ",(0,s.jsx)(n.code,{children:"--Db.MaxBytesPerSec 1000000000"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Nethermind temporarily changes the database configuration during sync to optimize it for writing, notably the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode HeavyWrite"})," is turned on by default. On some systems with slow SSDs, the use of the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode AggressiveHeavyWrite"})," may boost. Also, the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode DisableCompaction"})," can be used to disable compaction altogether. This is likely faster for systems using entry-level NVMe SSDs and is also useful to extend the lifespan of your SSD as it provides the lowest total writes possible. However, it uses about 3GB of extra memory during snap sync. The state sync phase may appear to hang for about 10 minutes as the whole database compacts for the first time after snap sync."]}),"\n",(0,s.jsxs)(n.p,{children:["If you are running on a VPS with artificially capped IOPS, or you are using SATA SSD (which is highly not recommended), increasing the state DB block size with ",(0,s.jsx)(n.code,{children:"--Db.StateDbBlockSize 16384"})," may help to reduce snap sync time. However, this negatively affects block processing time. An alternative is to turn on compaction readahead with ",(0,s.jsx)(n.code,{children:"--Db.CompactionReadAhead 128000"}),"; however, this may take up a few extra GB of memory depending on the readahead value."]}),"\n",(0,s.jsx)(n.h2,{id:"old-bodies-and-receipts",children:"Old bodies and receipts"}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and old receipts are the process of downloading block bodies and receipts. This is required for some RPC methods, such as ",(0,s.jsx)(n.code,{children:"eth_getLogs"}),", and for consensus clients to work correctly. If you don't need them, skip this phase with"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync false\n--Sync.DownloadReceiptsInFastSync false\n--Sync.NonValidatorNode true\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and receipts are mainly limited by your Internet connection. With a 1Gbps connection, they consume around 250MB/s and 500MB/s of writes, respectively, which is generally reasonable for most PCIE SSDs. On older systems or VPS with low single thread performance and high Internet speed, the block body deserialization may be a bottleneck, in which case, you can increase the number of network processing threads with ",(0,s.jsx)(n.code,{children:"--Network.ProcessingThreadCount 32"}),". However, this may impact block processing time."]}),"\n",(0,s.jsx)(n.h2,{id:"block-processing-time-and-attestation",children:"Block processing time and attestation"}),"\n",(0,s.jsxs)(n.p,{children:["Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time.\nTo help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option ",(0,s.jsx)(n.code,{children:"--Init.MemoryHint 2000000000"}),". If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time."]}),"\n",(0,s.jsxs)(n.p,{children:["It is also possible to disable compression of the state DB with ",(0,s.jsx)(n.code,{children:"--Db.StateDbDisableCompression true"})," that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers 20"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3671],{4872:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=t(4848),i=t(8453);const o={title:"Performance tuning",sidebar_position:7},r=void 0,a={id:"fundamentals/performance-tuning",title:"Performance tuning",description:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.",source:"@site/versioned_docs/version-1.27.0/fundamentals/performance-tuning.md",sourceDirName:"fundamentals",slug:"/fundamentals/performance-tuning",permalink:"/1.27.0/fundamentals/performance-tuning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/performance-tuning.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:7,frontMatter:{title:"Performance tuning",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Pruning",permalink:"/1.27.0/fundamentals/pruning"},next:{title:"Private networks",permalink:"/1.27.0/fundamentals/private-networks"}},c={},d=[{value:"Peer discovery",id:"peer-discovery",level:2},{value:"Port forwarding",id:"port-forwarding",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Snap sync",id:"snap-sync",level:2},{value:"Old bodies and receipts",id:"old-bodies-and-receipts",level:2},{value:"Block processing time and attestation",id:"block-processing-time-and-attestation",level:2}];function l(e){const n={code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs."}),"\n",(0,s.jsx)(n.h2,{id:"peer-discovery",children:"Peer discovery"}),"\n",(0,s.jsxs)(n.p,{children:["To connect to the Ethereum network, Nethermind needs to maintain connections to other clients. The number of connections can be configured with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers "}),". The default value depends on the network. Increasing this number may reduce syncing time, while reducing this number may help with attestation performance.\nAlso, you can increase the rate at which a new connection is established with ",(0,s.jsx)(n.code,{children:"--Network.MaxOutgoingConnectsPerSec "}),". The default value is 20 while 50 would be a reasonable higher value. This tends to reduce the snap sync time; however, some ISPs may throttle your Internet connection if you set this value too high. Also, some WiFi routers may hang if the value is set too high."]}),"\n",(0,s.jsx)(n.h2,{id:"port-forwarding",children:"Port forwarding"}),"\n",(0,s.jsxs)(n.p,{children:["While port forwarding is not strictly required, it helps significantly with finding peers and is essential for the network's overall health. The exact steps for port forwarding highly depend on your environment, router, and ISP. For most home configurations, automatic port forwarding can be turned on with ",(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true"}),".\nSome ISPs are more restrictive and do not support port forwarding and/or utilize provider-level NAT. In such cases, your best option is to use a VPN that supports port forwarding. Keep in mind that consensus clients need a separate port forwarding."]}),"\n",(0,s.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,s.jsx)(n.p,{children:"On the Ethereum mainnet, most of the syncing time is split into three phases: snap sync, old bodies, and old receipts. Strictly speaking, there are also fast sync, full sync, and state sync phases. However, they usually complete in less than a minute, with state sync usually taking up to 3 minutes."}),"\n",(0,s.jsx)(n.p,{children:"At the moment, the best test case sync time is 1 hour 50 minutes for all phases with the following configuration:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"CPU: AMD Ryzen 9 7950X"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Memory: 128GB RAM"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Storage: Intel Optane SSD 905P Series 900GB"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Network: 1 Gbps Internet with TorGuard VPN with WireGuard protocol. Both execution and consensus clients port forwarding are set up manually."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Command line options:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true\n--Network.MaxOutgoingConnectsPerSec 50\n--Network.ProcessingThreadCount 32\n--Sync.TuneDbMode HeavyWrite\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"snap-sync",children:"Snap sync"}),"\n",(0,s.jsx)(n.p,{children:"Snap sync is the process of downloading the Ethereum state tree. After it is complete, and after the state sync phase, Nethermind can process and follow the chain. The fastest tested snap sync and state sync time is 25 minutes.\nThis phase is the most I/O-intensive sync phase, and therefore, assuming a fast internet, the sync time highly depends on your SSD's write speed. Remember that most SSDs only advertise peak write speed, usually above 5GB/s. However, they tend to slow down significantly to around 0.5GB/s (or even less for a QLC SSD) after a few seconds. Therefore, look for SSDs with high sustained write speed."}),"\n",(0,s.jsxs)(n.p,{children:["Also, ensuring your SSD is sufficiently cooled to prevent thermal throttling is essential. This is often overlooked as most workloads rarely stress SSD as much; however, to reduce sync time, Nethermind will utilize your SSD to its limit. If, for whatever reason, you need to minimize the I/O load, you can specify a rate limit with ",(0,s.jsx)(n.code,{children:"--Db.MaxBytesPerSec 1000000000"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Nethermind temporarily changes the database configuration during sync to optimize it for writing, notably the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode HeavyWrite"})," is turned on by default. On some systems with slow SSDs, the use of the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode AggressiveHeavyWrite"})," may boost. Also, the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode DisableCompaction"})," can be used to disable compaction altogether. This is likely faster for systems using entry-level NVMe SSDs and is also useful to extend the lifespan of your SSD as it provides the lowest total writes possible. However, it uses about 3GB of extra memory during snap sync. The state sync phase may appear to hang for about 10 minutes as the whole database compacts for the first time after snap sync."]}),"\n",(0,s.jsxs)(n.p,{children:["If you are running on a VPS with artificially capped IOPS, or you are using SATA SSD (which is highly not recommended), increasing the state DB block size with ",(0,s.jsx)(n.code,{children:"--Db.StateDbBlockSize 16384"})," may help to reduce snap sync time. However, this negatively affects block processing time. An alternative is to turn on compaction readahead with ",(0,s.jsx)(n.code,{children:"--Db.CompactionReadAhead 128000"}),"; however, this may take up a few extra GB of memory depending on the readahead value."]}),"\n",(0,s.jsx)(n.h2,{id:"old-bodies-and-receipts",children:"Old bodies and receipts"}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and old receipts are the process of downloading block bodies and receipts. This is required for some RPC methods, such as ",(0,s.jsx)(n.code,{children:"eth_getLogs"}),", and for consensus clients to work correctly. If you don't need them, skip this phase with"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync false\n--Sync.DownloadReceiptsInFastSync false\n--Sync.NonValidatorNode true\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and receipts are mainly limited by your Internet connection. With a 1Gbps connection, they consume around 250MB/s and 500MB/s of writes, respectively, which is generally reasonable for most PCIE SSDs. On older systems or VPS with low single thread performance and high Internet speed, the block body deserialization may be a bottleneck, in which case, you can increase the number of network processing threads with ",(0,s.jsx)(n.code,{children:"--Network.ProcessingThreadCount 32"}),". However, this may impact block processing time."]}),"\n",(0,s.jsx)(n.h2,{id:"block-processing-time-and-attestation",children:"Block processing time and attestation"}),"\n",(0,s.jsxs)(n.p,{children:["Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time.\nTo help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option ",(0,s.jsx)(n.code,{children:"--Init.MemoryHint 2000000000"}),". If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time."]}),"\n",(0,s.jsxs)(n.p,{children:["It is also possible to disable compression of the state DB with ",(0,s.jsx)(n.code,{children:"--Db.StateDbDisableCompression true"})," that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers 20"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bec904e0.ed7e77c3.js b/assets/js/bec904e0.2295ea13.js similarity index 99% rename from assets/js/bec904e0.ed7e77c3.js rename to assets/js/bec904e0.2295ea13.js index e466aff18..0a3df40dc 100644 --- a/assets/js/bec904e0.ed7e77c3.js +++ b/assets/js/bec904e0.2295ea13.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2307],{8859:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=n(4848),o=n(8453);const r={title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},i=void 0,a={id:"fundamentals/private-networks",title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",source:"@site/versioned_docs/version-1.29.0/fundamentals/private-networks.md",sourceDirName:"fundamentals",slug:"/fundamentals/private-networks",permalink:"/fundamentals/private-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/private-networks.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Performance tuning",permalink:"/fundamentals/performance-tuning"},next:{title:"JSON-RPC server",permalink:"/interacting/json-rpc-server"}},c={},d=[{value:"Step 1: Prerequisites",id:"step-1-prerequisites",level:2},{value:"Step 2: Configure your network",id:"step-2-configure-your-network",level:2},{value:"Step 3: Deploy",id:"step-3-deploy",level:2},{value:"Step 4: Optional workflows",id:"step-4-optional-workflows",level:2},{value:"Simulating MEV workflows with mev-boost",id:"simulating-mev-workflows-with-mev-boost",level:3},{value:"Observability tools",id:"observability-tools",level:3},{value:"Deploying on Kubernetes",id:"deploying-on-kubernetes",level:3},{value:"Questions and feedback",id:"questions-and-feedback",level:2}];function l(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["This guide will walk you through using ",(0,s.jsxs)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:["Kurtosis ",(0,s.jsx)(t.code,{children:"ethereum-package"})]})," to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure to simulate MEV workflows."]}),"\n",(0,s.jsx)(t.h2,{id:"step-1-prerequisites",children:"Step 1: Prerequisites"}),"\n",(0,s.jsxs)(t.p,{children:["Before you begin, ensure you have ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/install",children:"Kurtosis CLI"})," and ",(0,s.jsx)(t.a,{href:"https://docs.docker.com/get-docker",children:"Docker"})," installed. The ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:(0,s.jsx)(t.code,{children:"ethereum-package"})})," is a Kurtosis environment definition known as a ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/packages",children:"package"}),". For more info about Kurtosis, see the ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com",children:"Kurtosis docs"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-2-configure-your-network",children:"Step 2: Configure your network"}),"\n",(0,s.jsxs)(t.p,{children:["Next, in your home directory, create a file with the name ",(0,s.jsx)(t.code,{children:"network_params.json"})," and populate it with the following contents:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-json",metastring:'title="network_params.json"',children:'{\n "participants": [\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lighthouse",\n "cl_client_image": "sigp/lighthouse:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "teku",\n "cl_client_image": "consensys/teku:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lodestar",\n "cl_client_image": "chainsafe/lodestar:next",\n "count": 1\n }\n ],\n "mev_type": "None",\n "launch_additional_services": false\n}\n'})}),"\n",(0,s.jsxs)(t.p,{children:["As you can see above, you have effectively created a network configuration file that Kurtosis will use to pass in the necessary parameters at runtime for your network. Notice that the ",(0,s.jsx)(t.code,{children:"participant"})," key describes the execution and consensus client pairing desired for each full node and how many nodes of that type to instantiate."]}),"\n",(0,s.jsxs)(t.p,{children:["There are many other configurations and flags you can use, including metrics and observability tools (e.g., Grafana, Prometheus, etc). For all supported options, see the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package#configuration",children:"configuration"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-3-deploy",children:"Step 3: Deploy"}),"\n",(0,s.jsxs)(t.p,{children:["Finally, once you have saved the ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, it is time to deploy the private net:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'kurtosis run github.com/ethpandaops/ethereum-package "$(cat ~/network_params.json)"\n'})}),"\n",(0,s.jsxs)(t.p,{children:["Kurtosis will use the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," environment definition and your custom network configuration (defined in ",(0,s.jsx)(t.code,{children:"network_params.json"}),") to spin up your network. Kurtosis will first spin up an ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"})," (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 and used to start up the private testnet."]}),"\n",(0,s.jsx)(t.p,{children:"Here is a sample output:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{children:"INFO[2023-09-01T16:10:45-04:00] ====================================================\nINFO[2023-09-01T16:10:45-04:00] || Created enclave: timid-knoll ||\nINFO[2023-09-01T16:10:45-04:00] ====================================================\nName: timid-knoll\nUUID: 939dfb5d59b0\nStatus: RUNNING\nCreation Time: Fri, 01 Sep 2023 16:08:57 EDT\n\n========================================= Files Artifacts =========================================\nUUID Name\na876b06035b7 1-lighthouse-nethermind-0-63\n87955ef69845 2-teku-nethermind-64-127\n4f77377da494 3-lodestar-nethermind-128-191\n9734313101e3 cl-genesis-data\n4164ed5c594c el-genesis-data\na49a3d2774b5 genesis-generation-config-cl\n16fcc4f96236 genesis-generation-config-el\n5fc72346f646 geth-prefunded-keys\n96ae153a0b51 prysm-password\n\n========================================== User Services ==========================================\nUUID Name Ports Status\nf369802ad2ae cl-1-lighthouse-nethermind http: 4000/tcp -> http://127.0.0.1:49894 RUNNING\n metrics: 5054/tcp -> http://127.0.0.1:49892\n tcp-discovery: 9000/tcp -> 127.0.0.1:49893\n udp-discovery: 9000/udp -> 127.0.0.1:64949\n5e14eb26ef45 cl-1-lighthouse-nethermind-validator http: 5042/tcp -> 127.0.0.1:49895 RUNNING\n metrics: 5064/tcp -> http://127.0.0.1:49896\nfed533d0e143 cl-2-teku-nethermind http: 4000/tcp -> 127.0.0.1:49899 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49897\n tcp-discovery: 9000/tcp -> 127.0.0.1:49898\n udp-discovery: 9000/udp -> 127.0.0.1:55521\n69cd832de246 cl-3-lodestar-nethermind http: 4000/tcp -> 127.0.0.1:49903 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49901\n tcp-discovery: 9000/tcp -> 127.0.0.1:49902\n udp-discovery: 9000/udp -> 127.0.0.1:50507\n75e3eec0c7d1 cl-3-lodestar-nethermind-validator metrics: 8008/tcp -> 127.0.0.1:49904 RUNNING\ne10c3f07e0e0 el-1-nethermind-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:49872 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49870\n tcp-discovery: 30303/tcp -> 127.0.0.1:49869\n udp-discovery: 30303/udp -> 127.0.0.1:64508\n ws: 8546/tcp -> 127.0.0.1:49871\nc6a28d3136fe el-2-nethermind-teku engine-rpc: 8551/tcp -> 127.0.0.1:49873 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49875\n tcp-discovery: 30303/tcp -> 127.0.0.1:49874\n udp-discovery: 30303/udp -> 127.0.0.1:52495\n ws: 8546/tcp -> 127.0.0.1:49876\n2fae3b3c41d3 el-3-nethermind-lodestar engine-rpc: 8551/tcp -> 127.0.0.1:49890 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49888\n tcp-discovery: 30303/tcp -> 127.0.0.1:49891\n udp-discovery: 30303/udp -> 127.0.0.1:62119\n ws: 8546/tcp -> 127.0.0.1:49889\n403cafe8416e prelaunch-data-generator-cl-genesis-data RUNNING\nebea71008cf4 prelaunch-data-generator-el-genesis-data RUNNING\n"})}),"\n",(0,s.jsx)(t.p,{children:"And that is it! You now have a 3-node, private Ethereum devnet with Nethermind/Lodestar, Nethermind/Teku, and Nethermind/Lighthouse execution and consensus client combinations."}),"\n",(0,s.jsxs)(t.p,{children:["Notice how, at the end, Kurtosis will print out the contents of your enclave, which includes both the various ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/files-artifacts",children:"files artifacts"})," and services that form your network. Kurtosis also maps the container ports to ephemeral local ports on your machine."]}),"\n",(0,s.jsxs)(t.p,{children:["Genesis data was generated using this ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-genesis-generator",children:"genesis-generator"})," to bootstrap the execution and consensus 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 ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"Kurtosis packages are modular, reproducible, and will work over Docker or Kubernetes. Read on to learn about additional services and configurations you may want to add to your private network."}),"\n",(0,s.jsx)(t.h2,{id:"step-4-optional-workflows",children:"Step 4: Optional workflows"}),"\n",(0,s.jsx)(t.p,{children:"This section briefly covers some optional configurations for your private devnet that are commonly used for validating and testing node-level behavior."}),"\n",(0,s.jsxs)(t.h3,{id:"simulating-mev-workflows-with-mev-boost",children:["Simulating MEV workflows with ",(0,s.jsx)(t.code,{children:"mev-boost"})]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," can simulate out-of-protocol Proposer Builder Separation (PBS) workflows using Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure. With a single flag, you can configure your network's validators to be instantiated with ",(0,s.jsx)(t.code,{children:"mev-boost"})," and be registered with a relayer to receive payloads from builders."]}),"\n",(0,s.jsxs)(t.p,{children:["To enable this in your ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, set ",(0,s.jsx)(t.code,{children:'"mev_type":'})," to ",(0,s.jsx)(t.code,{children:'"full"'})," or ",(0,s.jsx)(t.code,{children:'"mock"'}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["To learn more about how the ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure works with your private network, check out ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/how-to-full-mev-with-ethereum-package",children:"this guide"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"observability-tools",children:"Observability tools"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," comes out of the box with a few observability tools, including:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"A Grafana and Prometheus instance"}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/dapplion/beacon-metrics-gazer",children:"beacon metrics gazer service"})," to collect network-wide participation metrics"]}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/ethDreamer/json_rpc_snoop",children:"JSON-RPC Snooper"})," to log responses & requests between the execution engine API and the consensus client"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["To add your own custom Grafana dashboard template, fork the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," repository and add your configuration ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package/tree/main/static_files/grafana-config/dashboards",children:"here"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"deploying-on-kubernetes",children:"Deploying on Kubernetes"}),"\n",(0,s.jsxs)(t.p,{children:["As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," on Kubernetes, see ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/k8s",children:"Running Kurtosis in Kubernetes"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"questions-and-feedback",children:"Questions and feedback"}),"\n",(0,s.jsxs)(t.p,{children:["If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:"GitHub"})," or ",(0,s.jsx)(t.a,{href:"https://discord.gg/jJFG7XBqcY",children:"Discord"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2307],{8859:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=n(4848),o=n(8453);const r={title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},i=void 0,a={id:"fundamentals/private-networks",title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",source:"@site/versioned_docs/version-1.29.0/fundamentals/private-networks.md",sourceDirName:"fundamentals",slug:"/fundamentals/private-networks",permalink:"/fundamentals/private-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/private-networks.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Performance tuning",permalink:"/fundamentals/performance-tuning"},next:{title:"JSON-RPC server",permalink:"/interacting/json-rpc-server"}},c={},d=[{value:"Step 1: Prerequisites",id:"step-1-prerequisites",level:2},{value:"Step 2: Configure your network",id:"step-2-configure-your-network",level:2},{value:"Step 3: Deploy",id:"step-3-deploy",level:2},{value:"Step 4: Optional workflows",id:"step-4-optional-workflows",level:2},{value:"Simulating MEV workflows with mev-boost",id:"simulating-mev-workflows-with-mev-boost",level:3},{value:"Observability tools",id:"observability-tools",level:3},{value:"Deploying on Kubernetes",id:"deploying-on-kubernetes",level:3},{value:"Questions and feedback",id:"questions-and-feedback",level:2}];function l(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["This guide will walk you through using ",(0,s.jsxs)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:["Kurtosis ",(0,s.jsx)(t.code,{children:"ethereum-package"})]})," to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure to simulate MEV workflows."]}),"\n",(0,s.jsx)(t.h2,{id:"step-1-prerequisites",children:"Step 1: Prerequisites"}),"\n",(0,s.jsxs)(t.p,{children:["Before you begin, ensure you have ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/install",children:"Kurtosis CLI"})," and ",(0,s.jsx)(t.a,{href:"https://docs.docker.com/get-docker",children:"Docker"})," installed. The ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:(0,s.jsx)(t.code,{children:"ethereum-package"})})," is a Kurtosis environment definition known as a ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/packages",children:"package"}),". For more info about Kurtosis, see the ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com",children:"Kurtosis docs"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-2-configure-your-network",children:"Step 2: Configure your network"}),"\n",(0,s.jsxs)(t.p,{children:["Next, in your home directory, create a file with the name ",(0,s.jsx)(t.code,{children:"network_params.json"})," and populate it with the following contents:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-json",metastring:'title="network_params.json"',children:'{\n "participants": [\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lighthouse",\n "cl_client_image": "sigp/lighthouse:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "teku",\n "cl_client_image": "consensys/teku:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lodestar",\n "cl_client_image": "chainsafe/lodestar:next",\n "count": 1\n }\n ],\n "mev_type": "None",\n "launch_additional_services": false\n}\n'})}),"\n",(0,s.jsxs)(t.p,{children:["As you can see above, you have effectively created a network configuration file that Kurtosis will use to pass in the necessary parameters at runtime for your network. Notice that the ",(0,s.jsx)(t.code,{children:"participant"})," key describes the execution and consensus client pairing desired for each full node and how many nodes of that type to instantiate."]}),"\n",(0,s.jsxs)(t.p,{children:["There are many other configurations and flags you can use, including metrics and observability tools (e.g., Grafana, Prometheus, etc). For all supported options, see the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package#configuration",children:"configuration"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-3-deploy",children:"Step 3: Deploy"}),"\n",(0,s.jsxs)(t.p,{children:["Finally, once you have saved the ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, it is time to deploy the private net:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'kurtosis run github.com/ethpandaops/ethereum-package "$(cat ~/network_params.json)"\n'})}),"\n",(0,s.jsxs)(t.p,{children:["Kurtosis will use the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," environment definition and your custom network configuration (defined in ",(0,s.jsx)(t.code,{children:"network_params.json"}),") to spin up your network. Kurtosis will first spin up an ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"})," (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 and used to start up the private testnet."]}),"\n",(0,s.jsx)(t.p,{children:"Here is a sample output:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{children:"INFO[2023-09-01T16:10:45-04:00] ====================================================\nINFO[2023-09-01T16:10:45-04:00] || Created enclave: timid-knoll ||\nINFO[2023-09-01T16:10:45-04:00] ====================================================\nName: timid-knoll\nUUID: 939dfb5d59b0\nStatus: RUNNING\nCreation Time: Fri, 01 Sep 2023 16:08:57 EDT\n\n========================================= Files Artifacts =========================================\nUUID Name\na876b06035b7 1-lighthouse-nethermind-0-63\n87955ef69845 2-teku-nethermind-64-127\n4f77377da494 3-lodestar-nethermind-128-191\n9734313101e3 cl-genesis-data\n4164ed5c594c el-genesis-data\na49a3d2774b5 genesis-generation-config-cl\n16fcc4f96236 genesis-generation-config-el\n5fc72346f646 geth-prefunded-keys\n96ae153a0b51 prysm-password\n\n========================================== User Services ==========================================\nUUID Name Ports Status\nf369802ad2ae cl-1-lighthouse-nethermind http: 4000/tcp -> http://127.0.0.1:49894 RUNNING\n metrics: 5054/tcp -> http://127.0.0.1:49892\n tcp-discovery: 9000/tcp -> 127.0.0.1:49893\n udp-discovery: 9000/udp -> 127.0.0.1:64949\n5e14eb26ef45 cl-1-lighthouse-nethermind-validator http: 5042/tcp -> 127.0.0.1:49895 RUNNING\n metrics: 5064/tcp -> http://127.0.0.1:49896\nfed533d0e143 cl-2-teku-nethermind http: 4000/tcp -> 127.0.0.1:49899 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49897\n tcp-discovery: 9000/tcp -> 127.0.0.1:49898\n udp-discovery: 9000/udp -> 127.0.0.1:55521\n69cd832de246 cl-3-lodestar-nethermind http: 4000/tcp -> 127.0.0.1:49903 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49901\n tcp-discovery: 9000/tcp -> 127.0.0.1:49902\n udp-discovery: 9000/udp -> 127.0.0.1:50507\n75e3eec0c7d1 cl-3-lodestar-nethermind-validator metrics: 8008/tcp -> 127.0.0.1:49904 RUNNING\ne10c3f07e0e0 el-1-nethermind-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:49872 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49870\n tcp-discovery: 30303/tcp -> 127.0.0.1:49869\n udp-discovery: 30303/udp -> 127.0.0.1:64508\n ws: 8546/tcp -> 127.0.0.1:49871\nc6a28d3136fe el-2-nethermind-teku engine-rpc: 8551/tcp -> 127.0.0.1:49873 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49875\n tcp-discovery: 30303/tcp -> 127.0.0.1:49874\n udp-discovery: 30303/udp -> 127.0.0.1:52495\n ws: 8546/tcp -> 127.0.0.1:49876\n2fae3b3c41d3 el-3-nethermind-lodestar engine-rpc: 8551/tcp -> 127.0.0.1:49890 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49888\n tcp-discovery: 30303/tcp -> 127.0.0.1:49891\n udp-discovery: 30303/udp -> 127.0.0.1:62119\n ws: 8546/tcp -> 127.0.0.1:49889\n403cafe8416e prelaunch-data-generator-cl-genesis-data RUNNING\nebea71008cf4 prelaunch-data-generator-el-genesis-data RUNNING\n"})}),"\n",(0,s.jsx)(t.p,{children:"And that is it! You now have a 3-node, private Ethereum devnet with Nethermind/Lodestar, Nethermind/Teku, and Nethermind/Lighthouse execution and consensus client combinations."}),"\n",(0,s.jsxs)(t.p,{children:["Notice how, at the end, Kurtosis will print out the contents of your enclave, which includes both the various ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/files-artifacts",children:"files artifacts"})," and services that form your network. Kurtosis also maps the container ports to ephemeral local ports on your machine."]}),"\n",(0,s.jsxs)(t.p,{children:["Genesis data was generated using this ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-genesis-generator",children:"genesis-generator"})," to bootstrap the execution and consensus 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 ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"Kurtosis packages are modular, reproducible, and will work over Docker or Kubernetes. Read on to learn about additional services and configurations you may want to add to your private network."}),"\n",(0,s.jsx)(t.h2,{id:"step-4-optional-workflows",children:"Step 4: Optional workflows"}),"\n",(0,s.jsx)(t.p,{children:"This section briefly covers some optional configurations for your private devnet that are commonly used for validating and testing node-level behavior."}),"\n",(0,s.jsxs)(t.h3,{id:"simulating-mev-workflows-with-mev-boost",children:["Simulating MEV workflows with ",(0,s.jsx)(t.code,{children:"mev-boost"})]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," can simulate out-of-protocol Proposer Builder Separation (PBS) workflows using Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure. With a single flag, you can configure your network's validators to be instantiated with ",(0,s.jsx)(t.code,{children:"mev-boost"})," and be registered with a relayer to receive payloads from builders."]}),"\n",(0,s.jsxs)(t.p,{children:["To enable this in your ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, set ",(0,s.jsx)(t.code,{children:'"mev_type":'})," to ",(0,s.jsx)(t.code,{children:'"full"'})," or ",(0,s.jsx)(t.code,{children:'"mock"'}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["To learn more about how the ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure works with your private network, check out ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/how-to-full-mev-with-ethereum-package",children:"this guide"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"observability-tools",children:"Observability tools"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," comes out of the box with a few observability tools, including:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"A Grafana and Prometheus instance"}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/dapplion/beacon-metrics-gazer",children:"beacon metrics gazer service"})," to collect network-wide participation metrics"]}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/ethDreamer/json_rpc_snoop",children:"JSON-RPC Snooper"})," to log responses & requests between the execution engine API and the consensus client"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["To add your own custom Grafana dashboard template, fork the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," repository and add your configuration ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package/tree/main/static_files/grafana-config/dashboards",children:"here"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"deploying-on-kubernetes",children:"Deploying on Kubernetes"}),"\n",(0,s.jsxs)(t.p,{children:["As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," on Kubernetes, see ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/k8s",children:"Running Kurtosis in Kubernetes"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"questions-and-feedback",children:"Questions and feedback"}),"\n",(0,s.jsxs)(t.p,{children:["If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:"GitHub"})," or ",(0,s.jsx)(t.a,{href:"https://discord.gg/jJFG7XBqcY",children:"Discord"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bf9df08f.792a628c.js b/assets/js/bf9df08f.29cb8f1a.js similarity index 99% rename from assets/js/bf9df08f.792a628c.js rename to assets/js/bf9df08f.29cb8f1a.js index ed195911e..775e63192 100644 --- a/assets/js/bf9df08f.792a628c.js +++ b/assets/js/bf9df08f.29cb8f1a.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2544],{5288:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>h,toc:()=>c});var i=t(4848),s=t(8453);const r={title:"Migrating from Geth",sidebar_position:4},o=void 0,h={id:"get-started/migrating-from-geth",title:"Migrating from Geth",description:"This guide will walk you through all the steps required for a seamless and quick transition.",source:"@site/versioned_docs/version-1.25.4/get-started/migrating-from-geth.md",sourceDirName:"get-started",slug:"/get-started/migrating-from-geth",permalink:"/1.25.4/get-started/migrating-from-geth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/get-started/migrating-from-geth.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"Migrating from Geth",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Consensus clients",permalink:"/1.25.4/get-started/consensus-clients"},next:{title:"Configuration",permalink:"/1.25.4/fundamentals/configuration"}},d={},c=[{value:"Option 1: Sync Nethermind next to Geth",id:"option-1",level:2},{value:"Option 2: Sync Nethermind using Sedge next to Geth",id:"option-2",level:2},{value:"Option 3: Remove Geth and sync Nethermind",id:"option-3",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This guide will walk you through all the steps required for a seamless and quick transition."}),"\n",(0,i.jsxs)(n.p,{children:["First, ensure ",(0,i.jsx)(n.em,{children:"the disk has enough space"}),". The most secure way is having a Nethermind synced on the same machine as Geth without shutting Geth down. That allows you to check whether Nethermind is syncing properly, verify whether everything works as expected, and reduce node downtime to a bare minimum. This is a recommended approach for any public JSON-RPC provider or a validator."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the disk has enough space, ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"})," or ",(0,i.jsx)(n.a,{href:"#option-2",children:"option 2"})," are the recommended choices."]}),"\n",(0,i.jsx)(n.li,{children:"If there is not enough disk space, and downtime is not an option, we recommend either extending the disk or, if not possible, hosting Nethermind on another machine, syncing it, and whenever it completes, moving everything validator-related to that machine, and abandoning the first one."}),"\n",(0,i.jsxs)(n.li,{children:["If downtime of around 12 hours or more is not a problem, see the ",(0,i.jsx)(n.a,{href:"#option-3",children:"option 3"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"option-1",children:"Option 1: Sync Nethermind next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:["First, ",(0,i.jsx)(n.a,{href:"/1.25.4/get-started/installing-nethermind",children:"install Nethermind"})," and a ",(0,i.jsx)(n.a,{href:"/1.25.4/get-started/consensus-clients",children:"consensus client"})," of your choice."]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"If you choose the same consensus client for Nethermind that is already being used with Geth, ensure their settings, such as data directories, do not interfere."}),"\n",(0,i.jsx)(n.li,{children:"Ensure the network ports of the consensus client paired with Nethermind and the one paired with Geth do not interfere with each other."}),"\n",(0,i.jsxs)(n.li,{children:["Ensure the JSON-RPC port, Engine API port, and the P2P networking ports of Nethermind are different from the ones used by Geth. These ports are set using the following command line options:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort "})}),"\n"]}),"\n"]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. To check the sync status, use the ",(0,i.jsx)(n.a,{href:"/1.25.4/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method. When it returns ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind is considered fully synced with all block bodies and receipts needed to work properly as a validator. Another option to monitor the sync is a ",(0,i.jsx)(n.a,{href:"/1.25.4/monitoring/health-check",children:"health check"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Once Nethermind is synced, shut down both Geth and Nethermind, along with its paired consensus client. Then, restart Nethermind using the ports assigned for and the JWT secret used by Geth before. Ensure no warnings or errors are present in the logs of both Nethermind and the consensus client. Also, check if Nethermind is following the chain properly. If everything is alright, you can remove Geth and the consensus client paired with Nethermind previously along with their data."}),"\n",(0,i.jsx)(n.h2,{id:"option-2",children:"Option 2: Sync Nethermind using Sedge next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"})," is a setup tool for PoS validators and nodes that runs on Linux and macOS."]}),"\n",(0,i.jsxs)(n.p,{children:["This option is similar to the ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"}),", but Sedge automatically takes care of conflicting settings making the entire process much easier."]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsx)(n.p,{children:"You can add a flag to Sedge as follows. For instance:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["For the execution client, ",(0,i.jsx)(n.code,{children:"--el-extra-flag JsonRpc.Port=8546"})]}),"\n",(0,i.jsxs)(n.li,{children:["For the consensus client, ",(0,i.jsx)(n.code,{children:"--cl-extra-flag rpc-port=4001"})]}),"\n"]})]}),"\n",(0,i.jsxs)(n.p,{children:["Once Nethermind is synced, you can remove extra flags if any from the ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," and restart the node as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"docker compose stop execution\ndocker compose up -d execution\n"})}),"\n",(0,i.jsx)(n.h2,{id:"option-3",children:"Option 3: Remove Geth and sync Nethermind"}),"\n",(0,i.jsx)(n.p,{children:"This is the simplest option as it doesn't require configuration adjustments. However, the node will be down until Nethermind is syncing."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Shut down and remove Geth along with its data."}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/1.25.4/get-started/installing-nethermind",children:"Install Nethermind"})}),"\n",(0,i.jsx)(n.li,{children:"Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the ",(0,i.jsx)(n.a,{href:"/1.25.4/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method or the ",(0,i.jsx)(n.a,{href:"/1.25.4/monitoring/health-check",children:"health check"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>h});var i=t(6540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function h(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2544],{5288:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>h,toc:()=>c});var i=t(4848),s=t(8453);const r={title:"Migrating from Geth",sidebar_position:4},o=void 0,h={id:"get-started/migrating-from-geth",title:"Migrating from Geth",description:"This guide will walk you through all the steps required for a seamless and quick transition.",source:"@site/versioned_docs/version-1.25.4/get-started/migrating-from-geth.md",sourceDirName:"get-started",slug:"/get-started/migrating-from-geth",permalink:"/1.25.4/get-started/migrating-from-geth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/get-started/migrating-from-geth.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"Migrating from Geth",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Consensus clients",permalink:"/1.25.4/get-started/consensus-clients"},next:{title:"Configuration",permalink:"/1.25.4/fundamentals/configuration"}},d={},c=[{value:"Option 1: Sync Nethermind next to Geth",id:"option-1",level:2},{value:"Option 2: Sync Nethermind using Sedge next to Geth",id:"option-2",level:2},{value:"Option 3: Remove Geth and sync Nethermind",id:"option-3",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This guide will walk you through all the steps required for a seamless and quick transition."}),"\n",(0,i.jsxs)(n.p,{children:["First, ensure ",(0,i.jsx)(n.em,{children:"the disk has enough space"}),". The most secure way is having a Nethermind synced on the same machine as Geth without shutting Geth down. That allows you to check whether Nethermind is syncing properly, verify whether everything works as expected, and reduce node downtime to a bare minimum. This is a recommended approach for any public JSON-RPC provider or a validator."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the disk has enough space, ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"})," or ",(0,i.jsx)(n.a,{href:"#option-2",children:"option 2"})," are the recommended choices."]}),"\n",(0,i.jsx)(n.li,{children:"If there is not enough disk space, and downtime is not an option, we recommend either extending the disk or, if not possible, hosting Nethermind on another machine, syncing it, and whenever it completes, moving everything validator-related to that machine, and abandoning the first one."}),"\n",(0,i.jsxs)(n.li,{children:["If downtime of around 12 hours or more is not a problem, see the ",(0,i.jsx)(n.a,{href:"#option-3",children:"option 3"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"option-1",children:"Option 1: Sync Nethermind next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:["First, ",(0,i.jsx)(n.a,{href:"/1.25.4/get-started/installing-nethermind",children:"install Nethermind"})," and a ",(0,i.jsx)(n.a,{href:"/1.25.4/get-started/consensus-clients",children:"consensus client"})," of your choice."]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"If you choose the same consensus client for Nethermind that is already being used with Geth, ensure their settings, such as data directories, do not interfere."}),"\n",(0,i.jsx)(n.li,{children:"Ensure the network ports of the consensus client paired with Nethermind and the one paired with Geth do not interfere with each other."}),"\n",(0,i.jsxs)(n.li,{children:["Ensure the JSON-RPC port, Engine API port, and the P2P networking ports of Nethermind are different from the ones used by Geth. These ports are set using the following command line options:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort "})}),"\n"]}),"\n"]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. To check the sync status, use the ",(0,i.jsx)(n.a,{href:"/1.25.4/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method. When it returns ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind is considered fully synced with all block bodies and receipts needed to work properly as a validator. Another option to monitor the sync is a ",(0,i.jsx)(n.a,{href:"/1.25.4/monitoring/health-check",children:"health check"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Once Nethermind is synced, shut down both Geth and Nethermind, along with its paired consensus client. Then, restart Nethermind using the ports assigned for and the JWT secret used by Geth before. Ensure no warnings or errors are present in the logs of both Nethermind and the consensus client. Also, check if Nethermind is following the chain properly. If everything is alright, you can remove Geth and the consensus client paired with Nethermind previously along with their data."}),"\n",(0,i.jsx)(n.h2,{id:"option-2",children:"Option 2: Sync Nethermind using Sedge next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"})," is a setup tool for PoS validators and nodes that runs on Linux and macOS."]}),"\n",(0,i.jsxs)(n.p,{children:["This option is similar to the ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"}),", but Sedge automatically takes care of conflicting settings making the entire process much easier."]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsx)(n.p,{children:"You can add a flag to Sedge as follows. For instance:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["For the execution client, ",(0,i.jsx)(n.code,{children:"--el-extra-flag JsonRpc.Port=8546"})]}),"\n",(0,i.jsxs)(n.li,{children:["For the consensus client, ",(0,i.jsx)(n.code,{children:"--cl-extra-flag rpc-port=4001"})]}),"\n"]})]}),"\n",(0,i.jsxs)(n.p,{children:["Once Nethermind is synced, you can remove extra flags if any from the ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," and restart the node as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"docker compose stop execution\ndocker compose up -d execution\n"})}),"\n",(0,i.jsx)(n.h2,{id:"option-3",children:"Option 3: Remove Geth and sync Nethermind"}),"\n",(0,i.jsx)(n.p,{children:"This is the simplest option as it doesn't require configuration adjustments. However, the node will be down until Nethermind is syncing."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Shut down and remove Geth along with its data."}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/1.25.4/get-started/installing-nethermind",children:"Install Nethermind"})}),"\n",(0,i.jsx)(n.li,{children:"Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the ",(0,i.jsx)(n.a,{href:"/1.25.4/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method or the ",(0,i.jsx)(n.a,{href:"/1.25.4/monitoring/health-check",children:"health check"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>h});var i=t(6540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function h(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c03f214b.162df813.js b/assets/js/c03f214b.cacbed68.js similarity index 99% rename from assets/js/c03f214b.162df813.js rename to assets/js/c03f214b.cacbed68.js index 2350d824a..7274f7b66 100644 --- a/assets/js/c03f214b.162df813.js +++ b/assets/js/c03f214b.cacbed68.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1084],{601:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>d,toc:()=>h});var s=t(4848),i=t(8453);const r={sidebar_label:"FAQ",sidebar_position:7},o="FAQ",d={id:"faq",title:"faq",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.27.0/faq.md",sourceDirName:".",slug:"/faq",permalink:"/1.27.0/faq",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/faq.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:7,frontMatter:{sidebar_label:"FAQ",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Custom analytic tools",permalink:"/1.27.0/developers/custom-analytic-tools"},next:{title:"Troubleshooting",permalink:"/1.27.0/troubleshooting"}},a={},h=[{value:"How do I upgrade my node?",id:"how-do-i-upgrade-my-node",level:2},{value:"Upgrading Nethermind for Docker users",id:"upgrading-nethermind-for-docker-users",level:3},{value:"Upgrading Nethermind for Systemd users",id:"upgrading-nethermind-for-systemd-users",level:3},{value:"Upgrading Nethermind when running as a background process",id:"upgrading-nethermind-when-running-as-a-background-process",level:3},{value:"What is the minimum viable config to serve ETH2 validator requests?",id:"what-is-the-minimum-viable-config-to-serve-eth2-validator-requests",level:2},{value:"Can I disable logging to file?",id:"can-i-disable-logging-to-file",level:2},{value:"Can I disable logging of JSON RPC calls?",id:"can-i-disable-logging-of-json-rpc-calls",level:2},{value:"How can I configure a validator?",id:"how-can-i-configure-a-validator",level:2},{value:"My network bandwidth is used up by the Nethermind node",id:"my-network-bandwidth-is-used-up-by-the-nethermind-node",level:2},{value:"Is my node synced?",id:"is-my-node-synced",level:2},{value:"I want to run two or more nodes on one machine. How can I achieve this?",id:"i-want-to-run-two-or-more-nodes-on-one-machine-how-can-i-achieve-this",level:2}];function l(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"faq",children:"FAQ"})}),"\n",(0,s.jsx)(n.h2,{id:"how-do-i-upgrade-my-node",children:"How do I upgrade my node?"}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-for-docker-users",children:"Upgrading Nethermind for Docker users"}),"\n",(0,s.jsxs)(n.p,{children:["Pull the latest version of Nethermind using the ",(0,s.jsx)(n.code,{children:"latest"})," tag. You can find specific tag\nat ",(0,s.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind/tags",children:"Docker Hub"}),"."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"docker pull nethermind/nethermind:latest\n"})}),"\n",(0,s.jsxs)(n.p,{children:["or pull with docker-compose if the ",(0,s.jsx)(n.code,{children:"nethermind/nethermind:latest"})," base image is specified"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"docker-compose pull\n"})}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-for-systemd-users",children:"Upgrading Nethermind for Systemd users"}),"\n",(0,s.jsxs)(n.p,{children:["Simply download the latest Nethermind package either\nfrom ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io/",children:"https://downloads.nethermind.io"}),"\nor ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"https://github.com/NethermindEth/nethermind/releases"})," and make\nsure that the package is extracted in the ",(0,s.jsx)(n.code,{children:"WorkingDirectory"})," path defined in your ",(0,s.jsx)(n.code,{children:"systemd"})," service. Make sure to stop\nthe service before the upgrade and start it after."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-systemd",children:"WorkingDirectory=/home/nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-when-running-as-a-background-process",children:"Upgrading Nethermind when running as a background process"}),"\n",(0,s.jsxs)(n.p,{children:["Download the latest Nethermind package either from ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io/",children:"https://downloads.nethermind.io"}),"\nor ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"https://github.com/NethermindEth/nethermind/releases"})," and\nextract the package in the folder you currently use for running Nethermind. Make sure the service is down before the\nupdate. Make sure to stop the service before the upgrade and start it after."]}),"\n",(0,s.jsx)(n.h2,{id:"what-is-the-minimum-viable-config-to-serve-eth2-validator-requests",children:"What is the minimum viable config to serve ETH2 validator requests?"}),"\n",(0,s.jsxs)(n.p,{children:["This config downloads a minimal amount of bodies and receipts to be able to serve ETH2 validator requests since the\ndeposit contract deployment. It also enables JSON RPC (",(0,s.jsx)(n.strong,{children:"important - make sure that you do not open firewall to the\noutside world!"}),")"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"nethermind --config mainnet --Init.BaseDbPath /your/db/path\n"})}),"\n",(0,s.jsxs)(n.p,{children:["If you have any issues, please reach out to us on Discord: ",(0,s.jsx)(n.a,{href:"https://discord.gg/X539yhn",children:"https://discord.gg/X539yhn"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"can-i-disable-logging-to-file",children:"Can I disable logging to file?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on the logging config page ",(0,s.jsx)(n.a,{href:"/1.27.0/fundamentals/logs",children:"here"})]}),"\n",(0,s.jsx)(n.h2,{id:"can-i-disable-logging-of-json-rpc-calls",children:"Can I disable logging of JSON RPC calls?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on the logging config page ",(0,s.jsx)(n.a,{href:"/1.27.0/fundamentals/logs",children:"here"})]}),"\n",(0,s.jsx)(n.h2,{id:"how-can-i-configure-a-validator",children:"How can I configure a validator?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on running validators ",(0,s.jsx)(n.a,{href:"/1.27.0/validators/",children:"here"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"my-network-bandwidth-is-used-up-by-the-nethermind-node",children:"My network bandwidth is used up by the Nethermind node"}),"\n",(0,s.jsxs)(n.p,{children:["Try changing the config to a lower number (",(0,s.jsx)(n.code,{children:"--Network.ActivePeersMaxCount 25"}),")"]}),"\n",(0,s.jsx)(n.h2,{id:"is-my-node-synced",children:"Is my node synced?"}),"\n",(0,s.jsx)(n.p,{children:"Your node is synced when it shows log lines starting with:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.code,{children:"Processed ..."})}),"\n",(0,s.jsx)(n.p,{children:"And the block numbers shown are at the head of the chain."}),"\n",(0,s.jsxs)(n.p,{children:["Also, to check if your node is synced, you may execute ",(0,s.jsx)(n.code,{children:"eth_syncing"})," call check its result"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-text",children:'curl -X POST --data \'{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}\' localhost:8545\n'})}),"\n",(0,s.jsxs)(n.p,{children:["If the result shows ",(0,s.jsx)(n.code,{children:"false"})," it means that your node is ",(0,s.jsx)(n.strong,{children:"synced"})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-text",children:'{"jsonrpc":"2.0","result":false,"id":1}\n'})}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"In blockchain, any node can never be 100% sure it is synced because there is no central source of truth - so your node\nis generally not able to tell you that it is synced but, it is able to tell you that it believes it is synced based on\nwhat it knows from the peers that it talks to)."})}),"\n",(0,s.jsx)(n.h2,{id:"i-want-to-run-two-or-more-nodes-on-one-machine-how-can-i-achieve-this",children:"I want to run two or more nodes on one machine. How can I achieve this?"}),"\n",(0,s.jsx)(n.p,{children:"You have to configure a few ports used by Nethermind."}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Settings"}),(0,s.jsx)(n.th,{children:"Default Value"}),(0,s.jsx)(n.th,{children:"Comment"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.EnginePort"}),(0,s.jsx)(n.td,{children:"8551"}),(0,s.jsx)(n.td,{children:"Remember to change it on your Consensus client."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.Port"}),(0,s.jsx)(n.td,{children:"8545"}),(0,s.jsx)(n.td,{children:"Only needed if you are using standard JsonRpc"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.WebSocketsPort"}),(0,s.jsx)(n.td,{children:"8545"}),(0,s.jsx)(n.td,{children:"By default same as the JsonRpc port. Only relevant when you use WebSockets"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Network.P2PPort"}),(0,s.jsx)(n.td,{children:"30303"}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Network.DiscoveryPort"}),(0,s.jsx)(n.td,{children:"30303"}),(0,s.jsx)(n.td,{})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["The example of parameters that you have to pass to your second node when the first has been running with default\nsettings:",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.code,{children:"--JsonRpc.EnginePort 8552 --JsonRpc.Port 8546 --Network.P2PPort 30304 --Network.DiscoveryPort 30304"})]})]})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var s=t(6540);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1084],{601:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>d,toc:()=>h});var s=t(4848),i=t(8453);const r={sidebar_label:"FAQ",sidebar_position:7},o="FAQ",d={id:"faq",title:"faq",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.27.0/faq.md",sourceDirName:".",slug:"/faq",permalink:"/1.27.0/faq",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/faq.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:7,frontMatter:{sidebar_label:"FAQ",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Custom analytic tools",permalink:"/1.27.0/developers/custom-analytic-tools"},next:{title:"Troubleshooting",permalink:"/1.27.0/troubleshooting"}},a={},h=[{value:"How do I upgrade my node?",id:"how-do-i-upgrade-my-node",level:2},{value:"Upgrading Nethermind for Docker users",id:"upgrading-nethermind-for-docker-users",level:3},{value:"Upgrading Nethermind for Systemd users",id:"upgrading-nethermind-for-systemd-users",level:3},{value:"Upgrading Nethermind when running as a background process",id:"upgrading-nethermind-when-running-as-a-background-process",level:3},{value:"What is the minimum viable config to serve ETH2 validator requests?",id:"what-is-the-minimum-viable-config-to-serve-eth2-validator-requests",level:2},{value:"Can I disable logging to file?",id:"can-i-disable-logging-to-file",level:2},{value:"Can I disable logging of JSON RPC calls?",id:"can-i-disable-logging-of-json-rpc-calls",level:2},{value:"How can I configure a validator?",id:"how-can-i-configure-a-validator",level:2},{value:"My network bandwidth is used up by the Nethermind node",id:"my-network-bandwidth-is-used-up-by-the-nethermind-node",level:2},{value:"Is my node synced?",id:"is-my-node-synced",level:2},{value:"I want to run two or more nodes on one machine. How can I achieve this?",id:"i-want-to-run-two-or-more-nodes-on-one-machine-how-can-i-achieve-this",level:2}];function l(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"faq",children:"FAQ"})}),"\n",(0,s.jsx)(n.h2,{id:"how-do-i-upgrade-my-node",children:"How do I upgrade my node?"}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-for-docker-users",children:"Upgrading Nethermind for Docker users"}),"\n",(0,s.jsxs)(n.p,{children:["Pull the latest version of Nethermind using the ",(0,s.jsx)(n.code,{children:"latest"})," tag. You can find specific tag\nat ",(0,s.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind/tags",children:"Docker Hub"}),"."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"docker pull nethermind/nethermind:latest\n"})}),"\n",(0,s.jsxs)(n.p,{children:["or pull with docker-compose if the ",(0,s.jsx)(n.code,{children:"nethermind/nethermind:latest"})," base image is specified"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"docker-compose pull\n"})}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-for-systemd-users",children:"Upgrading Nethermind for Systemd users"}),"\n",(0,s.jsxs)(n.p,{children:["Simply download the latest Nethermind package either\nfrom ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io/",children:"https://downloads.nethermind.io"}),"\nor ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"https://github.com/NethermindEth/nethermind/releases"})," and make\nsure that the package is extracted in the ",(0,s.jsx)(n.code,{children:"WorkingDirectory"})," path defined in your ",(0,s.jsx)(n.code,{children:"systemd"})," service. Make sure to stop\nthe service before the upgrade and start it after."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-systemd",children:"WorkingDirectory=/home/nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-when-running-as-a-background-process",children:"Upgrading Nethermind when running as a background process"}),"\n",(0,s.jsxs)(n.p,{children:["Download the latest Nethermind package either from ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io/",children:"https://downloads.nethermind.io"}),"\nor ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"https://github.com/NethermindEth/nethermind/releases"})," and\nextract the package in the folder you currently use for running Nethermind. Make sure the service is down before the\nupdate. Make sure to stop the service before the upgrade and start it after."]}),"\n",(0,s.jsx)(n.h2,{id:"what-is-the-minimum-viable-config-to-serve-eth2-validator-requests",children:"What is the minimum viable config to serve ETH2 validator requests?"}),"\n",(0,s.jsxs)(n.p,{children:["This config downloads a minimal amount of bodies and receipts to be able to serve ETH2 validator requests since the\ndeposit contract deployment. It also enables JSON RPC (",(0,s.jsx)(n.strong,{children:"important - make sure that you do not open firewall to the\noutside world!"}),")"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"nethermind --config mainnet --Init.BaseDbPath /your/db/path\n"})}),"\n",(0,s.jsxs)(n.p,{children:["If you have any issues, please reach out to us on Discord: ",(0,s.jsx)(n.a,{href:"https://discord.gg/X539yhn",children:"https://discord.gg/X539yhn"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"can-i-disable-logging-to-file",children:"Can I disable logging to file?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on the logging config page ",(0,s.jsx)(n.a,{href:"/1.27.0/fundamentals/logs",children:"here"})]}),"\n",(0,s.jsx)(n.h2,{id:"can-i-disable-logging-of-json-rpc-calls",children:"Can I disable logging of JSON RPC calls?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on the logging config page ",(0,s.jsx)(n.a,{href:"/1.27.0/fundamentals/logs",children:"here"})]}),"\n",(0,s.jsx)(n.h2,{id:"how-can-i-configure-a-validator",children:"How can I configure a validator?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on running validators ",(0,s.jsx)(n.a,{href:"/1.27.0/validators/",children:"here"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"my-network-bandwidth-is-used-up-by-the-nethermind-node",children:"My network bandwidth is used up by the Nethermind node"}),"\n",(0,s.jsxs)(n.p,{children:["Try changing the config to a lower number (",(0,s.jsx)(n.code,{children:"--Network.ActivePeersMaxCount 25"}),")"]}),"\n",(0,s.jsx)(n.h2,{id:"is-my-node-synced",children:"Is my node synced?"}),"\n",(0,s.jsx)(n.p,{children:"Your node is synced when it shows log lines starting with:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.code,{children:"Processed ..."})}),"\n",(0,s.jsx)(n.p,{children:"And the block numbers shown are at the head of the chain."}),"\n",(0,s.jsxs)(n.p,{children:["Also, to check if your node is synced, you may execute ",(0,s.jsx)(n.code,{children:"eth_syncing"})," call check its result"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-text",children:'curl -X POST --data \'{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}\' localhost:8545\n'})}),"\n",(0,s.jsxs)(n.p,{children:["If the result shows ",(0,s.jsx)(n.code,{children:"false"})," it means that your node is ",(0,s.jsx)(n.strong,{children:"synced"})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-text",children:'{"jsonrpc":"2.0","result":false,"id":1}\n'})}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"In blockchain, any node can never be 100% sure it is synced because there is no central source of truth - so your node\nis generally not able to tell you that it is synced but, it is able to tell you that it believes it is synced based on\nwhat it knows from the peers that it talks to)."})}),"\n",(0,s.jsx)(n.h2,{id:"i-want-to-run-two-or-more-nodes-on-one-machine-how-can-i-achieve-this",children:"I want to run two or more nodes on one machine. How can I achieve this?"}),"\n",(0,s.jsx)(n.p,{children:"You have to configure a few ports used by Nethermind."}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Settings"}),(0,s.jsx)(n.th,{children:"Default Value"}),(0,s.jsx)(n.th,{children:"Comment"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.EnginePort"}),(0,s.jsx)(n.td,{children:"8551"}),(0,s.jsx)(n.td,{children:"Remember to change it on your Consensus client."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.Port"}),(0,s.jsx)(n.td,{children:"8545"}),(0,s.jsx)(n.td,{children:"Only needed if you are using standard JsonRpc"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.WebSocketsPort"}),(0,s.jsx)(n.td,{children:"8545"}),(0,s.jsx)(n.td,{children:"By default same as the JsonRpc port. Only relevant when you use WebSockets"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Network.P2PPort"}),(0,s.jsx)(n.td,{children:"30303"}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Network.DiscoveryPort"}),(0,s.jsx)(n.td,{children:"30303"}),(0,s.jsx)(n.td,{})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["The example of parameters that you have to pass to your second node when the first has been running with default\nsettings:",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.code,{children:"--JsonRpc.EnginePort 8552 --JsonRpc.Port 8546 --Network.P2PPort 30304 --Network.DiscoveryPort 30304"})]})]})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var s=t(6540);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c11efc49.8b4e372e.js b/assets/js/c11efc49.53d501ec.js similarity index 98% rename from assets/js/c11efc49.8b4e372e.js rename to assets/js/c11efc49.53d501ec.js index ba0f9c526..f6df04d2b 100644 --- a/assets/js/c11efc49.8b4e372e.js +++ b/assets/js/c11efc49.53d501ec.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3597],{8632:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>a});var r=i(4848),t=i(8453);const s={title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},d=void 0,o={id:"developers/building-from-source",title:"Building from source",description:"The Nethermind's source code can be obtained from our repository on",source:"@site/versioned_docs/version-1.29.0/developers/building-from-source.md",sourceDirName:"developers",slug:"/developers/building-from-source",permalink:"/developers/building-from-source",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/developers/building-from-source.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Aura-based validators",permalink:"/validators/aura"},next:{title:"Plugins",permalink:"/developers/plugins"}},l={},a=[{value:"Building standalone binaries",id:"building-standalone-binaries",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Building",id:"building",level:3},{value:"Running",id:"running",level:4},{value:"Testing",id:"testing",level:4},{value:"Bulding Docker image",id:"bulding-docker-image",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["The Nethermind's source code can be obtained from ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind",children:"our repository"})," on\nGitHub:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone --recursive https://github.com/nethermindeth/nethermind.git\n"})}),"\n",(0,r.jsx)(n.p,{children:"There are two options buiding Nethermind from source code:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#building-standalone-binaries",children:"Standalone binaries"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#bulding-docker-image",children:"Docker image"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"building-standalone-binaries",children:"Building standalone binaries"}),"\n",(0,r.jsx)(n.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(n.p,{children:["To build Nethermind from source, install ",(0,r.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/download",children:".NET SDK"})," 8 or later."]}),"\n",(0,r.jsx)(n.h3,{id:"building",children:"Building"}),"\n",(0,r.jsx)(n.p,{children:"To build both the client and tests, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"dotnet build src/Nethermind/Nethermind.sln -c release\n"})}),"\n",(0,r.jsx)(n.p,{children:"To simply run the client with a specific configuration without building tests, see below."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Before running the client or tests, ensure the\nplatform-specific ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#prerequisites",children:"prerequisites"})," are met."]})}),"\n",(0,r.jsx)(n.h4,{id:"running",children:"Running"}),"\n",(0,r.jsx)(n.p,{children:"Nethermind can be launched immediately without compiling explicitly (thus, the previous step can be skipped). The following command builds Nethermind if needed and runs it:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind/Nethermind.Runner\ndotnet run -c release -- -c mainnet\n"})}),"\n",(0,r.jsxs)(n.p,{children:["All Nethermind-specific parameters can be specified after ",(0,r.jsx)(n.code,{children:"--"}),". For instance, the command above specifies the Mainnet\nconfiguration only."]}),"\n",(0,r.jsxs)(n.p,{children:["The build artifacts can be found in the ",(0,r.jsx)(n.code,{children:"src/Nethermind/artifacts/bin/Nethermind.Runner/release"})," directory. By default, the logs and database directories are located here as well."]}),"\n",(0,r.jsxs)(n.p,{children:["For more info, see ",(0,r.jsx)(n.a,{href:"/get-started/running-node/",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"testing",children:"Testing"}),"\n",(0,r.jsx)(n.p,{children:"There are two test suites \u2014 Nethermind and Ethereum Foundation. Tests can be run with the following commands (the\ninitial step of the build is not required):"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind\n\n# Run Nethermind tests\ndotnet test Nethermind.sln -c release\n\n# Run Ethereum Foundation tests\ndotnet test EthereumTests.sln -c release\n"})}),"\n",(0,r.jsx)(n.h2,{id:"bulding-docker-image",children:"Bulding Docker image"}),"\n",(0,r.jsx)(n.p,{children:"To build Nethermind Docker image, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker build -t nethermind .\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For more info about running Docker containers,\nsee ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#docker-container",children:"Installing Nethermind"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>o});var r=i(6540);const t={},s=r.createContext(t);function d(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3597],{8632:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>a});var r=i(4848),t=i(8453);const s={title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},d=void 0,o={id:"developers/building-from-source",title:"Building from source",description:"The Nethermind's source code can be obtained from our repository on",source:"@site/versioned_docs/version-1.29.0/developers/building-from-source.md",sourceDirName:"developers",slug:"/developers/building-from-source",permalink:"/developers/building-from-source",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/developers/building-from-source.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Building from source",sidebar_label:"Building from source",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Aura-based validators",permalink:"/validators/aura"},next:{title:"Plugins",permalink:"/developers/plugins"}},l={},a=[{value:"Building standalone binaries",id:"building-standalone-binaries",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Building",id:"building",level:3},{value:"Running",id:"running",level:4},{value:"Testing",id:"testing",level:4},{value:"Bulding Docker image",id:"bulding-docker-image",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["The Nethermind's source code can be obtained from ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind",children:"our repository"})," on\nGitHub:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone --recursive https://github.com/nethermindeth/nethermind.git\n"})}),"\n",(0,r.jsx)(n.p,{children:"There are two options buiding Nethermind from source code:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#building-standalone-binaries",children:"Standalone binaries"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#bulding-docker-image",children:"Docker image"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"building-standalone-binaries",children:"Building standalone binaries"}),"\n",(0,r.jsx)(n.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(n.p,{children:["To build Nethermind from source, install ",(0,r.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/download",children:".NET SDK"})," 8 or later."]}),"\n",(0,r.jsx)(n.h3,{id:"building",children:"Building"}),"\n",(0,r.jsx)(n.p,{children:"To build both the client and tests, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"dotnet build src/Nethermind/Nethermind.sln -c release\n"})}),"\n",(0,r.jsx)(n.p,{children:"To simply run the client with a specific configuration without building tests, see below."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Before running the client or tests, ensure the\nplatform-specific ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#prerequisites",children:"prerequisites"})," are met."]})}),"\n",(0,r.jsx)(n.h4,{id:"running",children:"Running"}),"\n",(0,r.jsx)(n.p,{children:"Nethermind can be launched immediately without compiling explicitly (thus, the previous step can be skipped). The following command builds Nethermind if needed and runs it:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind/Nethermind.Runner\ndotnet run -c release -- -c mainnet\n"})}),"\n",(0,r.jsxs)(n.p,{children:["All Nethermind-specific parameters can be specified after ",(0,r.jsx)(n.code,{children:"--"}),". For instance, the command above specifies the Mainnet\nconfiguration only."]}),"\n",(0,r.jsxs)(n.p,{children:["The build artifacts can be found in the ",(0,r.jsx)(n.code,{children:"src/Nethermind/artifacts/bin/Nethermind.Runner/release"})," directory. By default, the logs and database directories are located here as well."]}),"\n",(0,r.jsxs)(n.p,{children:["For more info, see ",(0,r.jsx)(n.a,{href:"/get-started/running-node/",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"testing",children:"Testing"}),"\n",(0,r.jsx)(n.p,{children:"There are two test suites \u2014 Nethermind and Ethereum Foundation. Tests can be run with the following commands (the\ninitial step of the build is not required):"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd src/Nethermind\n\n# Run Nethermind tests\ndotnet test Nethermind.sln -c release\n\n# Run Ethereum Foundation tests\ndotnet test EthereumTests.sln -c release\n"})}),"\n",(0,r.jsx)(n.h2,{id:"bulding-docker-image",children:"Bulding Docker image"}),"\n",(0,r.jsx)(n.p,{children:"To build Nethermind Docker image, run the following command from the project's root directory:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker build -t nethermind .\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For more info about running Docker containers,\nsee ",(0,r.jsx)(n.a,{href:"../get-started/installing-nethermind#docker-container",children:"Installing Nethermind"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>o});var r=i(6540);const t={},s=r.createContext(t);function d(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c18d6c91.79fec418.js b/assets/js/c18d6c91.58eba8ef.js similarity index 99% rename from assets/js/c18d6c91.79fec418.js rename to assets/js/c18d6c91.58eba8ef.js index 2a14c5f0c..069870396 100644 --- a/assets/js/c18d6c91.79fec418.js +++ b/assets/js/c18d6c91.58eba8ef.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6532],{838:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),s=t(8453);const i={title:"JSON-RPC server",sidebar_position:0},r=void 0,c={id:"interacting/json-rpc-server",title:"JSON-RPC server",description:"Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over HTTP, WebSocket, and IPC socket transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the JSON-RPC configuration options.",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-server.md",sourceDirName:"interacting",slug:"/interacting/json-rpc-server",permalink:"/1.27.0/interacting/json-rpc-server",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-server.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"JSON-RPC server",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Private networks",permalink:"/1.27.0/fundamentals/private-networks"},next:{title:"admin",permalink:"/1.27.0/interacting/json-rpc-ns/admin"}},a={},d=[{value:"Transports",id:"transports",level:2},{value:"HTTP",id:"http",level:3},{value:"WebSocket",id:"websocket",level:3},{value:"IPC socket",id:"ipc-socket",level:3},{value:"Engine API",id:"engine-api",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over ",(0,o.jsx)(n.a,{href:"#http",children:"HTTP"}),", ",(0,o.jsx)(n.a,{href:"#websocket",children:"WebSocket"}),", and ",(0,o.jsx)(n.a,{href:"#ipc-socket",children:"IPC socket"})," transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the ",(0,o.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#jsonrpc",children:"JSON-RPC configuration options"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The JSON-RPC API methods are grouped into several categories (namespaces) depending on their purpose. All API method names are composed of the namespace and the actual method name in that namespace. For instance, the ",(0,o.jsx)(n.code,{children:"eth_call"})," method belongs to the ",(0,o.jsx)(n.code,{children:"eth"})," namespace. See the sidebar for all supported namespaces and methods."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["Not all of the JSON-RPC namespaces are enabled by default. Instead, they must be enabled explicitly with the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})," command line option. Otherwise, error code ",(0,o.jsx)(n.code,{children:"-32600"})," is returned. The enabled namespaces can be found in the configuration file specified with the ",(0,o.jsx)(n.code,{children:"--config"})," command line option."]})}),"\n",(0,o.jsx)(n.h2,{id:"transports",children:"Transports"}),"\n",(0,o.jsxs)(n.admonition,{type:"tip",children:[(0,o.jsx)(n.p,{children:"The right choice of transport depends on the specific use case."}),(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"HTTP is a familiar and idempotent transport that closes connections between requests and can, therefore, have lower overall overhead for a relatively low number of requests."}),"\n",(0,o.jsx)(n.li,{children:"WebSocket provides a continuous open channel that enables event subscriptions and streaming and handles large volumes of requests with more negligible per-message overhead."}),"\n",(0,o.jsx)(n.li,{children:"IPC is generally the most secure as it is limited to local interactions and cannot be exposed to external traffic. It can also be used for event subscriptions."}),"\n"]})]}),"\n",(0,o.jsx)(n.h3,{id:"http",children:"HTTP"}),"\n",(0,o.jsxs)(n.p,{children:["HTTP is the most widely used transport for Nethermind. To enable the HTTP server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Enabled true"})," command line option. By default, Nethermind uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8545"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Host"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.Port"})," command line options, respectively."]}),"\n",(0,o.jsx)(n.h3,{id:"websocket",children:"WebSocket"}),"\n",(0,o.jsxs)(n.p,{children:["The configuration of the WebSocket server follows the same pattern as the HTTP server. The WebSocket server is enabled automatically when the HTTP server is enabled and uses the same host and port. To disable the WebSocket server, use the ",(0,o.jsx)(n.code,{children:"--Init.WebSocketsEnabled false"})," command line option. To use a different a port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort"})," command line option."]}),"\n",(0,o.jsx)(n.h3,{id:"ipc-socket",children:"IPC socket"}),"\n",(0,o.jsxs)(n.p,{children:["Nethermind uses IPC based on Unix domain socket. To enable the IPC server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath path/to/ipc"})," command line option. If the ",(0,o.jsx)(n.code,{children:"path/to/ipc"})," doesn't exist, Nethermind creates one."]}),"\n",(0,o.jsx)(n.h2,{id:"engine-api",children:"Engine API"}),"\n",(0,o.jsx)(n.p,{children:"The Engine API is a set of RPC methods that enable communication between an execution and consensus client. The clients call these methods automatically when they need to exchange information. Engine API is enabled automatically by default and is not designed to be exposed to the user."}),"\n",(0,o.jsxs)(n.p,{children:["By default, the Engine API uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8551"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," command line options, respectively. For example, this can be useful when execution and consensus clients are on different machines."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["When the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," option is specified, the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," option must be specified as well."]})}),"\n",(0,o.jsxs)(n.p,{children:["The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at ",(0,o.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory. To use a different path, specify the ",(0,o.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option."]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var o=t(6540);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6532],{838:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),s=t(8453);const i={title:"JSON-RPC server",sidebar_position:0},r=void 0,c={id:"interacting/json-rpc-server",title:"JSON-RPC server",description:"Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over HTTP, WebSocket, and IPC socket transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the JSON-RPC configuration options.",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-server.md",sourceDirName:"interacting",slug:"/interacting/json-rpc-server",permalink:"/1.27.0/interacting/json-rpc-server",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-server.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"JSON-RPC server",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Private networks",permalink:"/1.27.0/fundamentals/private-networks"},next:{title:"admin",permalink:"/1.27.0/interacting/json-rpc-ns/admin"}},a={},d=[{value:"Transports",id:"transports",level:2},{value:"HTTP",id:"http",level:3},{value:"WebSocket",id:"websocket",level:3},{value:"IPC socket",id:"ipc-socket",level:3},{value:"Engine API",id:"engine-api",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over ",(0,o.jsx)(n.a,{href:"#http",children:"HTTP"}),", ",(0,o.jsx)(n.a,{href:"#websocket",children:"WebSocket"}),", and ",(0,o.jsx)(n.a,{href:"#ipc-socket",children:"IPC socket"})," transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the ",(0,o.jsx)(n.a,{href:"/1.27.0/fundamentals/configuration#jsonrpc",children:"JSON-RPC configuration options"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The JSON-RPC API methods are grouped into several categories (namespaces) depending on their purpose. All API method names are composed of the namespace and the actual method name in that namespace. For instance, the ",(0,o.jsx)(n.code,{children:"eth_call"})," method belongs to the ",(0,o.jsx)(n.code,{children:"eth"})," namespace. See the sidebar for all supported namespaces and methods."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["Not all of the JSON-RPC namespaces are enabled by default. Instead, they must be enabled explicitly with the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})," command line option. Otherwise, error code ",(0,o.jsx)(n.code,{children:"-32600"})," is returned. The enabled namespaces can be found in the configuration file specified with the ",(0,o.jsx)(n.code,{children:"--config"})," command line option."]})}),"\n",(0,o.jsx)(n.h2,{id:"transports",children:"Transports"}),"\n",(0,o.jsxs)(n.admonition,{type:"tip",children:[(0,o.jsx)(n.p,{children:"The right choice of transport depends on the specific use case."}),(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"HTTP is a familiar and idempotent transport that closes connections between requests and can, therefore, have lower overall overhead for a relatively low number of requests."}),"\n",(0,o.jsx)(n.li,{children:"WebSocket provides a continuous open channel that enables event subscriptions and streaming and handles large volumes of requests with more negligible per-message overhead."}),"\n",(0,o.jsx)(n.li,{children:"IPC is generally the most secure as it is limited to local interactions and cannot be exposed to external traffic. It can also be used for event subscriptions."}),"\n"]})]}),"\n",(0,o.jsx)(n.h3,{id:"http",children:"HTTP"}),"\n",(0,o.jsxs)(n.p,{children:["HTTP is the most widely used transport for Nethermind. To enable the HTTP server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Enabled true"})," command line option. By default, Nethermind uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8545"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Host"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.Port"})," command line options, respectively."]}),"\n",(0,o.jsx)(n.h3,{id:"websocket",children:"WebSocket"}),"\n",(0,o.jsxs)(n.p,{children:["The configuration of the WebSocket server follows the same pattern as the HTTP server. The WebSocket server is enabled automatically when the HTTP server is enabled and uses the same host and port. To disable the WebSocket server, use the ",(0,o.jsx)(n.code,{children:"--Init.WebSocketsEnabled false"})," command line option. To use a different a port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort"})," command line option."]}),"\n",(0,o.jsx)(n.h3,{id:"ipc-socket",children:"IPC socket"}),"\n",(0,o.jsxs)(n.p,{children:["Nethermind uses IPC based on Unix domain socket. To enable the IPC server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath path/to/ipc"})," command line option. If the ",(0,o.jsx)(n.code,{children:"path/to/ipc"})," doesn't exist, Nethermind creates one."]}),"\n",(0,o.jsx)(n.h2,{id:"engine-api",children:"Engine API"}),"\n",(0,o.jsx)(n.p,{children:"The Engine API is a set of RPC methods that enable communication between an execution and consensus client. The clients call these methods automatically when they need to exchange information. Engine API is enabled automatically by default and is not designed to be exposed to the user."}),"\n",(0,o.jsxs)(n.p,{children:["By default, the Engine API uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8551"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," command line options, respectively. For example, this can be useful when execution and consensus clients are on different machines."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["When the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," option is specified, the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," option must be specified as well."]})}),"\n",(0,o.jsxs)(n.p,{children:["The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at ",(0,o.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory. To use a different path, specify the ",(0,o.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option."]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var o=t(6540);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c36170f2.32ea1e87.js b/assets/js/c36170f2.85b62fde.js similarity index 99% rename from assets/js/c36170f2.32ea1e87.js rename to assets/js/c36170f2.85b62fde.js index b9bfae280..e1db520d9 100644 --- a/assets/js/c36170f2.32ea1e87.js +++ b/assets/js/c36170f2.85b62fde.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1715],{1738:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=n(4848),o=n(8453);const r={title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},i=void 0,a={id:"fundamentals/private-networks",title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",source:"@site/versioned_docs/version-1.26.0/fundamentals/private-networks.md",sourceDirName:"fundamentals",slug:"/fundamentals/private-networks",permalink:"/1.26.0/fundamentals/private-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/private-networks.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Performance tuning",permalink:"/1.26.0/fundamentals/performance-tuning"},next:{title:"JSON-RPC server",permalink:"/1.26.0/interacting/json-rpc-server"}},c={},d=[{value:"Step 1: Prerequisites",id:"step-1-prerequisites",level:2},{value:"Step 2: Configure your network",id:"step-2-configure-your-network",level:2},{value:"Step 3: Deploy",id:"step-3-deploy",level:2},{value:"Step 4: Optional workflows",id:"step-4-optional-workflows",level:2},{value:"Simulating MEV workflows with mev-boost",id:"simulating-mev-workflows-with-mev-boost",level:3},{value:"Observability tools",id:"observability-tools",level:3},{value:"Deploying on Kubernetes",id:"deploying-on-kubernetes",level:3},{value:"Questions and feedback",id:"questions-and-feedback",level:2}];function l(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["This guide will walk you through using ",(0,s.jsxs)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:["Kurtosis ",(0,s.jsx)(t.code,{children:"ethereum-package"})]})," to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure to simulate MEV workflows."]}),"\n",(0,s.jsx)(t.h2,{id:"step-1-prerequisites",children:"Step 1: Prerequisites"}),"\n",(0,s.jsxs)(t.p,{children:["Before you begin, ensure you have ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/install",children:"Kurtosis CLI"})," and ",(0,s.jsx)(t.a,{href:"https://docs.docker.com/get-docker",children:"Docker"})," installed. The ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:(0,s.jsx)(t.code,{children:"ethereum-package"})})," is a Kurtosis environment definition known as a ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/packages",children:"package"}),". For more info about Kurtosis, see the ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com",children:"Kurtosis docs"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-2-configure-your-network",children:"Step 2: Configure your network"}),"\n",(0,s.jsxs)(t.p,{children:["Next, in your home directory, create a file with the name ",(0,s.jsx)(t.code,{children:"network_params.json"})," and populate it with the following contents:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-json",metastring:'title="network_params.json"',children:'{\n "participants": [\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lighthouse",\n "cl_client_image": "sigp/lighthouse:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "teku",\n "cl_client_image": "consensys/teku:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lodestar",\n "cl_client_image": "chainsafe/lodestar:next",\n "count": 1\n }\n ],\n "mev_type": "None",\n "launch_additional_services": false\n}\n'})}),"\n",(0,s.jsxs)(t.p,{children:["As you can see above, you have effectively created a network configuration file that Kurtosis will use to pass in the necessary parameters at runtime for your network. Notice that the ",(0,s.jsx)(t.code,{children:"participant"})," key describes the execution and consensus client pairing desired for each full node and how many nodes of that type to instantiate."]}),"\n",(0,s.jsxs)(t.p,{children:["There are many other configurations and flags you can use, including metrics and observability tools (e.g., Grafana, Prometheus, etc). For all supported options, see the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package#configuration",children:"configuration"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-3-deploy",children:"Step 3: Deploy"}),"\n",(0,s.jsxs)(t.p,{children:["Finally, once you have saved the ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, it is time to deploy the private net:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'kurtosis run github.com/ethpandaops/ethereum-package "$(cat ~/network_params.json)"\n'})}),"\n",(0,s.jsxs)(t.p,{children:["Kurtosis will use the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," environment definition and your custom network configuration (defined in ",(0,s.jsx)(t.code,{children:"network_params.json"}),") to spin up your network. Kurtosis will first spin up an ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"})," (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 and used to start up the private testnet."]}),"\n",(0,s.jsx)(t.p,{children:"Here is a sample output:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{children:"INFO[2023-09-01T16:10:45-04:00] ====================================================\nINFO[2023-09-01T16:10:45-04:00] || Created enclave: timid-knoll ||\nINFO[2023-09-01T16:10:45-04:00] ====================================================\nName: timid-knoll\nUUID: 939dfb5d59b0\nStatus: RUNNING\nCreation Time: Fri, 01 Sep 2023 16:08:57 EDT\n\n========================================= Files Artifacts =========================================\nUUID Name\na876b06035b7 1-lighthouse-nethermind-0-63\n87955ef69845 2-teku-nethermind-64-127\n4f77377da494 3-lodestar-nethermind-128-191\n9734313101e3 cl-genesis-data\n4164ed5c594c el-genesis-data\na49a3d2774b5 genesis-generation-config-cl\n16fcc4f96236 genesis-generation-config-el\n5fc72346f646 geth-prefunded-keys\n96ae153a0b51 prysm-password\n\n========================================== User Services ==========================================\nUUID Name Ports Status\nf369802ad2ae cl-1-lighthouse-nethermind http: 4000/tcp -> http://127.0.0.1:49894 RUNNING\n metrics: 5054/tcp -> http://127.0.0.1:49892\n tcp-discovery: 9000/tcp -> 127.0.0.1:49893\n udp-discovery: 9000/udp -> 127.0.0.1:64949\n5e14eb26ef45 cl-1-lighthouse-nethermind-validator http: 5042/tcp -> 127.0.0.1:49895 RUNNING\n metrics: 5064/tcp -> http://127.0.0.1:49896\nfed533d0e143 cl-2-teku-nethermind http: 4000/tcp -> 127.0.0.1:49899 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49897\n tcp-discovery: 9000/tcp -> 127.0.0.1:49898\n udp-discovery: 9000/udp -> 127.0.0.1:55521\n69cd832de246 cl-3-lodestar-nethermind http: 4000/tcp -> 127.0.0.1:49903 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49901\n tcp-discovery: 9000/tcp -> 127.0.0.1:49902\n udp-discovery: 9000/udp -> 127.0.0.1:50507\n75e3eec0c7d1 cl-3-lodestar-nethermind-validator metrics: 8008/tcp -> 127.0.0.1:49904 RUNNING\ne10c3f07e0e0 el-1-nethermind-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:49872 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49870\n tcp-discovery: 30303/tcp -> 127.0.0.1:49869\n udp-discovery: 30303/udp -> 127.0.0.1:64508\n ws: 8546/tcp -> 127.0.0.1:49871\nc6a28d3136fe el-2-nethermind-teku engine-rpc: 8551/tcp -> 127.0.0.1:49873 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49875\n tcp-discovery: 30303/tcp -> 127.0.0.1:49874\n udp-discovery: 30303/udp -> 127.0.0.1:52495\n ws: 8546/tcp -> 127.0.0.1:49876\n2fae3b3c41d3 el-3-nethermind-lodestar engine-rpc: 8551/tcp -> 127.0.0.1:49890 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49888\n tcp-discovery: 30303/tcp -> 127.0.0.1:49891\n udp-discovery: 30303/udp -> 127.0.0.1:62119\n ws: 8546/tcp -> 127.0.0.1:49889\n403cafe8416e prelaunch-data-generator-cl-genesis-data RUNNING\nebea71008cf4 prelaunch-data-generator-el-genesis-data RUNNING\n"})}),"\n",(0,s.jsx)(t.p,{children:"And that is it! You now have a 3-node, private Ethereum devnet with Nethermind/Lodestar, Nethermind/Teku, and Nethermind/Lighthouse execution and consensus client combinations."}),"\n",(0,s.jsxs)(t.p,{children:["Notice how, at the end, Kurtosis will print out the contents of your enclave, which includes both the various ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/files-artifacts",children:"files artifacts"})," and services that form your network. Kurtosis also maps the container ports to ephemeral local ports on your machine."]}),"\n",(0,s.jsxs)(t.p,{children:["Genesis data was generated using this ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-genesis-generator",children:"genesis-generator"})," to bootstrap the execution and consensus 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 ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"Kurtosis packages are modular, reproducible, and will work over Docker or Kubernetes. Read on to learn about additional services and configurations you may want to add to your private network."}),"\n",(0,s.jsx)(t.h2,{id:"step-4-optional-workflows",children:"Step 4: Optional workflows"}),"\n",(0,s.jsx)(t.p,{children:"This section briefly covers some optional configurations for your private devnet that are commonly used for validating and testing node-level behavior."}),"\n",(0,s.jsxs)(t.h3,{id:"simulating-mev-workflows-with-mev-boost",children:["Simulating MEV workflows with ",(0,s.jsx)(t.code,{children:"mev-boost"})]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," can simulate out-of-protocol Proposer Builder Separation (PBS) workflows using Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure. With a single flag, you can configure your network's validators to be instantiated with ",(0,s.jsx)(t.code,{children:"mev-boost"})," and be registered with a relayer to receive payloads from builders."]}),"\n",(0,s.jsxs)(t.p,{children:["To enable this in your ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, set ",(0,s.jsx)(t.code,{children:'"mev_type":'})," to ",(0,s.jsx)(t.code,{children:'"full"'})," or ",(0,s.jsx)(t.code,{children:'"mock"'}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["To learn more about how the ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure works with your private network, check out ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/how-to-full-mev-with-ethereum-package",children:"this guide"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"observability-tools",children:"Observability tools"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," comes out of the box with a few observability tools, including:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"A Grafana and Prometheus instance"}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/dapplion/beacon-metrics-gazer",children:"beacon metrics gazer service"})," to collect network-wide participation metrics"]}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/ethDreamer/json_rpc_snoop",children:"JSON-RPC Snooper"})," to log responses & requests between the execution engine API and the consensus client"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["To add your own custom Grafana dashboard template, fork the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," repository and add your configuration ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package/tree/main/static_files/grafana-config/dashboards",children:"here"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"deploying-on-kubernetes",children:"Deploying on Kubernetes"}),"\n",(0,s.jsxs)(t.p,{children:["As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," on Kubernetes, see ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/k8s",children:"Running Kurtosis in Kubernetes"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"questions-and-feedback",children:"Questions and feedback"}),"\n",(0,s.jsxs)(t.p,{children:["If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:"GitHub"})," or ",(0,s.jsx)(t.a,{href:"https://discord.gg/jJFG7XBqcY",children:"Discord"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1715],{1738:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=n(4848),o=n(8453);const r={title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},i=void 0,a={id:"fundamentals/private-networks",title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",source:"@site/versioned_docs/version-1.26.0/fundamentals/private-networks.md",sourceDirName:"fundamentals",slug:"/fundamentals/private-networks",permalink:"/1.26.0/fundamentals/private-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/private-networks.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Performance tuning",permalink:"/1.26.0/fundamentals/performance-tuning"},next:{title:"JSON-RPC server",permalink:"/1.26.0/interacting/json-rpc-server"}},c={},d=[{value:"Step 1: Prerequisites",id:"step-1-prerequisites",level:2},{value:"Step 2: Configure your network",id:"step-2-configure-your-network",level:2},{value:"Step 3: Deploy",id:"step-3-deploy",level:2},{value:"Step 4: Optional workflows",id:"step-4-optional-workflows",level:2},{value:"Simulating MEV workflows with mev-boost",id:"simulating-mev-workflows-with-mev-boost",level:3},{value:"Observability tools",id:"observability-tools",level:3},{value:"Deploying on Kubernetes",id:"deploying-on-kubernetes",level:3},{value:"Questions and feedback",id:"questions-and-feedback",level:2}];function l(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["This guide will walk you through using ",(0,s.jsxs)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:["Kurtosis ",(0,s.jsx)(t.code,{children:"ethereum-package"})]})," to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure to simulate MEV workflows."]}),"\n",(0,s.jsx)(t.h2,{id:"step-1-prerequisites",children:"Step 1: Prerequisites"}),"\n",(0,s.jsxs)(t.p,{children:["Before you begin, ensure you have ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/install",children:"Kurtosis CLI"})," and ",(0,s.jsx)(t.a,{href:"https://docs.docker.com/get-docker",children:"Docker"})," installed. The ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:(0,s.jsx)(t.code,{children:"ethereum-package"})})," is a Kurtosis environment definition known as a ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/packages",children:"package"}),". For more info about Kurtosis, see the ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com",children:"Kurtosis docs"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-2-configure-your-network",children:"Step 2: Configure your network"}),"\n",(0,s.jsxs)(t.p,{children:["Next, in your home directory, create a file with the name ",(0,s.jsx)(t.code,{children:"network_params.json"})," and populate it with the following contents:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-json",metastring:'title="network_params.json"',children:'{\n "participants": [\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lighthouse",\n "cl_client_image": "sigp/lighthouse:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "teku",\n "cl_client_image": "consensys/teku:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lodestar",\n "cl_client_image": "chainsafe/lodestar:next",\n "count": 1\n }\n ],\n "mev_type": "None",\n "launch_additional_services": false\n}\n'})}),"\n",(0,s.jsxs)(t.p,{children:["As you can see above, you have effectively created a network configuration file that Kurtosis will use to pass in the necessary parameters at runtime for your network. Notice that the ",(0,s.jsx)(t.code,{children:"participant"})," key describes the execution and consensus client pairing desired for each full node and how many nodes of that type to instantiate."]}),"\n",(0,s.jsxs)(t.p,{children:["There are many other configurations and flags you can use, including metrics and observability tools (e.g., Grafana, Prometheus, etc). For all supported options, see the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package#configuration",children:"configuration"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-3-deploy",children:"Step 3: Deploy"}),"\n",(0,s.jsxs)(t.p,{children:["Finally, once you have saved the ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, it is time to deploy the private net:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'kurtosis run github.com/ethpandaops/ethereum-package "$(cat ~/network_params.json)"\n'})}),"\n",(0,s.jsxs)(t.p,{children:["Kurtosis will use the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," environment definition and your custom network configuration (defined in ",(0,s.jsx)(t.code,{children:"network_params.json"}),") to spin up your network. Kurtosis will first spin up an ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"})," (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 and used to start up the private testnet."]}),"\n",(0,s.jsx)(t.p,{children:"Here is a sample output:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{children:"INFO[2023-09-01T16:10:45-04:00] ====================================================\nINFO[2023-09-01T16:10:45-04:00] || Created enclave: timid-knoll ||\nINFO[2023-09-01T16:10:45-04:00] ====================================================\nName: timid-knoll\nUUID: 939dfb5d59b0\nStatus: RUNNING\nCreation Time: Fri, 01 Sep 2023 16:08:57 EDT\n\n========================================= Files Artifacts =========================================\nUUID Name\na876b06035b7 1-lighthouse-nethermind-0-63\n87955ef69845 2-teku-nethermind-64-127\n4f77377da494 3-lodestar-nethermind-128-191\n9734313101e3 cl-genesis-data\n4164ed5c594c el-genesis-data\na49a3d2774b5 genesis-generation-config-cl\n16fcc4f96236 genesis-generation-config-el\n5fc72346f646 geth-prefunded-keys\n96ae153a0b51 prysm-password\n\n========================================== User Services ==========================================\nUUID Name Ports Status\nf369802ad2ae cl-1-lighthouse-nethermind http: 4000/tcp -> http://127.0.0.1:49894 RUNNING\n metrics: 5054/tcp -> http://127.0.0.1:49892\n tcp-discovery: 9000/tcp -> 127.0.0.1:49893\n udp-discovery: 9000/udp -> 127.0.0.1:64949\n5e14eb26ef45 cl-1-lighthouse-nethermind-validator http: 5042/tcp -> 127.0.0.1:49895 RUNNING\n metrics: 5064/tcp -> http://127.0.0.1:49896\nfed533d0e143 cl-2-teku-nethermind http: 4000/tcp -> 127.0.0.1:49899 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49897\n tcp-discovery: 9000/tcp -> 127.0.0.1:49898\n udp-discovery: 9000/udp -> 127.0.0.1:55521\n69cd832de246 cl-3-lodestar-nethermind http: 4000/tcp -> 127.0.0.1:49903 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49901\n tcp-discovery: 9000/tcp -> 127.0.0.1:49902\n udp-discovery: 9000/udp -> 127.0.0.1:50507\n75e3eec0c7d1 cl-3-lodestar-nethermind-validator metrics: 8008/tcp -> 127.0.0.1:49904 RUNNING\ne10c3f07e0e0 el-1-nethermind-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:49872 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49870\n tcp-discovery: 30303/tcp -> 127.0.0.1:49869\n udp-discovery: 30303/udp -> 127.0.0.1:64508\n ws: 8546/tcp -> 127.0.0.1:49871\nc6a28d3136fe el-2-nethermind-teku engine-rpc: 8551/tcp -> 127.0.0.1:49873 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49875\n tcp-discovery: 30303/tcp -> 127.0.0.1:49874\n udp-discovery: 30303/udp -> 127.0.0.1:52495\n ws: 8546/tcp -> 127.0.0.1:49876\n2fae3b3c41d3 el-3-nethermind-lodestar engine-rpc: 8551/tcp -> 127.0.0.1:49890 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49888\n tcp-discovery: 30303/tcp -> 127.0.0.1:49891\n udp-discovery: 30303/udp -> 127.0.0.1:62119\n ws: 8546/tcp -> 127.0.0.1:49889\n403cafe8416e prelaunch-data-generator-cl-genesis-data RUNNING\nebea71008cf4 prelaunch-data-generator-el-genesis-data RUNNING\n"})}),"\n",(0,s.jsx)(t.p,{children:"And that is it! You now have a 3-node, private Ethereum devnet with Nethermind/Lodestar, Nethermind/Teku, and Nethermind/Lighthouse execution and consensus client combinations."}),"\n",(0,s.jsxs)(t.p,{children:["Notice how, at the end, Kurtosis will print out the contents of your enclave, which includes both the various ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/files-artifacts",children:"files artifacts"})," and services that form your network. Kurtosis also maps the container ports to ephemeral local ports on your machine."]}),"\n",(0,s.jsxs)(t.p,{children:["Genesis data was generated using this ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-genesis-generator",children:"genesis-generator"})," to bootstrap the execution and consensus 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 ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"Kurtosis packages are modular, reproducible, and will work over Docker or Kubernetes. Read on to learn about additional services and configurations you may want to add to your private network."}),"\n",(0,s.jsx)(t.h2,{id:"step-4-optional-workflows",children:"Step 4: Optional workflows"}),"\n",(0,s.jsx)(t.p,{children:"This section briefly covers some optional configurations for your private devnet that are commonly used for validating and testing node-level behavior."}),"\n",(0,s.jsxs)(t.h3,{id:"simulating-mev-workflows-with-mev-boost",children:["Simulating MEV workflows with ",(0,s.jsx)(t.code,{children:"mev-boost"})]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," can simulate out-of-protocol Proposer Builder Separation (PBS) workflows using Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure. With a single flag, you can configure your network's validators to be instantiated with ",(0,s.jsx)(t.code,{children:"mev-boost"})," and be registered with a relayer to receive payloads from builders."]}),"\n",(0,s.jsxs)(t.p,{children:["To enable this in your ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, set ",(0,s.jsx)(t.code,{children:'"mev_type":'})," to ",(0,s.jsx)(t.code,{children:'"full"'})," or ",(0,s.jsx)(t.code,{children:'"mock"'}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["To learn more about how the ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure works with your private network, check out ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/how-to-full-mev-with-ethereum-package",children:"this guide"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"observability-tools",children:"Observability tools"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," comes out of the box with a few observability tools, including:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"A Grafana and Prometheus instance"}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/dapplion/beacon-metrics-gazer",children:"beacon metrics gazer service"})," to collect network-wide participation metrics"]}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/ethDreamer/json_rpc_snoop",children:"JSON-RPC Snooper"})," to log responses & requests between the execution engine API and the consensus client"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["To add your own custom Grafana dashboard template, fork the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," repository and add your configuration ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package/tree/main/static_files/grafana-config/dashboards",children:"here"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"deploying-on-kubernetes",children:"Deploying on Kubernetes"}),"\n",(0,s.jsxs)(t.p,{children:["As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," on Kubernetes, see ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/k8s",children:"Running Kurtosis in Kubernetes"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"questions-and-feedback",children:"Questions and feedback"}),"\n",(0,s.jsxs)(t.p,{children:["If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:"GitHub"})," or ",(0,s.jsx)(t.a,{href:"https://discord.gg/jJFG7XBqcY",children:"Discord"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c43c9625.b342dcc8.js b/assets/js/c43c9625.a0fd923a.js similarity index 99% rename from assets/js/c43c9625.b342dcc8.js rename to assets/js/c43c9625.a0fd923a.js index 8e4a0d6a9..b225cf98d 100644 --- a/assets/js/c43c9625.b342dcc8.js +++ b/assets/js/c43c9625.a0fd923a.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6893],{8029:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=s(4848),l=s(8453),i=s(1470),t=s(9365);const a={title:"admin namespace",sidebar_label:"admin",sidebar_position:0},d=void 0,c={id:"interacting/json-rpc-ns/admin",title:"admin namespace",description:"admin_addPeer",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/admin.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/admin",permalink:"/1.28.0/interacting/json-rpc-ns/admin",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/admin.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"admin namespace",sidebar_label:"admin",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"JSON-RPC server",permalink:"/1.28.0/interacting/json-rpc-server"},next:{title:"clique",permalink:"/1.28.0/interacting/json-rpc-ns/clique"}},o={},u=[{value:"admin_addPeer",id:"admin_addpeer",level:3},{value:"admin_nodeInfo",id:"admin_nodeinfo",level:3},{value:"admin_peers",id:"admin_peers",level:3},{value:"admin_prune",id:"admin_prune",level:3},{value:"admin_removePeer",id:"admin_removepeer",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"admin_addpeer",children:"admin_addPeer"}),"\n",(0,r.jsx)(n.p,{children:"Adds given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"addToStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_addPeer",\n "params": [enode, addToStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Added node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_nodeinfo",children:"admin_nodeInfo"}),"\n",(0,r.jsx)(n.p,{children:"Displays relevant information about this node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_nodeInfo",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Information about this node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ip"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listenAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ports"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"discovery"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listener"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"genesisHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"newtorkId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_peers",children:"admin_peers"}),"\n",(0,r.jsxs)(n.p,{children:["Displays a list of connected peers including information about them (",(0,r.jsx)(n.code,{children:"clientId"}),", ",(0,r.jsx)(n.code,{children:"host"}),", ",(0,r.jsx)(n.code,{children:"port"}),", ",(0,r.jsx)(n.code,{children:"address"}),", ",(0,r.jsx)(n.code,{children:"isBootnode"}),", ",(0,r.jsx)(n.code,{children:"isStatic"}),", ",(0,r.jsx)(n.code,{children:"enode"}),")."]}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeDetails"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_peers",\n "params": [includeDetails]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"List of connected peers including information"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ethDetails"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"host"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isBootnode"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isStatic"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isTrusted"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"lastSignal"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"port"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_prune",children:"admin_prune"}),"\n",(0,r.jsx)(n.p,{children:"Runs full pruning if enabled."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_prune",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"integer"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_removepeer",children:"admin_removePeer"}),"\n",(0,r.jsx)(n.p,{children:"Removes given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"removeFromStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_removePeer",\n "params": [enode, removeFromStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Removed node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var i=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),l=s(4164),i=s(3104),t=s(6347),a=s(205),d=s(7485),c=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function x(e){let{queryString:n=!1,groupId:s}=e;const l=(0,t.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(l.location.search);n.set(i,e),l.replace({...l.location,search:n.toString()})}),[i,l])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,i=h(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[c,u]=x({queryString:s,groupId:l}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,i]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:l}),b=(()=>{const e=c??m;return j({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{b&&d(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),p(e)}),[u,p,i]),tabValues:i}}var p=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:a}=e;const d=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),l=a[s].value;l!==r&&(c(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:a.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:u,onClick:o,...i,className:(0,l.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function _(e){const n=m(e);return(0,g.jsxs)("div",{className:(0,l.A)("tabs-container",b.tabList),children:[(0,g.jsx)(f,{...n,...e}),(0,g.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,g.jsx)(_,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const l={},i=r.createContext(l);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6893],{8029:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=s(4848),l=s(8453),i=s(1470),t=s(9365);const a={title:"admin namespace",sidebar_label:"admin",sidebar_position:0},d=void 0,c={id:"interacting/json-rpc-ns/admin",title:"admin namespace",description:"admin_addPeer",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/admin.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/admin",permalink:"/1.28.0/interacting/json-rpc-ns/admin",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/admin.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"admin namespace",sidebar_label:"admin",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"JSON-RPC server",permalink:"/1.28.0/interacting/json-rpc-server"},next:{title:"clique",permalink:"/1.28.0/interacting/json-rpc-ns/clique"}},o={},u=[{value:"admin_addPeer",id:"admin_addpeer",level:3},{value:"admin_nodeInfo",id:"admin_nodeinfo",level:3},{value:"admin_peers",id:"admin_peers",level:3},{value:"admin_prune",id:"admin_prune",level:3},{value:"admin_removePeer",id:"admin_removepeer",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"admin_addpeer",children:"admin_addPeer"}),"\n",(0,r.jsx)(n.p,{children:"Adds given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"addToStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_addPeer",\n "params": [enode, addToStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Added node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_nodeinfo",children:"admin_nodeInfo"}),"\n",(0,r.jsx)(n.p,{children:"Displays relevant information about this node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_nodeInfo",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Information about this node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ip"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listenAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ports"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"discovery"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listener"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"genesisHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"newtorkId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_peers",children:"admin_peers"}),"\n",(0,r.jsxs)(n.p,{children:["Displays a list of connected peers including information about them (",(0,r.jsx)(n.code,{children:"clientId"}),", ",(0,r.jsx)(n.code,{children:"host"}),", ",(0,r.jsx)(n.code,{children:"port"}),", ",(0,r.jsx)(n.code,{children:"address"}),", ",(0,r.jsx)(n.code,{children:"isBootnode"}),", ",(0,r.jsx)(n.code,{children:"isStatic"}),", ",(0,r.jsx)(n.code,{children:"enode"}),")."]}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeDetails"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_peers",\n "params": [includeDetails]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"List of connected peers including information"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ethDetails"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"host"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isBootnode"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isStatic"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isTrusted"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"lastSignal"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"port"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_prune",children:"admin_prune"}),"\n",(0,r.jsx)(n.p,{children:"Runs full pruning if enabled."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_prune",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"integer"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_removepeer",children:"admin_removePeer"}),"\n",(0,r.jsx)(n.p,{children:"Removes given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"removeFromStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_removePeer",\n "params": [enode, removeFromStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Removed node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var i=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),l=s(4164),i=s(3104),t=s(6347),a=s(205),d=s(7485),c=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function x(e){let{queryString:n=!1,groupId:s}=e;const l=(0,t.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(l.location.search);n.set(i,e),l.replace({...l.location,search:n.toString()})}),[i,l])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,i=h(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[c,u]=x({queryString:s,groupId:l}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,i]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:l}),b=(()=>{const e=c??m;return j({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{b&&d(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),p(e)}),[u,p,i]),tabValues:i}}var p=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:a}=e;const d=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),l=a[s].value;l!==r&&(c(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:a.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:u,onClick:o,...i,className:(0,l.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function _(e){const n=m(e);return(0,g.jsxs)("div",{className:(0,l.A)("tabs-container",b.tabList),children:[(0,g.jsx)(f,{...n,...e}),(0,g.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,g.jsx)(_,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const l={},i=r.createContext(l);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c4b1c122.d2c5fccd.js b/assets/js/c4b1c122.813c9207.js similarity index 99% rename from assets/js/c4b1c122.d2c5fccd.js rename to assets/js/c4b1c122.813c9207.js index facf0cdaf..8169e1bd3 100644 --- a/assets/js/c4b1c122.d2c5fccd.js +++ b/assets/js/c4b1c122.813c9207.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1417],{9529:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>l,toc:()=>t});var r=s(4848),i=s(8453);const d={title:"Metrics",sidebar_position:0,toc_max_heading_level:4},c=void 0,l={id:"monitoring/metrics/metrics",title:"Metrics",description:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:",source:"@site/versioned_docs/version-1.25.4/monitoring/metrics/metrics.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/",permalink:"/1.25.4/monitoring/metrics/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/monitoring/metrics/metrics.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Metrics",sidebar_position:0,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"web3",permalink:"/1.25.4/interacting/json-rpc-ns/web3"},next:{title:"Grafana and Prometheus",permalink:"/1.25.4/monitoring/metrics/grafana-and-prometheus"}},h={},t=[{value:"Parameters by namespace",id:"parameters-by-namespace",level:3},{value:"Aura",id:"aura",level:4},{value:"Blockchain",id:"blockchain",level:4},{value:"Db",id:"db",level:4},{value:"Evm",id:"evm",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"Merge",id:"merge",level:4},{value:"Network",id:"network",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Runner",id:"runner",level:4},{value:"Trie",id:"trie",level:4},{value:"TxPool",id:"txpool",level:4}];function o(e){const n={a:"a",code:"code",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.25.4/monitoring/metrics/grafana-and-prometheus",children:"Grafana and Prometheus"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.25.4/monitoring/metrics/dotnet-counters",children:"dotnet-counters"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"parameters-by-namespace",children:"Parameters by namespace"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"aura",children:"Aura"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_au_ra_step"})})}),"\n",(0,r.jsx)(n.p,{children:"Current AuRa step"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_commit_hash_transaction"})})}),"\n",(0,r.jsx)(n.p,{children:"RANDAO number of commit hash transactions"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_emit_initiate_change"})})}),"\n",(0,r.jsx)(n.p,{children:"POSDAO number of emit init change transactions"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reported_benign_misbehaviour"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reported benign misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reported_malicious_misbehaviour"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reported malicious misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reveal_number"})})}),"\n",(0,r.jsx)(n.p,{children:"RANDAO number of reveal number transactions"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sealed_transactions"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of sealed transactions generated by engine"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_validators_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of current AuRa validators"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"blockchain",children:"Blockchain"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_best_known_block_number"})})}),"\n",(0,r.jsx)(n.p,{children:"The estimated highest block available."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blockchain_height"})})}),"\n",(0,r.jsx)(n.p,{children:"The current height of the canonical chain."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of blocks processed"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_sealed"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of sealed blocks"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_failed_block_seals"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of failed block seals"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_gas_limit"})})}),"\n",(0,r.jsx)(n.p,{children:"Gas Limit for processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_gas_used"})})}),"\n",(0,r.jsx)(n.p,{children:"Gas Used in processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_last_difficulty"})})}),"\n",(0,r.jsx)(n.p,{children:"Difficulty of the last block"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_mgas"})})}),"\n",(0,r.jsx)(n.p,{children:"Total MGas processed"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_processing_queue_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blocks awaiting for processing."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_recovery_queue_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blocks awaiting for recovery of public keys from signatures."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reorganizations"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of chain reorganizations"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_total_difficulty"})})}),"\n",(0,r.jsx)(n.p,{children:"Total difficulty on the chain"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_transactions"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of transactions processed"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"db",children:"Db"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bad_blocks_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BadBlocks DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bad_blocks_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BadBlocks DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transactions_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BlobTransactions DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transactions_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BlobTransactions DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_infos_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Block Infos DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_infos_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of blockInfos DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_infos_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Block Infos DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_number_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BlockNumbers DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_number_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BlockNumbers DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Blocks DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of blocks DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Blocks DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bloom_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Bloom DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bloom_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of bloom DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bloom_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Bloom DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_c_h_t_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of CHT DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_cht_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of cht DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_c_h_t_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of CHT DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_code_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Code DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_code_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of code DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_code_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Code DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_block_cache_memory_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of unmanaged memory for DB block caches in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_index_filter_memory_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of unmanaged memory for DB indexes and filters in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_memtable_memory_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of unmanaged memory for DB memtables in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_stats"})})}),"\n",(0,r.jsx)(n.p,{children:"Metrics extracted from RocksDB Compaction Stats and DB Statistics"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_total_memory_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of total unmanaged memory for DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_header_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Headers DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_header_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Headers DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_headers_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of headers DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_metadata_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Metadata DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_metadata_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of metadata DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_metadata_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Metadata DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_other_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of other DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_other_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of other DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receipts_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Receipts DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receipts_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of receipts DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receipts_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Receipts DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_pruning"})})}),"\n",(0,r.jsx)(n.p,{children:"Indicator if StadeDb is being pruned."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of State DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of state DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of State DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_tree_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of State Trie reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_tree_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Blocks Trie writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_storage_tree_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of storge trie reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_storage_tree_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of storage trie writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_witness_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Witness DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_witness_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of witness DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_witness_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Witness DB writes."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"evm",children:"Evm"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blockhash_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BLOCKHASH opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bn254_add_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BN254_ADD precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bn254_mul_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BN254_MUL precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bn254_pairing_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BN254_PAIRING precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_calls"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of calls to other contracts."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_creates"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of contract create calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_ec_recover_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of EC_RECOVERY precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_empty_calls"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of calls made to addresses without code."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_evm_exceptions"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of EVM exceptions thrown by contracts."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_m_copy_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of MCOPY opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_mod_exp_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of MODEXP precompiles executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_mod_exp_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of MODEXP precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_point_evaluation_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Point Evaluation precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_ripemd160_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of RIPEMD160 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_self_destructs"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SELFDESTRUCT calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sha256_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SHA256 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sload_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sstore_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SSTORE opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tload_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of TLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tstore_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of TSTORE opcodes executed."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_bytes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC bytes received."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_bytes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC bytes sent."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_errors"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests processed with errors."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_invalid_requests"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests that were invalid."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_request_deserialization_failures"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests that failed JSON deserialization."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_requests"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of JSON RPC requests received by the node."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_successes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests processed successfully."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"merge",children:"Merge"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_forkchoice_upded_execution_time"})})}),"\n",(0,r.jsx)(n.p,{children:"ForkchoiceUpded request execution time"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_get_payload_requests"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of GetPayload Requests"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_new_payload_execution_time"})})}),"\n",(0,r.jsx)(n.p,{children:"NewPayload request execution time"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_number_of_transactions_in_get_payload"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Transactions included in the Last GetPayload Request"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"network",children:"Network"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_already_connected_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to already connected"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_breach_of_protocol_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to breach of protocol"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_client_quitting_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to client quitting"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_disconnect_requested_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to disconnect requested"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_block_bodies_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.62 BlockBodies messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_block_headers_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.62 BlockHeaders messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_get_block_bodies_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.62 GetBlockBodies messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_get_block_headers_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.62 GetBlockHeaders messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_new_block_hashes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.62 NewBlockHashes messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_new_block_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.62 NewBlock messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_transactions_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.62 Transactions messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_get_node_data_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.63 GetNodeData messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_get_receipts_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.63 GetReceipts messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_node_data_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.63 NodeData messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_receipts_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.63 Receipts messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_get_pooled_transactions_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.65 GetPooledTransactions messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_get_pooled_transactions_requested"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.65 GetPooledTransactions messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_new_pooled_transaction_hashes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.65 NewPooledTransactionHashes messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_new_pooled_transaction_hashes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.65 NewPooledTransactionHashes messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_pooled_transactions_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.65 PooledTransactions messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_block_bodies_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 BlockBodies messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_block_headers_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 BlockHeaders messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_block_bodies_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 GetBlockBodies messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_block_headers_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 GetBlockHeaders messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_node_data_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 GetNodeData messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_pooled_transactions_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 GetPooledTransactions messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_pooled_transactions_requested"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 GetPooledTransactions messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_receipts_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 GetReceipts messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_node_data_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 NodeData messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_pooled_transactions_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 PooledTransactions messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_receipts_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 Receipts messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth68_new_pooled_transaction_hashes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.68 NewPooledTransactionHashes messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth68_new_pooled_transaction_hashes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.68 NewPooledTransactionHashes messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_get_node_data_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of GetNodeData messages received via NodeData protocol"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_handshakes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of devp2p handshakes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_handshake_timeouts"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of devp2p handshke timeouts"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_hellos_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of devp2p hello messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_hellos_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of devp2p hello messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_incoming_connections"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of incoming connection."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_incompatible_p2_p_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to incompatible devp2p version"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_les_statuses_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of les status messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_les_statuses_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of les status messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_already_connected_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to already connected"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_breach_of_protocol_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of sent disconnects due to breach of protocol"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_client_quitting_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to client quitting"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_disconnect_requested_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to disconnect requested"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_disconnects_total"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of local disconnects"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_incompatible_p2_p_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to incompatible devp2p"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_null_node_identity_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to missing node identity"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_other_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to other reason"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_receive_message_timeout_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to request timeout"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_same_as_self_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to connection to self"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_tcp_subsystem_error_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to TCP error"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_too_many_peers_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to breach of protocol"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_unexpected_identity_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to node identity info mismatch"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_useless_peer_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of sent disconnects due to useless peer"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_node_data_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of NodeData messages received via NodeData protocol"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_null_node_identity_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to missing peer identity"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_other_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to other reasons"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_outgoing_connections"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of outgoing connection."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_peer_limit"})})}),"\n",(0,r.jsx)(n.p,{children:"The maximum number of peers this node allows to connect."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receive_message_timeout_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to request timeouts"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_remote_disconnects_total"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of remote disconnects"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_same_as_self_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to connecting to self"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_account_range_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP AccountRange messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_byte_codes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP ByteCodes messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_account_range_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetAccountRange messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_account_range_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetAccountRange messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_byte_codes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetByteCodes messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_byte_codes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetByteCodes messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_storage_ranges_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetStorageRanges messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_storage_ranges_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetStorageRanges messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_trie_nodes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetTrieNodes messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_trie_nodes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetTrieNodes messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_storage_ranges_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP StorageRanges messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_trie_nodes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP TrieNodes messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_statuses_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth status messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_statuses_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth status messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tcp_subsystem_error_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of disconnects due to TCP error"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_too_many_peers_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to too many peers"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_unexpected_identity_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to peer identity information mismatch"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_useless_peer_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to useless peer"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"pruning",children:"Pruning"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_cached_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that are currently kept in cache (either persisted or not)"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_committed_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been committed since the session start. These nodes may have been pruned, persisted or replaced."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_deep_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been removed from the cache during deep pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_deep_pruning_time"})})}),"\n",(0,r.jsx)(n.p,{children:"Time taken by the last deep pruning."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_last_persisted_block_number"})})}),"\n",(0,r.jsx)(n.p,{children:"Last persisted block number (snapshot)."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_loaded_from_cache_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reads from the node cache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_loaded_from_db_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_loaded_from_rlp_cache_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reads from the RLP cache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_memory_used_by_cache"})})}),"\n",(0,r.jsx)(n.p,{children:"Estimated memory used by cache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_persisted_node_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been persisted since the session start."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pruned_transient_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they were no longer needed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pruning_time"})})}),"\n",(0,r.jsx)(n.p,{children:"Time taken by the last pruning."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_replaced_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of nodes that have been exactly the same as other nodes in the cache when committing."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snapshot_persistence_time"})})}),"\n",(0,r.jsx)(n.p,{children:"Time taken by the last snapshot persistence."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"runner",children:"Runner"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_version"})})}),"\n",(0,r.jsx)(n.p,{children:"Version number"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"trie",children:"Trie"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tree_node_hash_calculations"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of trie node hash calculations."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tree_node_rlp_decodings"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of trie node RLP decodings."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tree_node_rlp_encodings"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of trie node RLP encodings."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"txpool",children:"TxPool"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blobs_in_block"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blobs in the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transaction_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blob transactions in pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transactions_in_block"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blob transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level1"})})}),"\n",(0,r.jsx)(n.p,{children:"Ratio of transactions in the block absent in hashCache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level2"})})}),"\n",(0,r.jsx)(n.p,{children:"Ratio of transactions in the block absent in pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eip1559_transactions_ratio"})})}),"\n",(0,r.jsx)(n.p,{children:"Ratio of 1559-type transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending1559_transactions_added"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending 1559-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_blob_transactions_added"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending blob-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_added"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_balance_below_value"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is less than txn value."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_conflicting_tx_type"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions rejected because of already pending tx of other type (allowed blob txs or others, not both at once)."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_discarded"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_evicted"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions evicted from transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_gas_limit_too_high"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the gas limit was to high for the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of hashes of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of hashes of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_known"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of already known pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_low_nonce"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions with already used nonce."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_malformed"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of malformed transactions."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_gap"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not having preceding nonce of this sender in TxPool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_too_far_in_future"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions with nonce too far in future."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_not_supported_tx_type"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not supported transaction type."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored after passing early rejections as balance is too low to compete with lowest effective fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_replace"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were trying to replace tx with the same sender and nonce and failed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_balance"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance too low for fee to be higher than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_fee"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of fee lower than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_priority_fee"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of priority fee lower than minimal requirement."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_unresolvable_sender"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the sender couldn't be resolved."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_with_expensive_filtering"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions that reached filters which are resource expensive"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_zero_balance"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is zero and cannot pay gas."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_transaction_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions in pool."}),"\n"]}),"\n"]})})]})]})}function x(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>l});var r=s(6540);const i={},d=r.createContext(i);function c(e){const n=r.useContext(d);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1417],{9529:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>l,toc:()=>t});var r=s(4848),i=s(8453);const d={title:"Metrics",sidebar_position:0,toc_max_heading_level:4},c=void 0,l={id:"monitoring/metrics/metrics",title:"Metrics",description:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:",source:"@site/versioned_docs/version-1.25.4/monitoring/metrics/metrics.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/",permalink:"/1.25.4/monitoring/metrics/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/monitoring/metrics/metrics.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Metrics",sidebar_position:0,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"web3",permalink:"/1.25.4/interacting/json-rpc-ns/web3"},next:{title:"Grafana and Prometheus",permalink:"/1.25.4/monitoring/metrics/grafana-and-prometheus"}},h={},t=[{value:"Parameters by namespace",id:"parameters-by-namespace",level:3},{value:"Aura",id:"aura",level:4},{value:"Blockchain",id:"blockchain",level:4},{value:"Db",id:"db",level:4},{value:"Evm",id:"evm",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"Merge",id:"merge",level:4},{value:"Network",id:"network",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Runner",id:"runner",level:4},{value:"Trie",id:"trie",level:4},{value:"TxPool",id:"txpool",level:4}];function o(e){const n={a:"a",code:"code",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.25.4/monitoring/metrics/grafana-and-prometheus",children:"Grafana and Prometheus"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.25.4/monitoring/metrics/dotnet-counters",children:"dotnet-counters"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"parameters-by-namespace",children:"Parameters by namespace"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"aura",children:"Aura"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_au_ra_step"})})}),"\n",(0,r.jsx)(n.p,{children:"Current AuRa step"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_commit_hash_transaction"})})}),"\n",(0,r.jsx)(n.p,{children:"RANDAO number of commit hash transactions"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_emit_initiate_change"})})}),"\n",(0,r.jsx)(n.p,{children:"POSDAO number of emit init change transactions"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reported_benign_misbehaviour"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reported benign misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reported_malicious_misbehaviour"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reported malicious misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reveal_number"})})}),"\n",(0,r.jsx)(n.p,{children:"RANDAO number of reveal number transactions"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sealed_transactions"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of sealed transactions generated by engine"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_validators_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of current AuRa validators"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"blockchain",children:"Blockchain"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_best_known_block_number"})})}),"\n",(0,r.jsx)(n.p,{children:"The estimated highest block available."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blockchain_height"})})}),"\n",(0,r.jsx)(n.p,{children:"The current height of the canonical chain."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of blocks processed"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_sealed"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of sealed blocks"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_failed_block_seals"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of failed block seals"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_gas_limit"})})}),"\n",(0,r.jsx)(n.p,{children:"Gas Limit for processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_gas_used"})})}),"\n",(0,r.jsx)(n.p,{children:"Gas Used in processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_last_difficulty"})})}),"\n",(0,r.jsx)(n.p,{children:"Difficulty of the last block"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_mgas"})})}),"\n",(0,r.jsx)(n.p,{children:"Total MGas processed"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_processing_queue_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blocks awaiting for processing."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_recovery_queue_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blocks awaiting for recovery of public keys from signatures."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reorganizations"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of chain reorganizations"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_total_difficulty"})})}),"\n",(0,r.jsx)(n.p,{children:"Total difficulty on the chain"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_transactions"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of transactions processed"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"db",children:"Db"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bad_blocks_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BadBlocks DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bad_blocks_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BadBlocks DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transactions_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BlobTransactions DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transactions_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BlobTransactions DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_infos_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Block Infos DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_infos_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of blockInfos DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_infos_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Block Infos DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_number_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BlockNumbers DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_number_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BlockNumbers DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Blocks DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of blocks DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Blocks DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bloom_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Bloom DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bloom_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of bloom DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bloom_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Bloom DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_c_h_t_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of CHT DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_cht_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of cht DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_c_h_t_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of CHT DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_code_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Code DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_code_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of code DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_code_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Code DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_block_cache_memory_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of unmanaged memory for DB block caches in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_index_filter_memory_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of unmanaged memory for DB indexes and filters in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_memtable_memory_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of unmanaged memory for DB memtables in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_stats"})})}),"\n",(0,r.jsx)(n.p,{children:"Metrics extracted from RocksDB Compaction Stats and DB Statistics"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_total_memory_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of total unmanaged memory for DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_header_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Headers DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_header_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Headers DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_headers_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of headers DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_metadata_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Metadata DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_metadata_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of metadata DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_metadata_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Metadata DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_other_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of other DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_other_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of other DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receipts_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Receipts DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receipts_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of receipts DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receipts_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Receipts DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_pruning"})})}),"\n",(0,r.jsx)(n.p,{children:"Indicator if StadeDb is being pruned."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of State DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of state DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of State DB writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_tree_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of State Trie reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_tree_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Blocks Trie writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_storage_tree_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of storge trie reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_storage_tree_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of storage trie writes."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_witness_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Witness DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_witness_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Size of witness DB in bytes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_witness_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Witness DB writes."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"evm",children:"Evm"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blockhash_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BLOCKHASH opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bn254_add_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BN254_ADD precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bn254_mul_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BN254_MUL precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bn254_pairing_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BN254_PAIRING precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_calls"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of calls to other contracts."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_creates"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of contract create calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_ec_recover_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of EC_RECOVERY precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_empty_calls"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of calls made to addresses without code."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_evm_exceptions"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of EVM exceptions thrown by contracts."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_m_copy_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of MCOPY opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_mod_exp_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of MODEXP precompiles executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_mod_exp_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of MODEXP precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_point_evaluation_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Point Evaluation precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_ripemd160_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of RIPEMD160 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_self_destructs"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SELFDESTRUCT calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sha256_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SHA256 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sload_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sstore_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SSTORE opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tload_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of TLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tstore_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of TSTORE opcodes executed."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_bytes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC bytes received."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_bytes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC bytes sent."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_errors"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests processed with errors."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_invalid_requests"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests that were invalid."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_request_deserialization_failures"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests that failed JSON deserialization."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_requests"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of JSON RPC requests received by the node."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_successes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests processed successfully."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"merge",children:"Merge"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_forkchoice_upded_execution_time"})})}),"\n",(0,r.jsx)(n.p,{children:"ForkchoiceUpded request execution time"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_get_payload_requests"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of GetPayload Requests"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_new_payload_execution_time"})})}),"\n",(0,r.jsx)(n.p,{children:"NewPayload request execution time"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_number_of_transactions_in_get_payload"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Transactions included in the Last GetPayload Request"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"network",children:"Network"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_already_connected_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to already connected"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_breach_of_protocol_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to breach of protocol"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_client_quitting_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to client quitting"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_disconnect_requested_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to disconnect requested"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_block_bodies_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.62 BlockBodies messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_block_headers_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.62 BlockHeaders messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_get_block_bodies_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.62 GetBlockBodies messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_get_block_headers_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.62 GetBlockHeaders messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_new_block_hashes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.62 NewBlockHashes messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_new_block_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.62 NewBlock messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_transactions_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.62 Transactions messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_get_node_data_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.63 GetNodeData messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_get_receipts_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.63 GetReceipts messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_node_data_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.63 NodeData messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_receipts_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.63 Receipts messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_get_pooled_transactions_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.65 GetPooledTransactions messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_get_pooled_transactions_requested"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.65 GetPooledTransactions messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_new_pooled_transaction_hashes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.65 NewPooledTransactionHashes messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_new_pooled_transaction_hashes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.65 NewPooledTransactionHashes messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_pooled_transactions_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.65 PooledTransactions messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_block_bodies_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 BlockBodies messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_block_headers_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 BlockHeaders messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_block_bodies_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 GetBlockBodies messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_block_headers_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 GetBlockHeaders messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_node_data_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 GetNodeData messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_pooled_transactions_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 GetPooledTransactions messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_pooled_transactions_requested"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 GetPooledTransactions messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_receipts_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 GetReceipts messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_node_data_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 NodeData messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_pooled_transactions_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 PooledTransactions messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_receipts_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.66 Receipts messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth68_new_pooled_transaction_hashes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.68 NewPooledTransactionHashes messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth68_new_pooled_transaction_hashes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth.68 NewPooledTransactionHashes messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_get_node_data_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of GetNodeData messages received via NodeData protocol"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_handshakes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of devp2p handshakes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_handshake_timeouts"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of devp2p handshke timeouts"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_hellos_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of devp2p hello messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_hellos_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of devp2p hello messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_incoming_connections"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of incoming connection."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_incompatible_p2_p_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to incompatible devp2p version"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_les_statuses_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of les status messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_les_statuses_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of les status messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_already_connected_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to already connected"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_breach_of_protocol_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of sent disconnects due to breach of protocol"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_client_quitting_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to client quitting"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_disconnect_requested_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to disconnect requested"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_disconnects_total"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of local disconnects"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_incompatible_p2_p_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to incompatible devp2p"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_null_node_identity_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to missing node identity"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_other_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to other reason"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_receive_message_timeout_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to request timeout"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_same_as_self_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to connection to self"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_tcp_subsystem_error_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to TCP error"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_too_many_peers_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to breach of protocol"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_unexpected_identity_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of initiated disconnects due to node identity info mismatch"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_useless_peer_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of sent disconnects due to useless peer"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_node_data_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of NodeData messages received via NodeData protocol"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_null_node_identity_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to missing peer identity"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_other_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to other reasons"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_outgoing_connections"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of outgoing connection."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_peer_limit"})})}),"\n",(0,r.jsx)(n.p,{children:"The maximum number of peers this node allows to connect."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receive_message_timeout_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to request timeouts"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_remote_disconnects_total"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of remote disconnects"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_same_as_self_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to connecting to self"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_account_range_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP AccountRange messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_byte_codes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP ByteCodes messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_account_range_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetAccountRange messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_account_range_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetAccountRange messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_byte_codes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetByteCodes messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_byte_codes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetByteCodes messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_storage_ranges_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetStorageRanges messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_storage_ranges_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetStorageRanges messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_trie_nodes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetTrieNodes messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_trie_nodes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP GetTrieNodes messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_storage_ranges_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP StorageRanges messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_trie_nodes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SNAP TrieNodes messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_statuses_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth status messages received"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_statuses_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of eth status messages sent"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tcp_subsystem_error_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of disconnects due to TCP error"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_too_many_peers_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to too many peers"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_unexpected_identity_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to peer identity information mismatch"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_useless_peer_disconnects"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of received disconnects due to useless peer"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"pruning",children:"Pruning"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_cached_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that are currently kept in cache (either persisted or not)"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_committed_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been committed since the session start. These nodes may have been pruned, persisted or replaced."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_deep_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been removed from the cache during deep pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_deep_pruning_time"})})}),"\n",(0,r.jsx)(n.p,{children:"Time taken by the last deep pruning."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_last_persisted_block_number"})})}),"\n",(0,r.jsx)(n.p,{children:"Last persisted block number (snapshot)."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_loaded_from_cache_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reads from the node cache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_loaded_from_db_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_loaded_from_rlp_cache_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reads from the RLP cache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_memory_used_by_cache"})})}),"\n",(0,r.jsx)(n.p,{children:"Estimated memory used by cache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_persisted_node_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been persisted since the session start."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pruned_transient_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they were no longer needed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pruning_time"})})}),"\n",(0,r.jsx)(n.p,{children:"Time taken by the last pruning."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_replaced_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of nodes that have been exactly the same as other nodes in the cache when committing."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snapshot_persistence_time"})})}),"\n",(0,r.jsx)(n.p,{children:"Time taken by the last snapshot persistence."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"runner",children:"Runner"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_version"})})}),"\n",(0,r.jsx)(n.p,{children:"Version number"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"trie",children:"Trie"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tree_node_hash_calculations"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of trie node hash calculations."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tree_node_rlp_decodings"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of trie node RLP decodings."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tree_node_rlp_encodings"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of trie node RLP encodings."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"txpool",children:"TxPool"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blobs_in_block"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blobs in the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transaction_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blob transactions in pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transactions_in_block"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blob transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level1"})})}),"\n",(0,r.jsx)(n.p,{children:"Ratio of transactions in the block absent in hashCache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level2"})})}),"\n",(0,r.jsx)(n.p,{children:"Ratio of transactions in the block absent in pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eip1559_transactions_ratio"})})}),"\n",(0,r.jsx)(n.p,{children:"Ratio of 1559-type transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending1559_transactions_added"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending 1559-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_blob_transactions_added"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending blob-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_added"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_balance_below_value"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is less than txn value."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_conflicting_tx_type"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions rejected because of already pending tx of other type (allowed blob txs or others, not both at once)."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_discarded"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_evicted"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions evicted from transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_gas_limit_too_high"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the gas limit was to high for the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of hashes of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of hashes of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_known"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of already known pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_low_nonce"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions with already used nonce."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_malformed"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of malformed transactions."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_gap"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not having preceding nonce of this sender in TxPool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_too_far_in_future"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions with nonce too far in future."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_not_supported_tx_type"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not supported transaction type."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored after passing early rejections as balance is too low to compete with lowest effective fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_replace"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were trying to replace tx with the same sender and nonce and failed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_balance"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance too low for fee to be higher than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_fee"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of fee lower than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_priority_fee"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of priority fee lower than minimal requirement."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_unresolvable_sender"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the sender couldn't be resolved."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_with_expensive_filtering"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions that reached filters which are resource expensive"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_zero_balance"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is zero and cannot pay gas."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_transaction_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions in pool."}),"\n"]}),"\n"]})})]})]})}function x(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>l});var r=s(6540);const i={},d=r.createContext(i);function c(e){const n=r.useContext(d);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c52b0357.8c8eb446.js b/assets/js/c52b0357.c4b9cb68.js similarity index 99% rename from assets/js/c52b0357.8c8eb446.js rename to assets/js/c52b0357.c4b9cb68.js index a6acecddb..82a271f17 100644 --- a/assets/js/c52b0357.8c8eb446.js +++ b/assets/js/c52b0357.c4b9cb68.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1492],{9908:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const o={title:"Aura-based validators",sidebar_position:0},s=void 0,a={id:"validators/aura",title:"Aura-based validators",description:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.",source:"@site/versioned_docs/version-1.29.0/validators/aura.md",sourceDirName:"validators",slug:"/validators/aura",permalink:"/validators/aura",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/validators/aura.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Aura-based validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Validators",permalink:"/validators/"},next:{title:"Building from source",permalink:"/developers/building-from-source"}},c={},d=[{value:"Configuring a Docker container",id:"configuring-a-docker-container",level:2},{value:"Configuring keyfile",id:"configuring-keyfile",level:2},{value:"Configuration settings",id:"configuration-settings",level:2},{value:"Running the validator",id:"running-the-validator",level:2}];function l(e){const n={admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Your machine's clock has to be synchronized. Otherwise, you might miss block sealing. By default, the block time is set to 5 seconds."})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-a-docker-container",children:"Configuring a Docker container"}),"\n",(0,r.jsx)(n.p,{children:"The example below shows how to configure a Docker container for an Aura-based validator on the Energy Web chain:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n nethermind-validator:\n image: nethermind/nethermind:latest\n container_name: nethermind-validator\n restart: unless-stopped\n ports:\n - 8545:8545\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n environment:\n - NETHERMIND_CONFIG=energyweb\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-keyfile",children:"Configuring keyfile"}),"\n",(0,r.jsxs)(n.p,{children:["Make sure that the keyfile name contains the public key (address). Otherwise, Nethermind doesn't recognize it as such.\nFor instance, a keyfile can be named ",(0,r.jsx)(n.code,{children:"key-0x1234567890123456789012345678901234567890"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The keyfile must be stored in the ",(0,r.jsx)(n.code,{children:"keystore"})," directory located in the Nethermind base data directory."]}),"\n",(0,r.jsx)(n.h2,{id:"configuration-settings",children:"Configuration settings"}),"\n",(0,r.jsx)(n.p,{children:"Here is an example of recommended settings for a validator. The most convenient way to configure these settings is either defining them in the configuration file or passing them as environment variables."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.IsMining"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.MemoryHint"}),": Can be left unspecified. It's recommended to configure it accordingly to the machine specification(for Eneergy Web, 768000000 is enough)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"EthStats"})," namespace parameters if you want to report node status to Ethstats for your network."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Metrics"})," namespace parameters to enable node monitoring."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.PasswordFiles"}),": The path to the file containing the password for the mining private key."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.UnlockAccounts"}),": An array of accounts. Provide the miner public address here."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"}),": The miner public address should be provided here as well."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Aura.ForceSealing"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Merge.Enabled"}),": ",(0,r.jsx)(n.code,{children:"false"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Here's an example of above settings in the Energy Web configuration file:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",metastring:'title="energyweb.cfg"',children:'{\n "Init": {\n "ChainSpecPath": "chainspec/energyweb.json",\n "GenesisHash": "0x0b6d3e680af2fc525392c720666cce58e3d8e6fe75ba4b48cb36bcc69039229b",\n "BaseDbPath": "nethermind_db/energyweb",\n "LogFileName": "energyweb.log",\n "MemoryHint": 768000000\n },\n "Sync": {\n "FastSync": true,\n "PivotNumber": 26940000,\n "PivotHash": "0x8835983de9578a4355313afd2a43d8eada6f2a4ddbd9c51da103e0d5f53c4d8b",\n "PivotTotalDifficulty": "9167206964850082205703311924211835616257898274",\n "FastBlocks": true,\n "UseGethLimitsInFastBlocks": false,\n "FastSyncCatchUpHeightDelta": 10000000000\n },\n "EthStats": {\n "Enabled": true,\n "Name": "Nethermind Energy Web",\n "Secret": "secret...",\n "Url": "ws://localhost:3000/api"\n },\n "Metrics": {\n "Enabled": true,\n "NodeName": "Energy Web",\n "PushGatewayUrl": "http://localhost:9091/metrics"\n },\n "Mining": {\n "MinGasPrice": 1\n },\n "Merge": {\n "Enabled": false\n },\n "Aura": {\n "ForceSealing": true\n },\n "KeyStore": {\n "PasswordFiles": ["keystore/password"],\n "UnlockAccounts": ["0x..."],\n "BlockAuthorAccount": "0x..." \n },\n}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"running-the-validator",children:"Running the validator"}),"\n",(0,r.jsxs)(n.p,{children:["The above Docker Compose file can be run from the directory the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," is located in as follows:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose up -d\n"})}),"\n",(0,r.jsx)(n.p,{children:"To check the logs and verify the sealing of blocks, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose logs -f nethermind-validator\n"})})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>a});var r=i(6540);const t={},o=r.createContext(t);function s(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1492],{9908:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const o={title:"Aura-based validators",sidebar_position:0},s=void 0,a={id:"validators/aura",title:"Aura-based validators",description:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.",source:"@site/versioned_docs/version-1.29.0/validators/aura.md",sourceDirName:"validators",slug:"/validators/aura",permalink:"/validators/aura",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/validators/aura.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Aura-based validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Validators",permalink:"/validators/"},next:{title:"Building from source",permalink:"/developers/building-from-source"}},c={},d=[{value:"Configuring a Docker container",id:"configuring-a-docker-container",level:2},{value:"Configuring keyfile",id:"configuring-keyfile",level:2},{value:"Configuration settings",id:"configuration-settings",level:2},{value:"Running the validator",id:"running-the-validator",level:2}];function l(e){const n={admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Your machine's clock has to be synchronized. Otherwise, you might miss block sealing. By default, the block time is set to 5 seconds."})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-a-docker-container",children:"Configuring a Docker container"}),"\n",(0,r.jsx)(n.p,{children:"The example below shows how to configure a Docker container for an Aura-based validator on the Energy Web chain:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n nethermind-validator:\n image: nethermind/nethermind:latest\n container_name: nethermind-validator\n restart: unless-stopped\n ports:\n - 8545:8545\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n environment:\n - NETHERMIND_CONFIG=energyweb\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-keyfile",children:"Configuring keyfile"}),"\n",(0,r.jsxs)(n.p,{children:["Make sure that the keyfile name contains the public key (address). Otherwise, Nethermind doesn't recognize it as such.\nFor instance, a keyfile can be named ",(0,r.jsx)(n.code,{children:"key-0x1234567890123456789012345678901234567890"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The keyfile must be stored in the ",(0,r.jsx)(n.code,{children:"keystore"})," directory located in the Nethermind base data directory."]}),"\n",(0,r.jsx)(n.h2,{id:"configuration-settings",children:"Configuration settings"}),"\n",(0,r.jsx)(n.p,{children:"Here is an example of recommended settings for a validator. The most convenient way to configure these settings is either defining them in the configuration file or passing them as environment variables."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.IsMining"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.MemoryHint"}),": Can be left unspecified. It's recommended to configure it accordingly to the machine specification(for Eneergy Web, 768000000 is enough)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"EthStats"})," namespace parameters if you want to report node status to Ethstats for your network."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Metrics"})," namespace parameters to enable node monitoring."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.PasswordFiles"}),": The path to the file containing the password for the mining private key."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.UnlockAccounts"}),": An array of accounts. Provide the miner public address here."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"}),": The miner public address should be provided here as well."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Aura.ForceSealing"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Merge.Enabled"}),": ",(0,r.jsx)(n.code,{children:"false"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Here's an example of above settings in the Energy Web configuration file:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",metastring:'title="energyweb.cfg"',children:'{\n "Init": {\n "ChainSpecPath": "chainspec/energyweb.json",\n "GenesisHash": "0x0b6d3e680af2fc525392c720666cce58e3d8e6fe75ba4b48cb36bcc69039229b",\n "BaseDbPath": "nethermind_db/energyweb",\n "LogFileName": "energyweb.log",\n "MemoryHint": 768000000\n },\n "Sync": {\n "FastSync": true,\n "PivotNumber": 26940000,\n "PivotHash": "0x8835983de9578a4355313afd2a43d8eada6f2a4ddbd9c51da103e0d5f53c4d8b",\n "PivotTotalDifficulty": "9167206964850082205703311924211835616257898274",\n "FastBlocks": true,\n "UseGethLimitsInFastBlocks": false,\n "FastSyncCatchUpHeightDelta": 10000000000\n },\n "EthStats": {\n "Enabled": true,\n "Name": "Nethermind Energy Web",\n "Secret": "secret...",\n "Url": "ws://localhost:3000/api"\n },\n "Metrics": {\n "Enabled": true,\n "NodeName": "Energy Web",\n "PushGatewayUrl": "http://localhost:9091/metrics"\n },\n "Mining": {\n "MinGasPrice": 1\n },\n "Merge": {\n "Enabled": false\n },\n "Aura": {\n "ForceSealing": true\n },\n "KeyStore": {\n "PasswordFiles": ["keystore/password"],\n "UnlockAccounts": ["0x..."],\n "BlockAuthorAccount": "0x..." \n },\n}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"running-the-validator",children:"Running the validator"}),"\n",(0,r.jsxs)(n.p,{children:["The above Docker Compose file can be run from the directory the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," is located in as follows:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose up -d\n"})}),"\n",(0,r.jsx)(n.p,{children:"To check the logs and verify the sealing of blocks, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose logs -f nethermind-validator\n"})})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>a});var r=i(6540);const t={},o=r.createContext(t);function s(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c6258319.1361d70d.js b/assets/js/c6258319.8733b4b1.js similarity index 99% rename from assets/js/c6258319.1361d70d.js rename to assets/js/c6258319.8733b4b1.js index d9202b51f..07fb52fc8 100644 --- a/assets/js/c6258319.1361d70d.js +++ b/assets/js/c6258319.8733b4b1.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9894],{541:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>l,frontMatter:()=>i,metadata:()=>c,toc:()=>h});var s=t(4848),o=t(8453);const i={title:"Consensus clients",sidebar_position:1},r=void 0,c={id:"get-started/running-node/consensus-clients",title:"Consensus clients",description:"Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.",source:"@site/versioned_docs/version-1.29.0/get-started/running-node/consensus-clients.md",sourceDirName:"get-started/running-node",slug:"/get-started/running-node/consensus-clients",permalink:"/get-started/running-node/consensus-clients",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/get-started/running-node/consensus-clients.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Consensus clients",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Running a node",permalink:"/get-started/running-node/"},next:{title:"Layer 2 networks",permalink:"/get-started/running-node/l2-networks"}},a={},h=[{value:"Choosing a consensus client",id:"choosing-a-consensus-client",level:2},{value:"Configuring JSON-RPC interface",id:"configuring-json-rpc-interface",level:2},{value:"Running the consensus client",id:"running-the-consensus-client",level:2},{value:"Grandine",id:"grandine",level:3},{value:"Lighthouse",id:"lighthouse",level:3},{value:"Lodestar",id:"lodestar",level:3},{value:"Nimbus",id:"nimbus",level:3},{value:"Prysm",id:"prysm",level:3},{value:"Teku",id:"teku",level:3},{value:"Running Nethermind",id:"running-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/roadmap/merge/",children:"The Merge"})," happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.\nThe Merge changed how operators run nodes on the Ethereum blockchain. A node now needs two clients that work together as a pair. In addition to the ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#execution-client",children:"execution client"})," (e.g., Nethermind), you need a ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#consensus-client",children:"consensus client"})," that connects to the consensus layer and runs the PoS algorithm. This guide shows how to run an Ethereum node with Nethermind and a consensus client of your choice."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["An easy way to run both consensus and execution clients is with ",(0,s.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"}),". Sedge is a setup tool for PoS validators and nodes that runs on Linux and macOS."]})}),"\n",(0,s.jsx)(n.h2,{id:"choosing-a-consensus-client",children:"Choosing a consensus client"}),"\n",(0,s.jsx)(n.p,{children:"On the consensus layer, there are 5 client implementations to choose from. Though all consensus clients are great, check them out yourself to find the one best suited to your needs."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku"})}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.p,{children:["We urge you to take ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/client-diversity",children:"client diversity"})," into consideration when choosing your consensus client and avoid the majority clients."]})}),"\n",(0,s.jsx)(n.h2,{id:"configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"\n",(0,s.jsxs)(n.p,{children:["Execution and consensus clients communicate via an authenticated endpoint specified in Engine JSON-RPC API. In order to connect to a consensus client, the execution client must generate a ",(0,s.jsx)(n.a,{href:"https://jwt.io",children:"JWT"})," secret at a known path. Although the secret is generated automatically by Nethermind on startup at ",(0,s.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory, in some cases, you might need to do it yourself. You can generate one using ",(0,s.jsx)(n.a,{href:"https://www.openssl.org",children:"OpenSSL"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"openssl rand -hex 32 > path/to/jwt.hex\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"Since the JWT secret is simply a 64-character hex value, there are many other ways of generating it, including online resources. However, for security reasons, we recommend using OpenSSL."})}),"\n",(0,s.jsxs)(n.p,{children:["The generated JWT secret can be specified with the ",(0,s.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option. For more configuration options, see ",(0,s.jsx)(n.a,{href:"/interacting/json-rpc-server#engine-api",children:"Engine API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-the-consensus-client",children:"Running the consensus client"}),"\n",(0,s.jsxs)(n.p,{children:["This step assumes that you have already ",(0,s.jsx)(n.a,{href:"/get-started/installing-nethermind",children:"installed"})," Nethermind, the ",(0,s.jsx)(n.a,{href:"#choosing-a-consensus-client",children:"consensus client"})," of your choice, and, optionally, created the ",(0,s.jsx)(n.a,{href:"#configuring-json-rpc-interface",children:"JWT secret"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["As syncing from the scratch can take a very long time on some networks (up to several days), the commands below optionally use ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/#checkpoint-sync",children:"checkpoint sync"})," to speed up the process."]})}),"\n",(0,s.jsx)(n.h3,{id:"grandine",children:"Grandine"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"grandine \\\n --network mainnet \\\n --eth1-rpc-urls http://localhost:8551 \\\n --jwt-secret path/to/jwt.hex \\\n --checkpoint-sync-url https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Grandine on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lighthouse",children:"Lighthouse"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lighthouse bn \\\n --network mainnet \\\n --execution-endpoint http://localhost:8551 \\\n --execution-jwt path/to/jwt.hex \\\n --checkpoint-sync-url https://mainnet.checkpoint.sigp.io \\\n --http\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lighthouse on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lodestar",children:"Lodestar"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lodestar beacon \\\n --network mainnet \\\n --jwt-secret path/to/jwt.hex \\\n --checkpointSyncUrl https://beaconstate-mainnet.chainsafe.io\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lodestar on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpointSyncUrl"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"nimbus",children:"Nimbus"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./run-mainnet-beacon-node.sh \\\n --web3-url=http://127.0.0.1:8551 \\\n --jwt-secret=path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Numbus on Mainnet without checkpoint sync. For checkpoint sync, see ",(0,s.jsx)(n.a,{href:"https://nimbus.guide/trusted-node-sync.html",children:"Sync from a trusted node"}),". For other networks, see the ",(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus documentation"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"prysm",children:"Prysm"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./prysm.sh beacon-chain \\\n --mainnet \\\n --execution-endpoint=http://localhost:8551 \\\n --jwt-secret=path/to/jwt.hex \\\n --checkpoint-sync-url=https://beaconstate.ethstaker.cc \\\n --genesis-beacon-api-url=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Prysm on Mainnet. For other networks, replace the ",(0,s.jsx)(n.code,{children:"--mainnet"})," and set ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," and ",(0,s.jsx)(n.code,{children:"--genesis-beacon-api-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"teku",children:"Teku"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"teku \\\n --network=mainnet \\\n --ee-endpoint=http://localhost:8551 \\\n --ee-jwt-secret-file=path/to/jwt.hex \\\n --metrics-enabled=true \\\n --rest-api-enabled=true \\\n --initial-state=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Teku on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--initial-state"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-nethermind",children:"Running Nethermind"}),"\n",(0,s.jsxs)(n.p,{children:["Once your consensus client is up and running, you can start Nethermind with the ",(0,s.jsx)(n.em,{children:"same"})," JWT secret provided to the consensus client:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For more info about running a node with Nethermind, see ",(0,s.jsx)(n.a,{href:"/get-started/running-node/",children:"Running a node"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(6540);const o={},i=s.createContext(o);function r(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9894],{541:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>l,frontMatter:()=>i,metadata:()=>c,toc:()=>h});var s=t(4848),o=t(8453);const i={title:"Consensus clients",sidebar_position:1},r=void 0,c={id:"get-started/running-node/consensus-clients",title:"Consensus clients",description:"Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as The Merge happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.",source:"@site/versioned_docs/version-1.29.0/get-started/running-node/consensus-clients.md",sourceDirName:"get-started/running-node",slug:"/get-started/running-node/consensus-clients",permalink:"/get-started/running-node/consensus-clients",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/get-started/running-node/consensus-clients.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Consensus clients",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Running a node",permalink:"/get-started/running-node/"},next:{title:"Layer 2 networks",permalink:"/get-started/running-node/l2-networks"}},a={},h=[{value:"Choosing a consensus client",id:"choosing-a-consensus-client",level:2},{value:"Configuring JSON-RPC interface",id:"configuring-json-rpc-interface",level:2},{value:"Running the consensus client",id:"running-the-consensus-client",level:2},{value:"Grandine",id:"grandine",level:3},{value:"Lighthouse",id:"lighthouse",level:3},{value:"Lodestar",id:"lodestar",level:3},{value:"Nimbus",id:"nimbus",level:3},{value:"Prysm",id:"prysm",level:3},{value:"Teku",id:"teku",level:3},{value:"Running Nethermind",id:"running-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Ethereum's long-awaited shift from proof-of-work (PoW) to proof-of-stake (PoS) known as ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/roadmap/merge/",children:"The Merge"})," happened on September 15, 2022, and came with fundamental changes to the network. The most notable change is the addition of the consensus layer (aka Beacon Chain) which replaced the PoW mining. It is coordinating and pseudorandomly selecting block producers from the pool of stakers/validators in a way that makes it extremely difficult for validators to coordinate attacks on the network.\nThe Merge changed how operators run nodes on the Ethereum blockchain. A node now needs two clients that work together as a pair. In addition to the ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#execution-client",children:"execution client"})," (e.g., Nethermind), you need a ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/glossary/#consensus-client",children:"consensus client"})," that connects to the consensus layer and runs the PoS algorithm. This guide shows how to run an Ethereum node with Nethermind and a consensus client of your choice."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["An easy way to run both consensus and execution clients is with ",(0,s.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"}),". Sedge is a setup tool for PoS validators and nodes that runs on Linux and macOS."]})}),"\n",(0,s.jsx)(n.h2,{id:"choosing-a-consensus-client",children:"Choosing a consensus client"}),"\n",(0,s.jsx)(n.p,{children:"On the consensus layer, there are 5 client implementations to choose from. Though all consensus clients are great, check them out yourself to find the one best suited to your needs."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku"})}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.p,{children:["We urge you to take ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/client-diversity",children:"client diversity"})," into consideration when choosing your consensus client and avoid the majority clients."]})}),"\n",(0,s.jsx)(n.h2,{id:"configuring-json-rpc-interface",children:"Configuring JSON-RPC interface"}),"\n",(0,s.jsxs)(n.p,{children:["Execution and consensus clients communicate via an authenticated endpoint specified in Engine JSON-RPC API. In order to connect to a consensus client, the execution client must generate a ",(0,s.jsx)(n.a,{href:"https://jwt.io",children:"JWT"})," secret at a known path. Although the secret is generated automatically by Nethermind on startup at ",(0,s.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory, in some cases, you might need to do it yourself. You can generate one using ",(0,s.jsx)(n.a,{href:"https://www.openssl.org",children:"OpenSSL"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"openssl rand -hex 32 > path/to/jwt.hex\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"Since the JWT secret is simply a 64-character hex value, there are many other ways of generating it, including online resources. However, for security reasons, we recommend using OpenSSL."})}),"\n",(0,s.jsxs)(n.p,{children:["The generated JWT secret can be specified with the ",(0,s.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option. For more configuration options, see ",(0,s.jsx)(n.a,{href:"/interacting/json-rpc-server#engine-api",children:"Engine API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-the-consensus-client",children:"Running the consensus client"}),"\n",(0,s.jsxs)(n.p,{children:["This step assumes that you have already ",(0,s.jsx)(n.a,{href:"/get-started/installing-nethermind",children:"installed"})," Nethermind, the ",(0,s.jsx)(n.a,{href:"#choosing-a-consensus-client",children:"consensus client"})," of your choice, and, optionally, created the ",(0,s.jsx)(n.a,{href:"#configuring-json-rpc-interface",children:"JWT secret"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["As syncing from the scratch can take a very long time on some networks (up to several days), the commands below optionally use ",(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/nodes-and-clients/#checkpoint-sync",children:"checkpoint sync"})," to speed up the process."]})}),"\n",(0,s.jsx)(n.h3,{id:"grandine",children:"Grandine"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"grandine \\\n --network mainnet \\\n --eth1-rpc-urls http://localhost:8551 \\\n --jwt-secret path/to/jwt.hex \\\n --checkpoint-sync-url https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Grandine on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.grandine.io",children:"Grandine documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lighthouse",children:"Lighthouse"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lighthouse bn \\\n --network mainnet \\\n --execution-endpoint http://localhost:8551 \\\n --execution-jwt path/to/jwt.hex \\\n --checkpoint-sync-url https://mainnet.checkpoint.sigp.io \\\n --http\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lighthouse on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://lighthouse-book.sigmaprime.io",children:"Lighthouse documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"lodestar",children:"Lodestar"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"lodestar beacon \\\n --network mainnet \\\n --jwt-secret path/to/jwt.hex \\\n --checkpointSyncUrl https://beaconstate-mainnet.chainsafe.io\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Lodestar on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--checkpointSyncUrl"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://chainsafe.github.io/lodestar",children:"Lodestar documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"nimbus",children:"Nimbus"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./run-mainnet-beacon-node.sh \\\n --web3-url=http://127.0.0.1:8551 \\\n --jwt-secret=path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Numbus on Mainnet without checkpoint sync. For checkpoint sync, see ",(0,s.jsx)(n.a,{href:"https://nimbus.guide/trusted-node-sync.html",children:"Sync from a trusted node"}),". For other networks, see the ",(0,s.jsx)(n.a,{href:"https://nimbus.guide",children:"Nimbus documentation"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"prysm",children:"Prysm"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./prysm.sh beacon-chain \\\n --mainnet \\\n --execution-endpoint=http://localhost:8551 \\\n --jwt-secret=path/to/jwt.hex \\\n --checkpoint-sync-url=https://beaconstate.ethstaker.cc \\\n --genesis-beacon-api-url=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Prysm on Mainnet. For other networks, replace the ",(0,s.jsx)(n.code,{children:"--mainnet"})," and set ",(0,s.jsx)(n.code,{children:"--checkpoint-sync-url"})," and ",(0,s.jsx)(n.code,{children:"--genesis-beacon-api-url"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.prylabs.network",children:"Prysm documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"teku",children:"Teku"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"teku \\\n --network=mainnet \\\n --ee-endpoint=http://localhost:8551 \\\n --ee-jwt-secret-file=path/to/jwt.hex \\\n --metrics-enabled=true \\\n --rest-api-enabled=true \\\n --initial-state=https://beaconstate.ethstaker.cc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The command above runs Teku on Mainnet. For other networks, set the ",(0,s.jsx)(n.code,{children:"--network"})," and ",(0,s.jsx)(n.code,{children:"--initial-state"})," options accordingly. See the ",(0,s.jsx)(n.a,{href:"https://docs.teku.consensys.net",children:"Teku documentation"})," and ",(0,s.jsx)(n.a,{href:"https://eth-clients.github.io/checkpoint-sync-endpoints",children:"public checkpoint sync endpoints"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running-nethermind",children:"Running Nethermind"}),"\n",(0,s.jsxs)(n.p,{children:["Once your consensus client is up and running, you can start Nethermind with the ",(0,s.jsx)(n.em,{children:"same"})," JWT secret provided to the consensus client:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --JsonRpc.JwtSecretFile path/to/jwt.hex\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For more info about running a node with Nethermind, see ",(0,s.jsx)(n.a,{href:"/get-started/running-node/",children:"Running a node"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(6540);const o={},i=s.createContext(o);function r(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c65f1e33.bbe63663.js b/assets/js/c65f1e33.8fa94084.js similarity index 99% rename from assets/js/c65f1e33.bbe63663.js rename to assets/js/c65f1e33.8fa94084.js index 427c8c80b..efa8143dc 100644 --- a/assets/js/c65f1e33.bbe63663.js +++ b/assets/js/c65f1e33.8fa94084.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[585],{9060:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>m,frontMatter:()=>l,metadata:()=>o,toc:()=>h});var r=t(4848),s=t(8453),i=t(1470),a=t(9365);const l={title:"Installing Nethermind",sidebar_position:2},d=void 0,o={id:"get-started/installing-nethermind",title:"Installing Nethermind",description:"Nethermind can be installed in several ways:",source:"@site/docs/get-started/installing-nethermind.md",sourceDirName:"get-started",slug:"/get-started/installing-nethermind",permalink:"/next/get-started/installing-nethermind",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/get-started/installing-nethermind.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Installing Nethermind",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"System requirements",permalink:"/next/get-started/system-requirements"},next:{title:"Running a node",permalink:"/next/get-started/running-node/"}},c={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Package managers",id:"package-managers",level:2},{value:"Standalone downloads",id:"standalone-downloads",level:2},{value:"Configuring as a Linux service",id:"configuring-as-a-linux-service",level:3},{value:"Docker container",id:"docker-container",level:2}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"Nethermind can be installed in several ways:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#package-managers",children:"Via a package manager"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"As a standalone download"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#docker-container",children:"As a Docker container"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/next/developers/building-from-source",children:"By building from source code"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Does not apply to Docker distributions."})}),"\n",(0,r.jsx)(n.p,{children:"Before installing Nethermind, your specific platform might need the following prerequisites."}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsx)(a.A,{value:"linux",label:"Linux",children:"None"}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsxs)(n.p,{children:["Although the modern versions of Windows are bundled with a recent version of ",(0,r.jsx)(n.a,{href:"https://aka.ms/vcredist",children:"Microsoft Visual C++ Redistributable"}),", in some cases, it may need an update:"]}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install Microsoft.VCRedist.2015+.x64\n"})})]}),(0,r.jsx)(a.A,{value:"macos",label:"macOS",children:"None"})]}),"\n",(0,r.jsx)(n.h2,{id:"package-managers",children:"Package managers"}),"\n",(0,r.jsx)(n.p,{children:"Package managers are the easiest and fastest way of installing Nethermind."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsxs)(n.p,{children:["If you're using a package manager, it's highly recommended to set the ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#datadir",children:(0,r.jsx)(n.code,{children:"-dd, --datadir"})})," flag to specify the data directory. Otherwise, Nethermind will use the default data directory where the package is installed, which may not be preserved on further updates or uninstall."]})}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,r.jsx)(n.p,{children:"On Ubuntu and other Linux distros supporting PPA, Nethermind can be installed via Launchpad PPA."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo add-apt-repository ppa:nethermindeth/nethermind\n"})}),(0,r.jsxs)(n.admonition,{type:"note",children:[(0,r.jsx)(n.p,{children:"If the command is not found, run:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install software-properties-common\n"})})]}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get update\nsudo apt-get install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsx)(n.p,{children:"On Windows, Nethermind can be installed via Windows Package Manager as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(n.p,{children:"On macOS, Nethermind can be installed via Homebrew."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew tap nethermindeth/nethermind\n"})}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew install nethermind\n"})})]})]}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"/next/get-started/running-node/",children:"Running a node"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"standalone-downloads",children:"Standalone downloads"}),"\n",(0,r.jsx)(n.p,{children:"Standalone downloads give users more flexibility by allowing them to install a specific version of Nethermind, choose the installation location, and prevent automatic updates."}),"\n",(0,r.jsxs)(n.p,{children:["Standalone downloads are available on ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub Releases"})," and at ",(0,r.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads.nethermind.io"})," as ZIP archives for x64 and AArch64 (ARM64) CPU architectures for Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h3,{id:"configuring-as-a-linux-service",children:"Configuring as a Linux service"}),"\n",(0,r.jsxs)(n.p,{children:["To install Nethermind as a Linux service, see the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/scripts/nethermind.service",children:"nethermind.service"})," unit file as an example.\nAs it's configured to run Nethermind as the specific user and group and looks for the executable in a predefined location, the following steps need to be fulfilled:"]}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsxs)(n.p,{children:["Any of these steps can be omitted by replacing them with corresponding changes in the unit file.\nFor instance, if you want to run Nethermind as a different user, change the ",(0,r.jsx)(n.code,{children:"User"})," and ",(0,r.jsx)(n.code,{children:"Group"})," options in the unit file."]})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Create a new user and group:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:" # Create a new user and group\n sudo useradd -m -s /bin/bash nethermind\n\n # Increase the maximum number of open files\n sudo bash -c 'echo \"nethermind soft nofile 100000\" > /etc/security/limits.d/nethermind.conf'\n sudo bash -c 'echo \"nethermind hard nofile 100000\" >> /etc/security/limits.d/nethermind.conf'\n\n # Switch to the nethermind user\n sudo su -l nethermind\n\n # Create required directories\n # Note that the home directory (~) is now /home/nethermind\n mkdir ~/build\n mkdir ~/data\n"})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"Download Nethermind"})," and extract the package contents to the ",(0,r.jsx)(n.code,{children:"~/build"})," directory."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Configure options in the ",(0,r.jsx)(n.code,{children:"~/.env"})," file:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",metastring:'title="~/.env"',children:'# Required\nNETHERMIND_CONFIG="mainnet"\n\n# Optional\nNETHERMIND_HEALTHCHECKSCONFIG_ENABLED="true"\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Now, let's set up the Linux service:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# Download the unit file\ncurl -L https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/nethermind.service -o nethermind.service\n\n# Move the unit file to the systemd directory\nsudo mv nethermind.service /etc/systemd/system\n\n# Reload the systemd daemon\nsudo systemctl daemon-reload\n\n# Start the service\nsudo systemctl start nethermind\n\n# Optionally, enable the service to start on boot\nsudo systemctl enable nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To ensure the service is up and running, check its status as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo systemctl status nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To monitor the Nethermind output, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"journalctl -u nethermind -f\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"/next/get-started/running-node/",children:"Running a node"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"docker-container",children:"Docker container"}),"\n",(0,r.jsxs)(n.p,{children:["The Docker images of Nethermind are available on ",(0,r.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind",children:"Docker Hub"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"This registry provides production versions of Nethermind with 3 types of tags:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:latest"})," is the latest version of Nethermind (the default tag)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:"})," is the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is the actual version of Nethermind."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:-chiseled"})," is a ",(0,r.jsx)(n.em,{children:"rootless"})," and ",(0,r.jsx)(n.a,{href:"https://ubuntu.com/engage/chiselled-ubuntu-images-for-containers",children:"chiseled"})," image with the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is either ",(0,r.jsx)(n.code,{children:"latest"})," or the actual version of Nethermind.",(0,r.jsx)(n.br,{}),"\n","For security reasons, this image contains only the absolutely necessary components and is intended to run as a non-root ",(0,r.jsx)(n.code,{children:"app"})," user with UID/GID of ",(0,r.jsx)(n.code,{children:"64198"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To download the image from the registry, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker pull nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Starting a node is achieved by:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"The following ports are exposed by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8545"}),": TCP, for the JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8551"}),": TCP, for the consensus client JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"30303"}),": TCP and UDP, for P2P networking"]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"It's highly recommended to mount data volumes as the Nethermind's data directories to ensure the synced data is preserved between the container restarts."})}),"\n",(0,r.jsx)(n.p,{children:"The following volume mount points are available by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/nethermind_db"}),": used to store the database"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/logs"}),": used to store the logs"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/keystore"}),": used to store the keys"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To mount separate volumes for each directory listed above, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/db,target=/nethermind/nethermind_db \\\n --mount type=bind,source=path/to/logs,target=/nethermind/logs \\\n --mount type=bind,source=path/to/keystore,target=/nethermind/keystore \\\n nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Alternatively, a single volume can be specified as the Nethermind data directory as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/data_dir,target=/nethermind/data_dir \\\n nethermind/nethermind -dd /nethermind/data_dir\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Note that any Nethermind-specific configuration option can be specified at the end. For instance, the ",(0,r.jsx)(n.code,{children:"-dd"})," option in this case. For further instructions, see ",(0,r.jsx)(n.a,{href:"/next/get-started/running-node/",children:"Running a node"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["To build the Docker image yourself, see ",(0,r.jsx)(n.a,{href:"/next/developers/building-from-source#bulding-docker-image",children:"Building Docker image"}),"."]})]})}function m(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>a});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var i=t(4848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,a),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var r=t(6540),s=t(4164),i=t(3104),a=t(6347),l=t(205),d=t(7485),o=t(1682),c=t(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const s=(0,a.W6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(s.location.search);n.set(i,e),s.replace({...s.location,search:n.toString()})}),[i,s])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,i=u(e),[a,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[o,h]=p({queryString:t,groupId:s}),[x,g]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,i]=(0,c.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:s}),f=(()=>{const e=o??x;return m({value:e,tabValues:i})?e:null})();(0,l.A)((()=>{f&&d(f)}),[f]);return{selectedValue:a,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,i]),tabValues:i}}var g=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function b(e){let{className:n,block:t,selectedValue:r,selectValue:a,tabValues:l}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,i.a_)(),c=e=>{const n=e.currentTarget,t=d.indexOf(n),s=l[t].value;s!==r&&(o(n),a(s))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=d.indexOf(e.currentTarget)+1;n=d[t]??d[0];break}case"ArrowLeft":{const t=d.indexOf(e.currentTarget)-1;n=d[t]??d[d.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:l.map((e=>{let{value:n,label:t,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:c,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:i}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=x(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(b,{...n,...e}),(0,j.jsx)(v,{...n,...e})]})}function w(e){const n=(0,g.A)();return(0,j.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>l});var r=t(6540);const s={},i=r.createContext(s);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[585],{9060:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>m,frontMatter:()=>l,metadata:()=>o,toc:()=>h});var r=t(4848),s=t(8453),i=t(1470),a=t(9365);const l={title:"Installing Nethermind",sidebar_position:2},d=void 0,o={id:"get-started/installing-nethermind",title:"Installing Nethermind",description:"Nethermind can be installed in several ways:",source:"@site/docs/get-started/installing-nethermind.md",sourceDirName:"get-started",slug:"/get-started/installing-nethermind",permalink:"/next/get-started/installing-nethermind",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/get-started/installing-nethermind.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Installing Nethermind",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"System requirements",permalink:"/next/get-started/system-requirements"},next:{title:"Running a node",permalink:"/next/get-started/running-node/"}},c={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Package managers",id:"package-managers",level:2},{value:"Standalone downloads",id:"standalone-downloads",level:2},{value:"Configuring as a Linux service",id:"configuring-as-a-linux-service",level:3},{value:"Docker container",id:"docker-container",level:2}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"Nethermind can be installed in several ways:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#package-managers",children:"Via a package manager"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"As a standalone download"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#docker-container",children:"As a Docker container"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/next/developers/building-from-source",children:"By building from source code"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Does not apply to Docker distributions."})}),"\n",(0,r.jsx)(n.p,{children:"Before installing Nethermind, your specific platform might need the following prerequisites."}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsx)(a.A,{value:"linux",label:"Linux",children:"None"}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsxs)(n.p,{children:["Although the modern versions of Windows are bundled with a recent version of ",(0,r.jsx)(n.a,{href:"https://aka.ms/vcredist",children:"Microsoft Visual C++ Redistributable"}),", in some cases, it may need an update:"]}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install Microsoft.VCRedist.2015+.x64\n"})})]}),(0,r.jsx)(a.A,{value:"macos",label:"macOS",children:"None"})]}),"\n",(0,r.jsx)(n.h2,{id:"package-managers",children:"Package managers"}),"\n",(0,r.jsx)(n.p,{children:"Package managers are the easiest and fastest way of installing Nethermind."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsxs)(n.p,{children:["If you're using a package manager, it's highly recommended to set the ",(0,r.jsx)(n.a,{href:"/next/fundamentals/configuration#datadir",children:(0,r.jsx)(n.code,{children:"-dd, --datadir"})})," flag to specify the data directory. Otherwise, Nethermind will use the default data directory where the package is installed, which may not be preserved on further updates or uninstall."]})}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,r.jsx)(n.p,{children:"On Ubuntu and other Linux distros supporting PPA, Nethermind can be installed via Launchpad PPA."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo add-apt-repository ppa:nethermindeth/nethermind\n"})}),(0,r.jsxs)(n.admonition,{type:"note",children:[(0,r.jsx)(n.p,{children:"If the command is not found, run:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install software-properties-common\n"})})]}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get update\nsudo apt-get install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsx)(n.p,{children:"On Windows, Nethermind can be installed via Windows Package Manager as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(n.p,{children:"On macOS, Nethermind can be installed via Homebrew."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew tap nethermindeth/nethermind\n"})}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew install nethermind\n"})})]})]}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"/next/get-started/running-node/",children:"Running a node"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"standalone-downloads",children:"Standalone downloads"}),"\n",(0,r.jsx)(n.p,{children:"Standalone downloads give users more flexibility by allowing them to install a specific version of Nethermind, choose the installation location, and prevent automatic updates."}),"\n",(0,r.jsxs)(n.p,{children:["Standalone downloads are available on ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub Releases"})," and at ",(0,r.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads.nethermind.io"})," as ZIP archives for x64 and AArch64 (ARM64) CPU architectures for Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h3,{id:"configuring-as-a-linux-service",children:"Configuring as a Linux service"}),"\n",(0,r.jsxs)(n.p,{children:["To install Nethermind as a Linux service, see the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/scripts/nethermind.service",children:"nethermind.service"})," unit file as an example.\nAs it's configured to run Nethermind as the specific user and group and looks for the executable in a predefined location, the following steps need to be fulfilled:"]}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsxs)(n.p,{children:["Any of these steps can be omitted by replacing them with corresponding changes in the unit file.\nFor instance, if you want to run Nethermind as a different user, change the ",(0,r.jsx)(n.code,{children:"User"})," and ",(0,r.jsx)(n.code,{children:"Group"})," options in the unit file."]})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Create a new user and group:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:" # Create a new user and group\n sudo useradd -m -s /bin/bash nethermind\n\n # Increase the maximum number of open files\n sudo bash -c 'echo \"nethermind soft nofile 100000\" > /etc/security/limits.d/nethermind.conf'\n sudo bash -c 'echo \"nethermind hard nofile 100000\" >> /etc/security/limits.d/nethermind.conf'\n\n # Switch to the nethermind user\n sudo su -l nethermind\n\n # Create required directories\n # Note that the home directory (~) is now /home/nethermind\n mkdir ~/build\n mkdir ~/data\n"})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"Download Nethermind"})," and extract the package contents to the ",(0,r.jsx)(n.code,{children:"~/build"})," directory."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Configure options in the ",(0,r.jsx)(n.code,{children:"~/.env"})," file:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",metastring:'title="~/.env"',children:'# Required\nNETHERMIND_CONFIG="mainnet"\n\n# Optional\nNETHERMIND_HEALTHCHECKSCONFIG_ENABLED="true"\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Now, let's set up the Linux service:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# Download the unit file\ncurl -L https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/nethermind.service -o nethermind.service\n\n# Move the unit file to the systemd directory\nsudo mv nethermind.service /etc/systemd/system\n\n# Reload the systemd daemon\nsudo systemctl daemon-reload\n\n# Start the service\nsudo systemctl start nethermind\n\n# Optionally, enable the service to start on boot\nsudo systemctl enable nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To ensure the service is up and running, check its status as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo systemctl status nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To monitor the Nethermind output, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"journalctl -u nethermind -f\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"/next/get-started/running-node/",children:"Running a node"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"docker-container",children:"Docker container"}),"\n",(0,r.jsxs)(n.p,{children:["The Docker images of Nethermind are available on ",(0,r.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind",children:"Docker Hub"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"This registry provides production versions of Nethermind with 3 types of tags:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:latest"})," is the latest version of Nethermind (the default tag)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:"})," is the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is the actual version of Nethermind."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:-chiseled"})," is a ",(0,r.jsx)(n.em,{children:"rootless"})," and ",(0,r.jsx)(n.a,{href:"https://ubuntu.com/engage/chiselled-ubuntu-images-for-containers",children:"chiseled"})," image with the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is either ",(0,r.jsx)(n.code,{children:"latest"})," or the actual version of Nethermind.",(0,r.jsx)(n.br,{}),"\n","For security reasons, this image contains only the absolutely necessary components and is intended to run as a non-root ",(0,r.jsx)(n.code,{children:"app"})," user with UID/GID of ",(0,r.jsx)(n.code,{children:"64198"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To download the image from the registry, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker pull nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Starting a node is achieved by:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"The following ports are exposed by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8545"}),": TCP, for the JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8551"}),": TCP, for the consensus client JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"30303"}),": TCP and UDP, for P2P networking"]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"It's highly recommended to mount data volumes as the Nethermind's data directories to ensure the synced data is preserved between the container restarts."})}),"\n",(0,r.jsx)(n.p,{children:"The following volume mount points are available by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/nethermind_db"}),": used to store the database"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/logs"}),": used to store the logs"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/keystore"}),": used to store the keys"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To mount separate volumes for each directory listed above, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/db,target=/nethermind/nethermind_db \\\n --mount type=bind,source=path/to/logs,target=/nethermind/logs \\\n --mount type=bind,source=path/to/keystore,target=/nethermind/keystore \\\n nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Alternatively, a single volume can be specified as the Nethermind data directory as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/data_dir,target=/nethermind/data_dir \\\n nethermind/nethermind -dd /nethermind/data_dir\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Note that any Nethermind-specific configuration option can be specified at the end. For instance, the ",(0,r.jsx)(n.code,{children:"-dd"})," option in this case. For further instructions, see ",(0,r.jsx)(n.a,{href:"/next/get-started/running-node/",children:"Running a node"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["To build the Docker image yourself, see ",(0,r.jsx)(n.a,{href:"/next/developers/building-from-source#bulding-docker-image",children:"Building Docker image"}),"."]})]})}function m(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>a});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var i=t(4848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,a),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var r=t(6540),s=t(4164),i=t(3104),a=t(6347),l=t(205),d=t(7485),o=t(1682),c=t(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const s=(0,a.W6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(s.location.search);n.set(i,e),s.replace({...s.location,search:n.toString()})}),[i,s])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,i=u(e),[a,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[o,h]=p({queryString:t,groupId:s}),[x,g]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,i]=(0,c.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:s}),f=(()=>{const e=o??x;return m({value:e,tabValues:i})?e:null})();(0,l.A)((()=>{f&&d(f)}),[f]);return{selectedValue:a,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,i]),tabValues:i}}var g=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function b(e){let{className:n,block:t,selectedValue:r,selectValue:a,tabValues:l}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,i.a_)(),c=e=>{const n=e.currentTarget,t=d.indexOf(n),s=l[t].value;s!==r&&(o(n),a(s))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=d.indexOf(e.currentTarget)+1;n=d[t]??d[0];break}case"ArrowLeft":{const t=d.indexOf(e.currentTarget)-1;n=d[t]??d[d.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:l.map((e=>{let{value:n,label:t,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:c,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:i}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=x(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(b,{...n,...e}),(0,j.jsx)(v,{...n,...e})]})}function w(e){const n=(0,g.A)();return(0,j.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>l});var r=t(6540);const s={},i=r.createContext(s);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c864e161.2c7c2964.js b/assets/js/c864e161.2c7c2964.js new file mode 100644 index 000000000..2366a9a46 --- /dev/null +++ b/assets/js/c864e161.2c7c2964.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1401],{7192:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),r=t(8453);const i={title:"dotnet-counters",sidebar_position:1},s=void 0,c={id:"monitoring/metrics/dotnet-counters",title:"dotnet-counters",description:"This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.",source:"@site/versioned_docs/version-1.29.0/monitoring/metrics/dotnet-counters.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/dotnet-counters",permalink:"/monitoring/metrics/dotnet-counters",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/monitoring/metrics/dotnet-counters.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"dotnet-counters",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Grafana and Prometheus",permalink:"/monitoring/metrics/grafana-and-prometheus"},next:{title:"Health check",permalink:"/monitoring/health-check"}},l={},d=[{value:"Step 1: Install dotnet-counters",id:"step-1-install-dotnet-counters",level:2},{value:"Installing locally",id:"installing-locally",level:3},{value:"Installing in a Docker container",id:"installing-in-a-docker-container",level:3},{value:"Step 2: Run Nethermind",id:"step-2-run-nethermind",level:2},{value:"Running locally",id:"running-locally",level:3},{value:"Running in a Docker container",id:"running-in-a-docker-container",level:3},{value:"Step 3: Collect metrics",id:"step-3-collect-metrics",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["This guide will walk you through setting up performance counters using the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"dotnet-counters"})," performance monitoring tool that observes counters published via the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventcounter",children:"EventCounters API"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"step-1-install-dotnet-counters",children:"Step 1: Install dotnet-counters"}),"\n",(0,o.jsx)(n.p,{children:"dotnet-counters can be either installed locally or in a Docker container."}),"\n",(0,o.jsx)(n.h3,{id:"installing-locally",children:"Installing locally"}),"\n",(0,o.jsx)(n.p,{children:"Use the dotnet tool install command as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet tool install -g dotnet-counters\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Once installed, you can run the tool from the command line by typing ",(0,o.jsx)(n.code,{children:"dotnet-counters"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"installing-in-a-docker-container",children:"Installing in a Docker container"}),"\n",(0,o.jsx)(n.p,{children:"To install dotnet-counters in a Docker container, create a Dockerfile with the following content:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-docker",metastring:'title="Dockerfile"',children:'FROM mcr.microsoft.com/dotnet/sdk:8.0\n\nRUN dotnet tool install -g dotnet-counters\n\nENV PATH="$PATH:/root/.dotnet/tools"\n\nENTRYPOINT ["/bin/bash"]\n'})}),"\n",(0,o.jsx)(n.p,{children:"Then, build the Docker image:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker build -t dotnet-counters .\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-2-run-nethermind",children:"Step 2: Run Nethermind"}),"\n",(0,o.jsxs)(n.p,{children:["To enable performance counters in Nethermind, set the ",(0,o.jsx)(n.a,{href:"/fundamentals/configuration#metrics-countersenabled",children:(0,o.jsx)(n.code,{children:"Metrics.CountersEnabled"})})," configuration option to ",(0,o.jsx)(n.code,{children:"true"}),". For more options, see the ",(0,o.jsx)(n.a,{href:"/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,o.jsx)(n.admonition,{type:"tip",children:(0,o.jsxs)(n.p,{children:["See ",(0,o.jsx)(n.a,{href:"/get-started/running-node/",children:"Running a node"})," for more information on how to run Nethermind."]})}),"\n",(0,o.jsx)(n.h3,{id:"running-locally",children:"Running locally"}),"\n",(0,o.jsx)(n.p,{children:"Run Nethermind as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --Metrics.CountersEnabled true\n"})}),"\n",(0,o.jsx)(n.h3,{id:"running-in-a-docker-container",children:"Running in a Docker container"}),"\n",(0,o.jsxs)(n.p,{children:["The easiest way of collecting metrics in a Docker container is to use Docker Compose. Below, we use the Nethermind official Docker image and the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," image we created earlier:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n\n dotnet-counters:\n image: dotnet-counters\n container_name: dotnet-counters\n stdin_open: true\n tty: true\n pid: service:nethermind\n volumes:\n - metrics:/tmp\n depends_on:\n - nethermind\n\n nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n command: -c mainnet --Metrics.CountersEnabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n - metrics:/tmp\n\nvolumes:\n metrics:\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:["dotnet-counters uses IPC socket communication to monitor the target process. For this, we use the ",(0,o.jsx)(n.code,{children:"metrics"})," volume to share the IPC socket directory with the ",(0,o.jsx)(n.code,{children:"nethermind"})," and ",(0,o.jsx)(n.code,{children:"dotnet-counter"})," services. The ",(0,o.jsx)(n.code,{children:"pid"})," option in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," service is used to share the PID namespace with the ",(0,o.jsx)(n.code,{children:"nethermind"})," service. This is necessary for ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," to be able to see the Nethermind process."]})}),"\n",(0,o.jsx)(n.p,{children:"We can run the above file as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-3-collect-metrics",children:"Step 3: Collect metrics"}),"\n",(0,o.jsxs)(n.p,{children:["Once dotnet-counters is installed and Nethermind is running, we can start collecting the metrics. If you chose to collect metrics in the containers, run the following command in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," container:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind\n"})}),"\n",(0,o.jsx)(n.p,{children:"By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind -f json -o /tmp/counters.json\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For more info about dotnet-counters, see its ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"official docs"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>c});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c864e161.c715f75d.js b/assets/js/c864e161.c715f75d.js deleted file mode 100644 index ae5f674b5..000000000 --- a/assets/js/c864e161.c715f75d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1401],{7192:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),r=t(8453);const i={title:"dotnet-counters",sidebar_position:1},s=void 0,c={id:"monitoring/metrics/dotnet-counters",title:"dotnet-counters",description:"This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.",source:"@site/versioned_docs/version-1.29.0/monitoring/metrics/dotnet-counters.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/dotnet-counters",permalink:"/monitoring/metrics/dotnet-counters",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/monitoring/metrics/dotnet-counters.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"dotnet-counters",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Grafana and Prometheus",permalink:"/monitoring/metrics/grafana-and-prometheus"},next:{title:"Health check",permalink:"/monitoring/health-check"}},l={},d=[{value:"Step 1: Install dotnet-counters",id:"step-1-install-dotnet-counters",level:2},{value:"Installing locally",id:"installing-locally",level:3},{value:"Installing in a Docker container",id:"installing-in-a-docker-container",level:3},{value:"Step 2: Run Nethermind",id:"step-2-run-nethermind",level:2},{value:"Running locally",id:"running-locally",level:3},{value:"Running in a Docker container",id:"running-in-a-docker-container",level:3},{value:"Step 3: Collect metrics",id:"step-3-collect-metrics",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["This guide will walk you through setting up performance counters using the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"dotnet-counters"})," performance monitoring tool that observes counters published via the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventcounter",children:"EventCounters API"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"step-1-install-dotnet-counters",children:"Step 1: Install dotnet-counters"}),"\n",(0,o.jsx)(n.p,{children:"dotnet-counters can be either installed locally or in a Docker container."}),"\n",(0,o.jsx)(n.h3,{id:"installing-locally",children:"Installing locally"}),"\n",(0,o.jsx)(n.p,{children:"Use the dotnet tool install command as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet tool install -g dotnet-counters\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Once installed, you can run the tool from the command line by typing ",(0,o.jsx)(n.code,{children:"dotnet-counters"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"installing-in-a-docker-container",children:"Installing in a Docker container"}),"\n",(0,o.jsx)(n.p,{children:"To install dotnet-counters in a Docker container, create a Dockerfile with the following content:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-docker",metastring:'title="Dockerfile"',children:'FROM mcr.microsoft.com/dotnet/sdk:8.0\n\nRUN dotnet tool install -g dotnet-counters\n\nENV PATH="$PATH:/root/.dotnet/tools"\n\nENTRYPOINT ["/bin/bash"]\n'})}),"\n",(0,o.jsx)(n.p,{children:"Then, build the Docker image:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker build -t dotnet-counters .\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-2-run-nethermind",children:"Step 2: Run Nethermind"}),"\n",(0,o.jsxs)(n.p,{children:["To enable performance counters in Nethermind, use the command line option ",(0,o.jsx)(n.code,{children:"--Metrics.CountersEnabled true"}),". For more options, see the ",(0,o.jsx)(n.a,{href:"/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["A ",(0,o.jsx)(n.a,{href:"/get-started/running-node/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,o.jsx)(n.h3,{id:"running-locally",children:"Running locally"}),"\n",(0,o.jsx)(n.p,{children:"To enable performance counters, run Nethermind as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.CountersEnabled true\n"})}),"\n",(0,o.jsx)(n.h3,{id:"running-in-a-docker-container",children:"Running in a Docker container"}),"\n",(0,o.jsxs)(n.p,{children:["The easiest way of collecting metrics in a Docker container is to use Docker Compose. Below, we use the Nethermind official Docker image and the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," image we created earlier:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n\n dotnet-counters:\n image: dotnet-counters\n container_name: dotnet-counters\n stdin_open: true\n tty: true\n pid: service:nethermind\n volumes:\n - metrics:/tmp\n depends_on:\n - nethermind\n\n nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n command: -c mainnet --Metrics.CountersEnabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n - metrics:/tmp\n\nvolumes:\n metrics:\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:["dotnet-counters uses IPC socket communication to monitor the target process. For this, we use the ",(0,o.jsx)(n.code,{children:"metrics"})," volume to share the IPC socket directory with the ",(0,o.jsx)(n.code,{children:"nethermind"})," and ",(0,o.jsx)(n.code,{children:"dotnet-counter"})," services. The ",(0,o.jsx)(n.code,{children:"pid"})," option in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," service is used to share the PID namespace with the ",(0,o.jsx)(n.code,{children:"nethermind"})," service. This is necessary for ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," to be able to see the Nethermind process."]})}),"\n",(0,o.jsx)(n.p,{children:"We can run the above file as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-3-collect-metrics",children:"Step 3: Collect metrics"}),"\n",(0,o.jsxs)(n.p,{children:["Once dotnet-counters is installed and Nethermind is running, we can start collecting the metrics. If you chose to collect metrics in the containers, run the following command in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," container:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind\n"})}),"\n",(0,o.jsx)(n.p,{children:"By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind -f json -o /tmp/counters.json\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For more info about dotnet-counters, see its ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"official docs"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>c});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ca3f5c6e.801016bb.js b/assets/js/ca3f5c6e.7d9535dc.js similarity index 99% rename from assets/js/ca3f5c6e.801016bb.js rename to assets/js/ca3f5c6e.7d9535dc.js index 32b79347d..70044fc4c 100644 --- a/assets/js/ca3f5c6e.801016bb.js +++ b/assets/js/ca3f5c6e.7d9535dc.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[227],{8832:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),r=t(8453);const i={title:"dotnet-counters",sidebar_position:1},s=void 0,c={id:"monitoring/metrics/dotnet-counters",title:"dotnet-counters",description:"This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.",source:"@site/versioned_docs/version-1.25.4/monitoring/metrics/dotnet-counters.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/dotnet-counters",permalink:"/1.25.4/monitoring/metrics/dotnet-counters",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/monitoring/metrics/dotnet-counters.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"dotnet-counters",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Grafana and Prometheus",permalink:"/1.25.4/monitoring/metrics/grafana-and-prometheus"},next:{title:"Health check",permalink:"/1.25.4/monitoring/health-check"}},l={},d=[{value:"Step 1: Install dotnet-counters",id:"step-1-install-dotnet-counters",level:2},{value:"Installing locally",id:"installing-locally",level:3},{value:"Installing in a Docker container",id:"installing-in-a-docker-container",level:3},{value:"Step 2: Run Nethermind",id:"step-2-run-nethermind",level:2},{value:"Running locally",id:"running-locally",level:3},{value:"Running in a Docker container",id:"running-in-a-docker-container",level:3},{value:"Step 3: Collect metrics",id:"step-3-collect-metrics",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["This guide will walk you through setting up performance counters using the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"dotnet-counters"})," performance monitoring tool that observes counters published via the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventcounter",children:"EventCounters API"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"step-1-install-dotnet-counters",children:"Step 1: Install dotnet-counters"}),"\n",(0,o.jsx)(n.p,{children:"dotnet-counters can be either installed locally or in a Docker container."}),"\n",(0,o.jsx)(n.h3,{id:"installing-locally",children:"Installing locally"}),"\n",(0,o.jsx)(n.p,{children:"Use the dotnet tool install command as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet tool install -g dotnet-counters\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Once installed, you can run the tool from the command line by typing ",(0,o.jsx)(n.code,{children:"dotnet-counters"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"installing-in-a-docker-container",children:"Installing in a Docker container"}),"\n",(0,o.jsx)(n.p,{children:"To install dotnet-counters in a Docker container, create a Dockerfile with the following content:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-docker",metastring:'title="Dockerfile"',children:'FROM mcr.microsoft.com/dotnet/sdk:8.0\n\nRUN dotnet tool install -g dotnet-counters && \\\n echo \'export PATH="$PATH:/root/.dotnet/tools"\' >> /root/.bashrc\n\nENTRYPOINT ["/bin/bash"]\n'})}),"\n",(0,o.jsx)(n.p,{children:"Then, build the Docker image:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker build -t dotnet-counters .\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-2-run-nethermind",children:"Step 2: Run Nethermind"}),"\n",(0,o.jsxs)(n.p,{children:["To enable performance counters in Nethermind, use the command line option ",(0,o.jsx)(n.code,{children:"--Metrics.CountersEnabled true"}),". For more options, see the ",(0,o.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["A ",(0,o.jsx)(n.a,{href:"/1.25.4/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,o.jsx)(n.h3,{id:"running-locally",children:"Running locally"}),"\n",(0,o.jsx)(n.p,{children:"To enable performance counters, run Nethermind as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.CountersEnabled true\n"})}),"\n",(0,o.jsx)(n.h3,{id:"running-in-a-docker-container",children:"Running in a Docker container"}),"\n",(0,o.jsxs)(n.p,{children:["The easiest way of collecting metrics in a Docker container is to use Docker Compose. Below, we use the Nethermind official Docker image and the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," image we created earlier:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n\n dotnet-counters:\n image: dotnet-counters\n container_name: dotnet-counters\n stdin_open: true\n tty: true\n pid: service:nethermind\n volumes:\n - metrics:/tmp\n depends_on:\n - nethermind\n \n nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n command: -c mainnet --Metrics.CountersEnabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n - metrics:/tmp\n\nvolumes:\n metrics:\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:["dotnet-counters uses IPC socket communication to monitor the target process. For this, we use the ",(0,o.jsx)(n.code,{children:"metrics"})," volume to share the IPC socket directory with the ",(0,o.jsx)(n.code,{children:"nethermind"})," and ",(0,o.jsx)(n.code,{children:"dotnet-counter"})," services. The ",(0,o.jsx)(n.code,{children:"pid"})," option in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," service is used to share the PID namespace with the ",(0,o.jsx)(n.code,{children:"nethermind"})," service. This is necessary for ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," to be able to see the Nethermind process."]})}),"\n",(0,o.jsx)(n.p,{children:"We can run the above file as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker-compose up\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-3-collect-metrics",children:"Step 3: Collect metrics"}),"\n",(0,o.jsxs)(n.p,{children:["Once dotnet-counters is installed and Nethermind is running, we can start collecting the metrics. If you chose to collect metrics in the containers, run the following command in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," container:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind\n"})}),"\n",(0,o.jsx)(n.p,{children:"By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind -f json -o /tmp/counters.json\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For more info about dotnet-counters, see its ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"official docs"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>c});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[227],{8832:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),r=t(8453);const i={title:"dotnet-counters",sidebar_position:1},s=void 0,c={id:"monitoring/metrics/dotnet-counters",title:"dotnet-counters",description:"This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.",source:"@site/versioned_docs/version-1.25.4/monitoring/metrics/dotnet-counters.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/dotnet-counters",permalink:"/1.25.4/monitoring/metrics/dotnet-counters",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/monitoring/metrics/dotnet-counters.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"dotnet-counters",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Grafana and Prometheus",permalink:"/1.25.4/monitoring/metrics/grafana-and-prometheus"},next:{title:"Health check",permalink:"/1.25.4/monitoring/health-check"}},l={},d=[{value:"Step 1: Install dotnet-counters",id:"step-1-install-dotnet-counters",level:2},{value:"Installing locally",id:"installing-locally",level:3},{value:"Installing in a Docker container",id:"installing-in-a-docker-container",level:3},{value:"Step 2: Run Nethermind",id:"step-2-run-nethermind",level:2},{value:"Running locally",id:"running-locally",level:3},{value:"Running in a Docker container",id:"running-in-a-docker-container",level:3},{value:"Step 3: Collect metrics",id:"step-3-collect-metrics",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["This guide will walk you through setting up performance counters using the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"dotnet-counters"})," performance monitoring tool that observes counters published via the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventcounter",children:"EventCounters API"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"step-1-install-dotnet-counters",children:"Step 1: Install dotnet-counters"}),"\n",(0,o.jsx)(n.p,{children:"dotnet-counters can be either installed locally or in a Docker container."}),"\n",(0,o.jsx)(n.h3,{id:"installing-locally",children:"Installing locally"}),"\n",(0,o.jsx)(n.p,{children:"Use the dotnet tool install command as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet tool install -g dotnet-counters\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Once installed, you can run the tool from the command line by typing ",(0,o.jsx)(n.code,{children:"dotnet-counters"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"installing-in-a-docker-container",children:"Installing in a Docker container"}),"\n",(0,o.jsx)(n.p,{children:"To install dotnet-counters in a Docker container, create a Dockerfile with the following content:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-docker",metastring:'title="Dockerfile"',children:'FROM mcr.microsoft.com/dotnet/sdk:8.0\n\nRUN dotnet tool install -g dotnet-counters && \\\n echo \'export PATH="$PATH:/root/.dotnet/tools"\' >> /root/.bashrc\n\nENTRYPOINT ["/bin/bash"]\n'})}),"\n",(0,o.jsx)(n.p,{children:"Then, build the Docker image:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker build -t dotnet-counters .\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-2-run-nethermind",children:"Step 2: Run Nethermind"}),"\n",(0,o.jsxs)(n.p,{children:["To enable performance counters in Nethermind, use the command line option ",(0,o.jsx)(n.code,{children:"--Metrics.CountersEnabled true"}),". For more options, see the ",(0,o.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["A ",(0,o.jsx)(n.a,{href:"/1.25.4/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,o.jsx)(n.h3,{id:"running-locally",children:"Running locally"}),"\n",(0,o.jsx)(n.p,{children:"To enable performance counters, run Nethermind as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.CountersEnabled true\n"})}),"\n",(0,o.jsx)(n.h3,{id:"running-in-a-docker-container",children:"Running in a Docker container"}),"\n",(0,o.jsxs)(n.p,{children:["The easiest way of collecting metrics in a Docker container is to use Docker Compose. Below, we use the Nethermind official Docker image and the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," image we created earlier:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n\n dotnet-counters:\n image: dotnet-counters\n container_name: dotnet-counters\n stdin_open: true\n tty: true\n pid: service:nethermind\n volumes:\n - metrics:/tmp\n depends_on:\n - nethermind\n \n nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n command: -c mainnet --Metrics.CountersEnabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n - metrics:/tmp\n\nvolumes:\n metrics:\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:["dotnet-counters uses IPC socket communication to monitor the target process. For this, we use the ",(0,o.jsx)(n.code,{children:"metrics"})," volume to share the IPC socket directory with the ",(0,o.jsx)(n.code,{children:"nethermind"})," and ",(0,o.jsx)(n.code,{children:"dotnet-counter"})," services. The ",(0,o.jsx)(n.code,{children:"pid"})," option in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," service is used to share the PID namespace with the ",(0,o.jsx)(n.code,{children:"nethermind"})," service. This is necessary for ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," to be able to see the Nethermind process."]})}),"\n",(0,o.jsx)(n.p,{children:"We can run the above file as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker-compose up\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-3-collect-metrics",children:"Step 3: Collect metrics"}),"\n",(0,o.jsxs)(n.p,{children:["Once dotnet-counters is installed and Nethermind is running, we can start collecting the metrics. If you chose to collect metrics in the containers, run the following command in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," container:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind\n"})}),"\n",(0,o.jsx)(n.p,{children:"By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind -f json -o /tmp/counters.json\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For more info about dotnet-counters, see its ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"official docs"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>c});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ce82dfd7.9dd74e51.js b/assets/js/ce82dfd7.6ef80fdb.js similarity index 99% rename from assets/js/ce82dfd7.9dd74e51.js rename to assets/js/ce82dfd7.6ef80fdb.js index bdd746666..637c7a611 100644 --- a/assets/js/ce82dfd7.9dd74e51.js +++ b/assets/js/ce82dfd7.6ef80fdb.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4436],{231:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const s={title:"Pruning",sidebar_position:6},o=void 0,a={id:"fundamentals/pruning",title:"Pruning",description:"Overview",source:"@site/versioned_docs/version-1.25.4/fundamentals/pruning.md",sourceDirName:"fundamentals",slug:"/fundamentals/pruning",permalink:"/1.25.4/fundamentals/pruning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/pruning.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:6,frontMatter:{title:"Pruning",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Database",permalink:"/1.25.4/fundamentals/database"},next:{title:"Performance tuning",permalink:"/1.25.4/fundamentals/performance-tuning"}},l={},d=[{value:"Overview",id:"overview",level:2},{value:"How it works",id:"how-it-works",level:2},{value:"Preparation for full pruning",id:"preparation-for-full-pruning",level:2},{value:"Configuring full pruning",id:"configuring-full-pruning",level:2},{value:"Manual",id:"manual",level:3},{value:"State database size threshold",id:"state-db-threshold",level:3},{value:"Remaining storage space threshold",id:"storage-left-threshold",level:3},{value:"Monitoring progress",id:"monitoring-progress",level:2},{value:"Additional settings",id:"additional-settings",level:2},{value:"Memory budget",id:"memory-budget",level:3},{value:"Pruning completion behavior",id:"pruning-completion-behavior",level:3},{value:"Number of pruning concurrent tasks",id:"number-of-pruning-concurrent-tasks",level:3},{value:"In-memory cache size",id:"in-memory-cache-size",level:3},{value:"Side notes",id:"side-notes",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsx)(n.p,{children:"Pruning pertains to eliminating or cleaning obsolete historical data to optimize disk space. Clients are responsible for maintaining the world state, which comprises a database that portrays the current Ethereum network status. The world state encompasses accounts, contracts, and other information."}),"\n",(0,r.jsxs)(n.p,{children:["Pruning aims to reduce disk requirements by storing only the current world state and removing historical data. This differs from archive nodes that retain complete transaction and state history. Pruning is helpful for users who don't require historical data and prefer to interact solely with the current state of the network. However, pruning may limit the client's ability to fulfill requests that depend on historical information. Nethermind provides two kinds of pruning \u2013 ",(0,r.jsx)(n.em,{children:"full pruning"})," and ",(0,r.jsx)(n.em,{children:"in-memory pruning"}),"; both are enabled by default, also called ",(0,r.jsx)(n.em,{children:"hybrid pruning"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,r.jsx)(n.p,{children:"During synchronization using the snap sync method, Nethermind produces a local copy of the Ethereum network state, which typically amounts to approximately 160 GB (state database). The entire database may rise to 600\u2013650GB. Although this size increases by around 30 GB each week, specific historical data is retained that is not necessary for node operation or to maintain the current Ethereum state."}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is activated and initiated, a thorough examination of the entire state tree is conducted to determine which data is no longer required and can be treated as historical. It then determines which information corresponds to the current state and duplicates it alongside the existing version. During verification of each node in the state, the new pruned state replaces the previous one. Once the verifier confirms everything is functioning correctly, the old state database is eliminated, resulting in significant savings in disk space. As a result, the size of the database will be close to its initial size again."}),"\n",(0,r.jsx)(n.p,{children:"In-memory pruning is a continuous process that occurs under regular operation. Instead of saving a new state on each block, Nethermind will keep it in memory until a certain threshold is reached. At that point, Nethermind will only store data required by the newer state and discard unnecessary ones. This significantly reduces the total amount of data written while improving block processing performance. In-memory pruning is independent of full pruning."}),"\n",(0,r.jsx)(n.h2,{id:"preparation-for-full-pruning",children:"Preparation for full pruning"}),"\n",(0,r.jsx)(n.p,{children:"Because full pruning is executed while the node is connected to the network, it can affect the node's performance.\nThe process can consume significant memory, CPU, and disk resources, impacting block processing time.\nThis, in turn, can lead to reduced rewards for validator setups, particularly for proof-of-stake chains."}),"\n",(0,r.jsx)(n.p,{children:"Currently, full pruning takes between 20 to 30 hours to complete, although the duration may vary based on the hardware configuration. At least 200 GB of storage is required to ensure pruning runs smoothly. Nevertheless, it's recommended to have 300 GB or more."}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["Do not turn on full pruning on an archive node, as these are two opposing features. Archive nodes are designed to store\ncomplete historical data, whereas full pruning eliminates it. Use the option ",(0,r.jsx)(n.code,{children:"--Pruning.Mode None"})," to ensure that pruning is turned off completely."]})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-full-pruning",children:"Configuring full pruning"}),"\n",(0,r.jsxs)(n.p,{children:["As a very first point, check out the ",(0,r.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration#pruning",children:"pruning configuration options"}),".",(0,r.jsx)(n.br,{}),"\n","To activate full pruning, use either the ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," or ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Full"})," command line options."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Setting ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," enables both ",(0,r.jsx)(n.code,{children:"InMemory"})," and ",(0,r.jsx)(n.code,{children:"Full"})," modes. The ",(0,r.jsx)(n.code,{children:"InMemory"})," mode helps the node storage grow slower than the ",(0,r.jsx)(n.code,{children:"Full"})," mode. Because of this, full pruning is executed less frequently, promoting\nhealthier disk operation. Since full pruning is hardware-intensive, this configuration also benefits attestation results."]})}),"\n",(0,r.jsx)(n.p,{children:"The next step is to determine the trigger conditions for full pruning. Currently, there are 3 options available:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#manual",children:"Manual"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#state-db-threshold",children:"State database size threshold"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#storage-left-threshold",children:"Remaining storage space threshold"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"manual",children:"Manual"}),"\n",(0,r.jsxs)(n.p,{children:["Manual mode triggers full pruning only upon request, providing complete control. To configure this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger Manual"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Pruning can also be triggered using the ",(0,r.jsx)(n.a,{href:"/1.25.4/interacting/json-rpc-ns/admin#admin_prune",children:(0,r.jsx)(n.code,{children:"admin_prune"})})," JSON-RPC method. Here's how to configure it:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Add the ",(0,r.jsx)(n.code,{children:"admin"})," namespace to ",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"}),". For instance,",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules [eth,net,...,admin]"})]}),"\n",(0,r.jsxs)(n.li,{children:["Create a separate port for ",(0,r.jsx)(n.code,{children:"admin"})," namespace only:",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls http://localhost:8555|http|admin"})]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Restart the client, and if everything is configured correctly, you should be able to call the ",(0,r.jsx)(n.code,{children:"admin_prune"})," method, and full pruning should start."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"One potential disadvantage of the manual mode is that if full pruning is not triggered on time, it cannot be performed later because of insufficient disk space. In such cases, the only option to free up the disk space is to resync the node from scratch."})}),"\n",(0,r.jsx)(n.h3,{id:"state-db-threshold",children:"State database size threshold"}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning automatically when the state database reaches the specified size.\nTo enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger StateDbSize --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning automatically whenever the state database size exceeds 256,000\nMB (250 GB). Assuming the state database has initially around 160 GB, pruning will be triggered when the database size grows by more than 90 GB."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"To avoid unexpected behavior and ensure that full pruning can be completed in full, it's recommended to set the threshold value to trigger pruning before the free disk space drops below 250 GB as a minimum. This ensures that sufficient free disk space is available for the pruning process."})}),"\n",(0,r.jsx)(n.h3,{id:"storage-left-threshold",children:"Remaining storage space threshold"}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsx)(n.p,{children:"This is the recommended approach as it ensures that pruning is executed on time."})}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning when the storage space reaches the specified minimum. To enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger VolumeFreeSpace --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements. However, it should not be set below the default value of ",(0,r.jsx)(n.code,{children:"256000"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning whenever free disk space drops to 256,000 MB (250 GB) or below. This ensures that pruning is invoked as infrequently as possible while also ensuring that sufficient free storage is always available to trigger it."}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsx)(n.p,{children:"It's recommended not to set the value below 250 GB for stability reasons. In reality, full pruning should require approximately the same amount of storage as a fresh state database (around 160 GB). Still, it also needs a threshold for processing and other operations since it creates a copy of the existing state database. Therefore, it's essential to maintain a minimum amount of storage to ensure a robust pruning performance."})}),"\n",(0,r.jsx)(n.h2,{id:"monitoring-progress",children:"Monitoring progress"}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is triggered correctly, the corresponding messages appear in the Nethermind logs."}),"\n",(0,r.jsx)(n.p,{children:"The very first ones should be:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Ready to start: pruning garbage before state with root .\nWARN: Full Pruning Started on root hash : do not close the node until finished or progress will be lost.\n"})}),"\n",(0,r.jsx)(n.p,{children:"From that moment, ensure that no restarts will be performed on Nethermind to ensure that full pruning runs correctly.\nAfter a few minutes first logs with progress would start to appear. For instance:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning In Progress: 00:00:57.0603307 1.00 mln nodes mirrored.\nFull Pruning In Progress: 00:01:40.3677103 2.00 mln nodes mirrored.\nFull Pruning In Progress: 00:02:25.6437030 3.00 mln nodes mirrored.\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Pruning may take even ",(0,r.jsx)(n.em,{children:"more than 30 hours"}),", depending on hardware configuration."]}),"\n",(0,r.jsx)(n.p,{children:"When pruning is completed, there is a log message similar the following:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Finished: 15:25:59.1620756 1,560.29 mln nodes mirrored.\n"})}),"\n",(0,r.jsx)(n.p,{children:"As you may notice, it took around 15 hours in this example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Since the amount of mirrored nodes is not a static value, providing a simple progress indicator in percentage is impossible. Therefore, the approximate value given should be used to determine when full pruning is expected to be completed."})}),"\n",(0,r.jsx)(n.h2,{id:"additional-settings",children:"Additional settings"}),"\n",(0,r.jsx)(n.h3,{id:"memory-budget",children:"Memory budget"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," configuration option controls the memory budget allocated for the trie visit during\nthe full pruning process. During pruning, pending nodes are queued to a pool of nodes whose size is determined by this value. This allows multiple nodes to share a single I/O. By increasing this value, the required read IOP per second can be significantly reduced, resulting in a faster full pruning operation. However, this improvement comes at the expense of increased memory usage."]}),"\n",(0,r.jsxs)(n.p,{children:["Assuming your system has 64GB of RAM, with Nethermind, the consensus client, and system expenses consuming 20GB,\nyou need to determine the maximum value for ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," while ensuring the system remains stable and respects the given limit. In this case, you have 44 GB (64 GB - 20 GB) of available memory for increasing the ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," value. To calculate the maximum value in MB, multiply the available memory by 1024: ",(0,r.jsx)(n.code,{children:"44 GB * 1024 = 45,056 MB"})]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Because of the workload on Ethereum Mainnet, setting the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," higher than 16 GB may not provide any additional performance benefits."]})}),"\n",(0,r.jsx)(n.p,{children:"Please note that this example assumes the remaining 44 GB of memory is sufficient for the full pruning memory budget.\nDepending on the specific use case and system requirements, it may be necessary to adjust the value further to optimize performance and resource usage."}),"\n",(0,r.jsx)(n.h3,{id:"pruning-completion-behavior",children:"Pruning completion behavior"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})," configuration option determines Nethermind's behavior after full pruning is completed. By default, Nethermind will continue to progress as usual. However, if a user wishes to shut down the node after pruning, there are three options available:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"None"}),": No action taken"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Nethermind shuts down if pruning succeeds"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"AlwaysShutdown"}),": Nethermind shuts down once pruning completes, regardless of whether it succeeds or fails"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"number-of-pruning-concurrent-tasks",children:"Number of pruning concurrent tasks"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})," configuration option determines the number of parallel tasks/threads that can be used by pruning:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"-1"}),": uses the number of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"0"}),": uses 25% of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"1"}),": runs on a single thread"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The recommended value depends on the type of node being used. If the node needs to be responsive (e.g., RPC or validator), using a value below the number of logical processors is recommended. The default value is recommended if the node doesn't have many other responsibilities but needs to follow the chain without delays and produce live logs reliably. If the node doesn't need to be responsive, has very fast I/O (such as NVMe), and the shortest pruning time\nis desired, this can be set to 2\u20133 times the number of logical processors."}),"\n",(0,r.jsx)(n.h3,{id:"in-memory-cache-size",children:"In-memory cache size"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.CacheMb"})," configuration option determines the size, in MB, of the memory pool of nodes used for in-memory pruning. The default value is 1024. Increasing this value can help reduce the rate at which the state database grows."]}),"\n",(0,r.jsx)(n.h2,{id:"side-notes",children:"Side notes"}),"\n",(0,r.jsx)(n.p,{children:"For pruning, keep in mind the following:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Full pruning is a cumbersome task, but it's performed in the background, so the node continues progressing and following the chain."}),"\n",(0,r.jsx)(n.li,{children:"The process' heaviness may affect the effectiveness of the validator rewards. Still, since it's executed only once every few months, it shouldn't have a significant impact on overall results (we've xperienced approximately 5\u201310% loss of rewards during full pruning)."}),"\n",(0,r.jsx)(n.li,{children:"Ensure that your storage has at least 250 GB of free space after syncing the node. Otherwise, full pruning will never complete successfully."}),"\n",(0,r.jsxs)(n.li,{children:["Several things can be done to reduce the size of the database after syncing: setting ",(0,r.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})," and ",(0,r.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})," to a proper value higher than 0, using a consensus client that requires less storage, and setting logs to the lowest level to avoid log spamming."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>a});var r=i(6540);const t={},s=r.createContext(t);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4436],{231:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const s={title:"Pruning",sidebar_position:6},o=void 0,a={id:"fundamentals/pruning",title:"Pruning",description:"Overview",source:"@site/versioned_docs/version-1.25.4/fundamentals/pruning.md",sourceDirName:"fundamentals",slug:"/fundamentals/pruning",permalink:"/1.25.4/fundamentals/pruning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/pruning.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:6,frontMatter:{title:"Pruning",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Database",permalink:"/1.25.4/fundamentals/database"},next:{title:"Performance tuning",permalink:"/1.25.4/fundamentals/performance-tuning"}},l={},d=[{value:"Overview",id:"overview",level:2},{value:"How it works",id:"how-it-works",level:2},{value:"Preparation for full pruning",id:"preparation-for-full-pruning",level:2},{value:"Configuring full pruning",id:"configuring-full-pruning",level:2},{value:"Manual",id:"manual",level:3},{value:"State database size threshold",id:"state-db-threshold",level:3},{value:"Remaining storage space threshold",id:"storage-left-threshold",level:3},{value:"Monitoring progress",id:"monitoring-progress",level:2},{value:"Additional settings",id:"additional-settings",level:2},{value:"Memory budget",id:"memory-budget",level:3},{value:"Pruning completion behavior",id:"pruning-completion-behavior",level:3},{value:"Number of pruning concurrent tasks",id:"number-of-pruning-concurrent-tasks",level:3},{value:"In-memory cache size",id:"in-memory-cache-size",level:3},{value:"Side notes",id:"side-notes",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsx)(n.p,{children:"Pruning pertains to eliminating or cleaning obsolete historical data to optimize disk space. Clients are responsible for maintaining the world state, which comprises a database that portrays the current Ethereum network status. The world state encompasses accounts, contracts, and other information."}),"\n",(0,r.jsxs)(n.p,{children:["Pruning aims to reduce disk requirements by storing only the current world state and removing historical data. This differs from archive nodes that retain complete transaction and state history. Pruning is helpful for users who don't require historical data and prefer to interact solely with the current state of the network. However, pruning may limit the client's ability to fulfill requests that depend on historical information. Nethermind provides two kinds of pruning \u2013 ",(0,r.jsx)(n.em,{children:"full pruning"})," and ",(0,r.jsx)(n.em,{children:"in-memory pruning"}),"; both are enabled by default, also called ",(0,r.jsx)(n.em,{children:"hybrid pruning"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,r.jsx)(n.p,{children:"During synchronization using the snap sync method, Nethermind produces a local copy of the Ethereum network state, which typically amounts to approximately 160 GB (state database). The entire database may rise to 600\u2013650GB. Although this size increases by around 30 GB each week, specific historical data is retained that is not necessary for node operation or to maintain the current Ethereum state."}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is activated and initiated, a thorough examination of the entire state tree is conducted to determine which data is no longer required and can be treated as historical. It then determines which information corresponds to the current state and duplicates it alongside the existing version. During verification of each node in the state, the new pruned state replaces the previous one. Once the verifier confirms everything is functioning correctly, the old state database is eliminated, resulting in significant savings in disk space. As a result, the size of the database will be close to its initial size again."}),"\n",(0,r.jsx)(n.p,{children:"In-memory pruning is a continuous process that occurs under regular operation. Instead of saving a new state on each block, Nethermind will keep it in memory until a certain threshold is reached. At that point, Nethermind will only store data required by the newer state and discard unnecessary ones. This significantly reduces the total amount of data written while improving block processing performance. In-memory pruning is independent of full pruning."}),"\n",(0,r.jsx)(n.h2,{id:"preparation-for-full-pruning",children:"Preparation for full pruning"}),"\n",(0,r.jsx)(n.p,{children:"Because full pruning is executed while the node is connected to the network, it can affect the node's performance.\nThe process can consume significant memory, CPU, and disk resources, impacting block processing time.\nThis, in turn, can lead to reduced rewards for validator setups, particularly for proof-of-stake chains."}),"\n",(0,r.jsx)(n.p,{children:"Currently, full pruning takes between 20 to 30 hours to complete, although the duration may vary based on the hardware configuration. At least 200 GB of storage is required to ensure pruning runs smoothly. Nevertheless, it's recommended to have 300 GB or more."}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["Do not turn on full pruning on an archive node, as these are two opposing features. Archive nodes are designed to store\ncomplete historical data, whereas full pruning eliminates it. Use the option ",(0,r.jsx)(n.code,{children:"--Pruning.Mode None"})," to ensure that pruning is turned off completely."]})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-full-pruning",children:"Configuring full pruning"}),"\n",(0,r.jsxs)(n.p,{children:["As a very first point, check out the ",(0,r.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration#pruning",children:"pruning configuration options"}),".",(0,r.jsx)(n.br,{}),"\n","To activate full pruning, use either the ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," or ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Full"})," command line options."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Setting ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," enables both ",(0,r.jsx)(n.code,{children:"InMemory"})," and ",(0,r.jsx)(n.code,{children:"Full"})," modes. The ",(0,r.jsx)(n.code,{children:"InMemory"})," mode helps the node storage grow slower than the ",(0,r.jsx)(n.code,{children:"Full"})," mode. Because of this, full pruning is executed less frequently, promoting\nhealthier disk operation. Since full pruning is hardware-intensive, this configuration also benefits attestation results."]})}),"\n",(0,r.jsx)(n.p,{children:"The next step is to determine the trigger conditions for full pruning. Currently, there are 3 options available:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#manual",children:"Manual"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#state-db-threshold",children:"State database size threshold"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#storage-left-threshold",children:"Remaining storage space threshold"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"manual",children:"Manual"}),"\n",(0,r.jsxs)(n.p,{children:["Manual mode triggers full pruning only upon request, providing complete control. To configure this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger Manual"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Pruning can also be triggered using the ",(0,r.jsx)(n.a,{href:"/1.25.4/interacting/json-rpc-ns/admin#admin_prune",children:(0,r.jsx)(n.code,{children:"admin_prune"})})," JSON-RPC method. Here's how to configure it:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Add the ",(0,r.jsx)(n.code,{children:"admin"})," namespace to ",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"}),". For instance,",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules [eth,net,...,admin]"})]}),"\n",(0,r.jsxs)(n.li,{children:["Create a separate port for ",(0,r.jsx)(n.code,{children:"admin"})," namespace only:",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls http://localhost:8555|http|admin"})]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Restart the client, and if everything is configured correctly, you should be able to call the ",(0,r.jsx)(n.code,{children:"admin_prune"})," method, and full pruning should start."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"One potential disadvantage of the manual mode is that if full pruning is not triggered on time, it cannot be performed later because of insufficient disk space. In such cases, the only option to free up the disk space is to resync the node from scratch."})}),"\n",(0,r.jsx)(n.h3,{id:"state-db-threshold",children:"State database size threshold"}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning automatically when the state database reaches the specified size.\nTo enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger StateDbSize --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning automatically whenever the state database size exceeds 256,000\nMB (250 GB). Assuming the state database has initially around 160 GB, pruning will be triggered when the database size grows by more than 90 GB."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"To avoid unexpected behavior and ensure that full pruning can be completed in full, it's recommended to set the threshold value to trigger pruning before the free disk space drops below 250 GB as a minimum. This ensures that sufficient free disk space is available for the pruning process."})}),"\n",(0,r.jsx)(n.h3,{id:"storage-left-threshold",children:"Remaining storage space threshold"}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsx)(n.p,{children:"This is the recommended approach as it ensures that pruning is executed on time."})}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning when the storage space reaches the specified minimum. To enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger VolumeFreeSpace --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements. However, it should not be set below the default value of ",(0,r.jsx)(n.code,{children:"256000"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning whenever free disk space drops to 256,000 MB (250 GB) or below. This ensures that pruning is invoked as infrequently as possible while also ensuring that sufficient free storage is always available to trigger it."}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsx)(n.p,{children:"It's recommended not to set the value below 250 GB for stability reasons. In reality, full pruning should require approximately the same amount of storage as a fresh state database (around 160 GB). Still, it also needs a threshold for processing and other operations since it creates a copy of the existing state database. Therefore, it's essential to maintain a minimum amount of storage to ensure a robust pruning performance."})}),"\n",(0,r.jsx)(n.h2,{id:"monitoring-progress",children:"Monitoring progress"}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is triggered correctly, the corresponding messages appear in the Nethermind logs."}),"\n",(0,r.jsx)(n.p,{children:"The very first ones should be:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Ready to start: pruning garbage before state with root .\nWARN: Full Pruning Started on root hash : do not close the node until finished or progress will be lost.\n"})}),"\n",(0,r.jsx)(n.p,{children:"From that moment, ensure that no restarts will be performed on Nethermind to ensure that full pruning runs correctly.\nAfter a few minutes first logs with progress would start to appear. For instance:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning In Progress: 00:00:57.0603307 1.00 mln nodes mirrored.\nFull Pruning In Progress: 00:01:40.3677103 2.00 mln nodes mirrored.\nFull Pruning In Progress: 00:02:25.6437030 3.00 mln nodes mirrored.\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Pruning may take even ",(0,r.jsx)(n.em,{children:"more than 30 hours"}),", depending on hardware configuration."]}),"\n",(0,r.jsx)(n.p,{children:"When pruning is completed, there is a log message similar the following:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Finished: 15:25:59.1620756 1,560.29 mln nodes mirrored.\n"})}),"\n",(0,r.jsx)(n.p,{children:"As you may notice, it took around 15 hours in this example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Since the amount of mirrored nodes is not a static value, providing a simple progress indicator in percentage is impossible. Therefore, the approximate value given should be used to determine when full pruning is expected to be completed."})}),"\n",(0,r.jsx)(n.h2,{id:"additional-settings",children:"Additional settings"}),"\n",(0,r.jsx)(n.h3,{id:"memory-budget",children:"Memory budget"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," configuration option controls the memory budget allocated for the trie visit during\nthe full pruning process. During pruning, pending nodes are queued to a pool of nodes whose size is determined by this value. This allows multiple nodes to share a single I/O. By increasing this value, the required read IOP per second can be significantly reduced, resulting in a faster full pruning operation. However, this improvement comes at the expense of increased memory usage."]}),"\n",(0,r.jsxs)(n.p,{children:["Assuming your system has 64GB of RAM, with Nethermind, the consensus client, and system expenses consuming 20GB,\nyou need to determine the maximum value for ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," while ensuring the system remains stable and respects the given limit. In this case, you have 44 GB (64 GB - 20 GB) of available memory for increasing the ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," value. To calculate the maximum value in MB, multiply the available memory by 1024: ",(0,r.jsx)(n.code,{children:"44 GB * 1024 = 45,056 MB"})]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Because of the workload on Ethereum Mainnet, setting the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," higher than 16 GB may not provide any additional performance benefits."]})}),"\n",(0,r.jsx)(n.p,{children:"Please note that this example assumes the remaining 44 GB of memory is sufficient for the full pruning memory budget.\nDepending on the specific use case and system requirements, it may be necessary to adjust the value further to optimize performance and resource usage."}),"\n",(0,r.jsx)(n.h3,{id:"pruning-completion-behavior",children:"Pruning completion behavior"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})," configuration option determines Nethermind's behavior after full pruning is completed. By default, Nethermind will continue to progress as usual. However, if a user wishes to shut down the node after pruning, there are three options available:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"None"}),": No action taken"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Nethermind shuts down if pruning succeeds"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"AlwaysShutdown"}),": Nethermind shuts down once pruning completes, regardless of whether it succeeds or fails"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"number-of-pruning-concurrent-tasks",children:"Number of pruning concurrent tasks"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})," configuration option determines the number of parallel tasks/threads that can be used by pruning:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"-1"}),": uses the number of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"0"}),": uses 25% of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"1"}),": runs on a single thread"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The recommended value depends on the type of node being used. If the node needs to be responsive (e.g., RPC or validator), using a value below the number of logical processors is recommended. The default value is recommended if the node doesn't have many other responsibilities but needs to follow the chain without delays and produce live logs reliably. If the node doesn't need to be responsive, has very fast I/O (such as NVMe), and the shortest pruning time\nis desired, this can be set to 2\u20133 times the number of logical processors."}),"\n",(0,r.jsx)(n.h3,{id:"in-memory-cache-size",children:"In-memory cache size"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.CacheMb"})," configuration option determines the size, in MB, of the memory pool of nodes used for in-memory pruning. The default value is 1024. Increasing this value can help reduce the rate at which the state database grows."]}),"\n",(0,r.jsx)(n.h2,{id:"side-notes",children:"Side notes"}),"\n",(0,r.jsx)(n.p,{children:"For pruning, keep in mind the following:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Full pruning is a cumbersome task, but it's performed in the background, so the node continues progressing and following the chain."}),"\n",(0,r.jsx)(n.li,{children:"The process' heaviness may affect the effectiveness of the validator rewards. Still, since it's executed only once every few months, it shouldn't have a significant impact on overall results (we've xperienced approximately 5\u201310% loss of rewards during full pruning)."}),"\n",(0,r.jsx)(n.li,{children:"Ensure that your storage has at least 250 GB of free space after syncing the node. Otherwise, full pruning will never complete successfully."}),"\n",(0,r.jsxs)(n.li,{children:["Several things can be done to reduce the size of the database after syncing: setting ",(0,r.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})," and ",(0,r.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})," to a proper value higher than 0, using a consensus client that requires less storage, and setting logs to the lowest level to avoid log spamming."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>a});var r=i(6540);const t={},s=r.createContext(t);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ceb8fbe8.9ec366ef.js b/assets/js/ceb8fbe8.1d4d1c16.js similarity index 99% rename from assets/js/ceb8fbe8.9ec366ef.js rename to assets/js/ceb8fbe8.1d4d1c16.js index 997ab7596..b04f149ad 100644 --- a/assets/js/ceb8fbe8.9ec366ef.js +++ b/assets/js/ceb8fbe8.1d4d1c16.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9290],{3841:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>d,toc:()=>h});var r=t(4848),s=t(8453),i=t(1470),a=t(9365);const o={title:"Installing Nethermind",sidebar_position:2},l=void 0,d={id:"get-started/installing-nethermind",title:"Installing Nethermind",description:"Nethermind can be installed in several ways:",source:"@site/versioned_docs/version-1.28.0/get-started/installing-nethermind.md",sourceDirName:"get-started",slug:"/get-started/installing-nethermind",permalink:"/1.28.0/get-started/installing-nethermind",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/get-started/installing-nethermind.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Installing Nethermind",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"System requirements",permalink:"/1.28.0/get-started/system-requirements"},next:{title:"Consensus clients",permalink:"/1.28.0/get-started/consensus-clients"}},c={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Package managers",id:"package-managers",level:2},{value:"Standalone downloads",id:"standalone-downloads",level:2},{value:"Configuring as a Linux service",id:"configuring-as-a-linux-service",level:3},{value:"Docker container",id:"docker-container",level:2},{value:"Running Nethermind",id:"running",level:2},{value:"Supported networks",id:"supported-networks",level:3}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"Nethermind can be installed in several ways:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#package-managers",children:"Via a package manager"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"As a standalone download"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#docker-container",children:"As a Docker container"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.28.0/developers/building-from-source",children:"By building from source code"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Does not apply to Docker distributions."})}),"\n",(0,r.jsx)(n.p,{children:"Before installing Nethermind, your specific platform might need the following prerequisites."}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsx)(a.A,{value:"linux",label:"Linux",children:"None"}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsxs)(n.p,{children:["Although the modern versions of Windows are bundled with a recent version of ",(0,r.jsx)(n.a,{href:"https://aka.ms/vcredist",children:"Microsoft Visual C++ Redistributable"}),", in some cases, it may need an update:"]}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install Microsoft.VCRedist.2015+.x64\n"})})]}),(0,r.jsx)(a.A,{value:"macos",label:"macOS",children:"None"})]}),"\n",(0,r.jsx)(n.h2,{id:"package-managers",children:"Package managers"}),"\n",(0,r.jsx)(n.p,{children:"Package managers are the easiest and fastest way of installing Nethermind."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsxs)(n.p,{children:["If you're using a package manager, it's highly recommended to set the ",(0,r.jsx)(n.code,{children:"-dd, --datadir"})," flag to specify the data directory. Otherwise, Nethermind will use the default data directory where the package is installed, which may not be preserved on further updates or uninstall."]})}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,r.jsx)(n.p,{children:"On Ubuntu and other Linux distros supporting PPA, Nethermind can be installed via Launchpad PPA."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo add-apt-repository ppa:nethermindeth/nethermind\n"})}),(0,r.jsxs)(n.admonition,{type:"note",children:[(0,r.jsx)(n.p,{children:"If the command is not found, run:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install software-properties-common\n"})})]}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get update\nsudo apt-get install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsx)(n.p,{children:"On Windows, Nethermind can be installed via Windows Package Manager as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(n.p,{children:"On macOS, Nethermind can be installed via Homebrew."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew tap nethermindeth/nethermind\n"})}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew install nethermind\n"})})]})]}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"standalone-downloads",children:"Standalone downloads"}),"\n",(0,r.jsx)(n.p,{children:"Standalone downloads give users more flexibility by allowing them to install a specific version of Nethermind, choose the installation location, and prevent automatic updates."}),"\n",(0,r.jsxs)(n.p,{children:["Standalone downloads are available on ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub Releases"})," and at ",(0,r.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads.nethermind.io"})," as ZIP archives for x64 and AArch64 (ARM64) CPU architectures for Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h3,{id:"configuring-as-a-linux-service",children:"Configuring as a Linux service"}),"\n",(0,r.jsxs)(n.p,{children:["To install Nethermind as a Linux service, see the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/scripts/nethermind.service",children:"nethermind.service"})," unit file as an example.\nAs it's configured to run Nethermind as the specific user and group and looks for the executable in a predefined location, the following steps need to be fulfilled:"]}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsxs)(n.p,{children:["Any of these steps can be omitted by replacing them with corresponding changes in the unit file.\nFor instance, if you want to run Nethermind as a different user, change the ",(0,r.jsx)(n.code,{children:"User"})," and ",(0,r.jsx)(n.code,{children:"Group"})," options in the unit file."]})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Create a new user and group:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:" # Create a new user and group\n sudo useradd -m -s /bin/bash nethermind\n\n # Increase the maximum number of open files\n sudo bash -c 'echo \"nethermind soft nofile 100000\" > /etc/security/limits.d/nethermind.conf'\n sudo bash -c 'echo \"nethermind hard nofile 100000\" >> /etc/security/limits.d/nethermind.conf'\n\n # Switch to the nethermind user\n sudo su -l nethermind\n\n # Create required directories\n # Note that the home directory (~) is now /home/nethermind\n mkdir ~/build\n mkdir ~/data\n"})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"Download Nethermind"})," and extract the package contents to the ",(0,r.jsx)(n.code,{children:"~/build"})," directory."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Configure options in the ",(0,r.jsx)(n.code,{children:"~/.env"})," file:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",metastring:'title="~/.env"',children:'# Required\nNETHERMIND_CONFIG="mainnet"\n\n# Optional\nNETHERMIND_HEALTHCHECKSCONFIG_ENABLED="true"\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Now, let's set up the Linux service:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# Download the unit file\ncurl -L https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/nethermind.service -o nethermind.service\n\n# Move the unit file to the systemd directory\nsudo mv nethermind.service /etc/systemd/system\n\n# Reload the systemd daemon\nsudo systemctl daemon-reload\n\n# Start the service\nsudo systemctl start nethermind\n\n# Optionally, enable the service to start on boot\nsudo systemctl enable nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To ensure the service is up and running, check its status as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo systemctl status nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To monitor the Nethermind output, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"journalctl -u nethermind -f\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"docker-container",children:"Docker container"}),"\n",(0,r.jsxs)(n.p,{children:["The Docker images of Nethermind are available on ",(0,r.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind",children:"Docker Hub"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"This registry provides production versions of Nethermind with 3 types of tags:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:latest"})," is the latest version of Nethermind (the default tag)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:"})," is the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is the actual version of Nethermind."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:-chiseled"})," is a ",(0,r.jsx)(n.em,{children:"rootless"})," and ",(0,r.jsx)(n.a,{href:"https://ubuntu.com/engage/chiselled-ubuntu-images-for-containers",children:"chiseled"})," image with the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is either ",(0,r.jsx)(n.code,{children:"latest"})," or the actual version of Nethermind.",(0,r.jsx)(n.br,{}),"\n","For security reasons, this image contains only the absolutely necessary components and is intended to run as a non-root ",(0,r.jsx)(n.code,{children:"app"})," user with UID/GID of ",(0,r.jsx)(n.code,{children:"64198"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To download the image from the registry, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker pull nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Starting a node is achieved by:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"The following ports are exposed by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8545"}),": TCP, for the JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8551"}),": TCP, for the consensus client JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"30303"}),": TCP and UDP, for P2P networking"]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"It's highly recommended to mount data volumes as the Nethermind's data directories to ensure the synced data is preserved between the container restarts."})}),"\n",(0,r.jsx)(n.p,{children:"The following volume mount points are available by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/nethermind_db"}),": used to store the database"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/logs"}),": used to store the logs"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/keystore"}),": used to store the keys"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To mount separate volumes for each directory listed above, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/db,target=/nethermind/nethermind_db \\\n --mount type=bind,source=path/to/logs,target=/nethermind/logs \\\n --mount type=bind,source=path/to/keystore,target=/nethermind/keystore \\\n nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Alternatively, a single volume can be specified as the Nethermind data directory as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/data_dir,target=/nethermind/data_dir \\\n nethermind/nethermind -dd /nethermind/data_dir\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Note that any Nethermind-specific configuration option can be specified at the end. For instance, the ",(0,r.jsx)(n.code,{children:"-dd"})," option in this case. For further instructions, see ",(0,r.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["To build the Docker image yourself, see ",(0,r.jsx)(n.a,{href:"/1.28.0/developers/building-from-source#bulding-docker-image",children:"Building Docker image"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"running",children:"Running Nethermind"}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["A ",(0,r.jsx)(n.a,{href:"/1.28.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]}),"\n",(0,r.jsxs)(n.li,{children:["Please check out the ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/security",children:"security considerations"})," before using Nethermind for critical operations."]}),"\n"]})}),"\n",(0,r.jsx)(n.p,{children:"Nethermind is mainly controlled by command line options (aka arguments or flags)."}),"\n",(0,r.jsx)(n.p,{children:"The full list of options can be displayed by running:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,r.jsx)(n.p,{children:"For instance, to launch the client with the default configuration for the Mainnet and custom data directory, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet -dd path/to/data/dir\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For detailed info about the available configuration options, see ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration",children:"Configuration"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"supported-networks",children:"Supported networks"}),"\n",(0,r.jsxs)(n.p,{children:["To run Nethermind on a specific network, use the ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#basic-options",children:(0,r.jsx)(n.code,{children:"-c, --config"})})," command line option. Currently, the following networks are supported out of the box:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Ethereum"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#ethereum-mainnet",children:"Mainnet"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://github.com/eth-clients/holesky",children:"Holesky"})," (testnet)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#sepolia",children:"Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Base"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-mainnet",children:"Base Mainnet"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-testnet-sepolia",children:"Base Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Energy Web Chain"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain",children:"Energy Web"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/testnet-and-mainnet#developing-on-volta-test-network",children:"Volta"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Gnosis Chain"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://docs.gnosischain.com/about/networks/mainnet",children:"Gnosis"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://docs.gnosischain.com/about/networks/chiado",children:"Chiado"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Optimism"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://docs.optimism.io/chain/networks#op-mainnet",children:"OP Mainnet"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://docs.optimism.io/chain/networks#op-sepolia",children:"OP Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>a});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var i=t(4848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,a),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var r=t(6540),s=t(4164),i=t(3104),a=t(6347),o=t(205),l=t(7485),d=t(1682),c=t(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const s=(0,a.W6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(s.location.search);n.set(i,e),s.replace({...s.location,search:n.toString()})}),[i,s])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,i=u(e),[a,l]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[d,h]=p({queryString:t,groupId:s}),[x,g]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,i]=(0,c.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:s}),f=(()=>{const e=d??x;return m({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&l(f)}),[f]);return{selectedValue:a,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);l(e),h(e),g(e)}),[h,g,i]),tabValues:i}}var g=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function b(e){let{className:n,block:t,selectedValue:r,selectValue:a,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,i.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),s=o[t].value;s!==r&&(d(n),a(s))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>l.push(e),onKeyDown:h,onClick:c,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:i}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=x(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(b,{...n,...e}),(0,j.jsx)(v,{...n,...e})]})}function w(e){const n=(0,g.A)();return(0,j.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var r=t(6540);const s={},i=r.createContext(s);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9290],{3841:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>d,toc:()=>h});var r=t(4848),s=t(8453),i=t(1470),a=t(9365);const o={title:"Installing Nethermind",sidebar_position:2},l=void 0,d={id:"get-started/installing-nethermind",title:"Installing Nethermind",description:"Nethermind can be installed in several ways:",source:"@site/versioned_docs/version-1.28.0/get-started/installing-nethermind.md",sourceDirName:"get-started",slug:"/get-started/installing-nethermind",permalink:"/1.28.0/get-started/installing-nethermind",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/get-started/installing-nethermind.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Installing Nethermind",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"System requirements",permalink:"/1.28.0/get-started/system-requirements"},next:{title:"Consensus clients",permalink:"/1.28.0/get-started/consensus-clients"}},c={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Package managers",id:"package-managers",level:2},{value:"Standalone downloads",id:"standalone-downloads",level:2},{value:"Configuring as a Linux service",id:"configuring-as-a-linux-service",level:3},{value:"Docker container",id:"docker-container",level:2},{value:"Running Nethermind",id:"running",level:2},{value:"Supported networks",id:"supported-networks",level:3}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"Nethermind can be installed in several ways:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#package-managers",children:"Via a package manager"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"As a standalone download"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#docker-container",children:"As a Docker container"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.28.0/developers/building-from-source",children:"By building from source code"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Does not apply to Docker distributions."})}),"\n",(0,r.jsx)(n.p,{children:"Before installing Nethermind, your specific platform might need the following prerequisites."}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsx)(a.A,{value:"linux",label:"Linux",children:"None"}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsxs)(n.p,{children:["Although the modern versions of Windows are bundled with a recent version of ",(0,r.jsx)(n.a,{href:"https://aka.ms/vcredist",children:"Microsoft Visual C++ Redistributable"}),", in some cases, it may need an update:"]}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install Microsoft.VCRedist.2015+.x64\n"})})]}),(0,r.jsx)(a.A,{value:"macos",label:"macOS",children:"None"})]}),"\n",(0,r.jsx)(n.h2,{id:"package-managers",children:"Package managers"}),"\n",(0,r.jsx)(n.p,{children:"Package managers are the easiest and fastest way of installing Nethermind."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsxs)(n.p,{children:["If you're using a package manager, it's highly recommended to set the ",(0,r.jsx)(n.code,{children:"-dd, --datadir"})," flag to specify the data directory. Otherwise, Nethermind will use the default data directory where the package is installed, which may not be preserved on further updates or uninstall."]})}),"\n",(0,r.jsxs)(i.A,{groupId:"os",children:[(0,r.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,r.jsx)(n.p,{children:"On Ubuntu and other Linux distros supporting PPA, Nethermind can be installed via Launchpad PPA."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo add-apt-repository ppa:nethermindeth/nethermind\n"})}),(0,r.jsxs)(n.admonition,{type:"note",children:[(0,r.jsx)(n.p,{children:"If the command is not found, run:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install software-properties-common\n"})})]}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt-get update\nsudo apt-get install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,r.jsx)(n.p,{children:"On Windows, Nethermind can be installed via Windows Package Manager as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"winget install nethermind\n"})})]}),(0,r.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(n.p,{children:"On macOS, Nethermind can be installed via Homebrew."}),(0,r.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew tap nethermindeth/nethermind\n"})}),(0,r.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"brew install nethermind\n"})})]})]}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"standalone-downloads",children:"Standalone downloads"}),"\n",(0,r.jsx)(n.p,{children:"Standalone downloads give users more flexibility by allowing them to install a specific version of Nethermind, choose the installation location, and prevent automatic updates."}),"\n",(0,r.jsxs)(n.p,{children:["Standalone downloads are available on ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub Releases"})," and at ",(0,r.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads.nethermind.io"})," as ZIP archives for x64 and AArch64 (ARM64) CPU architectures for Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h3,{id:"configuring-as-a-linux-service",children:"Configuring as a Linux service"}),"\n",(0,r.jsxs)(n.p,{children:["To install Nethermind as a Linux service, see the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/scripts/nethermind.service",children:"nethermind.service"})," unit file as an example.\nAs it's configured to run Nethermind as the specific user and group and looks for the executable in a predefined location, the following steps need to be fulfilled:"]}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsxs)(n.p,{children:["Any of these steps can be omitted by replacing them with corresponding changes in the unit file.\nFor instance, if you want to run Nethermind as a different user, change the ",(0,r.jsx)(n.code,{children:"User"})," and ",(0,r.jsx)(n.code,{children:"Group"})," options in the unit file."]})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Create a new user and group:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:" # Create a new user and group\n sudo useradd -m -s /bin/bash nethermind\n\n # Increase the maximum number of open files\n sudo bash -c 'echo \"nethermind soft nofile 100000\" > /etc/security/limits.d/nethermind.conf'\n sudo bash -c 'echo \"nethermind hard nofile 100000\" >> /etc/security/limits.d/nethermind.conf'\n\n # Switch to the nethermind user\n sudo su -l nethermind\n\n # Create required directories\n # Note that the home directory (~) is now /home/nethermind\n mkdir ~/build\n mkdir ~/data\n"})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"#standalone-downloads",children:"Download Nethermind"})," and extract the package contents to the ",(0,r.jsx)(n.code,{children:"~/build"})," directory."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Configure options in the ",(0,r.jsx)(n.code,{children:"~/.env"})," file:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",metastring:'title="~/.env"',children:'# Required\nNETHERMIND_CONFIG="mainnet"\n\n# Optional\nNETHERMIND_HEALTHCHECKSCONFIG_ENABLED="true"\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Now, let's set up the Linux service:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# Download the unit file\ncurl -L https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/nethermind.service -o nethermind.service\n\n# Move the unit file to the systemd directory\nsudo mv nethermind.service /etc/systemd/system\n\n# Reload the systemd daemon\nsudo systemctl daemon-reload\n\n# Start the service\nsudo systemctl start nethermind\n\n# Optionally, enable the service to start on boot\nsudo systemctl enable nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To ensure the service is up and running, check its status as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo systemctl status nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"To monitor the Nethermind output, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"journalctl -u nethermind -f\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For further instructions, see ",(0,r.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"docker-container",children:"Docker container"}),"\n",(0,r.jsxs)(n.p,{children:["The Docker images of Nethermind are available on ",(0,r.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind",children:"Docker Hub"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"This registry provides production versions of Nethermind with 3 types of tags:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:latest"})," is the latest version of Nethermind (the default tag)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:"})," is the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is the actual version of Nethermind."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nethermind/nethermind:-chiseled"})," is a ",(0,r.jsx)(n.em,{children:"rootless"})," and ",(0,r.jsx)(n.a,{href:"https://ubuntu.com/engage/chiselled-ubuntu-images-for-containers",children:"chiseled"})," image with the specific version of Nethermind where ",(0,r.jsx)(n.code,{children:""})," is either ",(0,r.jsx)(n.code,{children:"latest"})," or the actual version of Nethermind.",(0,r.jsx)(n.br,{}),"\n","For security reasons, this image contains only the absolutely necessary components and is intended to run as a non-root ",(0,r.jsx)(n.code,{children:"app"})," user with UID/GID of ",(0,r.jsx)(n.code,{children:"64198"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To download the image from the registry, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker pull nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Starting a node is achieved by:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"The following ports are exposed by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8545"}),": TCP, for the JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"8551"}),": TCP, for the consensus client JSON-RPC interface"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"30303"}),": TCP and UDP, for P2P networking"]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"It's highly recommended to mount data volumes as the Nethermind's data directories to ensure the synced data is preserved between the container restarts."})}),"\n",(0,r.jsx)(n.p,{children:"The following volume mount points are available by default:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/nethermind_db"}),": used to store the database"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/logs"}),": used to store the logs"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"/nethermind/keystore"}),": used to store the keys"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"To mount separate volumes for each directory listed above, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/db,target=/nethermind/nethermind_db \\\n --mount type=bind,source=path/to/logs,target=/nethermind/logs \\\n --mount type=bind,source=path/to/keystore,target=/nethermind/keystore \\\n nethermind/nethermind\n"})}),"\n",(0,r.jsx)(n.p,{children:"Alternatively, a single volume can be specified as the Nethermind data directory as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/data_dir,target=/nethermind/data_dir \\\n nethermind/nethermind -dd /nethermind/data_dir\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Note that any Nethermind-specific configuration option can be specified at the end. For instance, the ",(0,r.jsx)(n.code,{children:"-dd"})," option in this case. For further instructions, see ",(0,r.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["To build the Docker image yourself, see ",(0,r.jsx)(n.a,{href:"/1.28.0/developers/building-from-source#bulding-docker-image",children:"Building Docker image"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"running",children:"Running Nethermind"}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["A ",(0,r.jsx)(n.a,{href:"/1.28.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]}),"\n",(0,r.jsxs)(n.li,{children:["Please check out the ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/security",children:"security considerations"})," before using Nethermind for critical operations."]}),"\n"]})}),"\n",(0,r.jsx)(n.p,{children:"Nethermind is mainly controlled by command line options (aka arguments or flags)."}),"\n",(0,r.jsx)(n.p,{children:"The full list of options can be displayed by running:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,r.jsx)(n.p,{children:"For instance, to launch the client with the default configuration for the Mainnet and custom data directory, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet -dd path/to/data/dir\n"})}),"\n",(0,r.jsxs)(n.p,{children:["For detailed info about the available configuration options, see ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration",children:"Configuration"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"supported-networks",children:"Supported networks"}),"\n",(0,r.jsxs)(n.p,{children:["To run Nethermind on a specific network, use the ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#basic-options",children:(0,r.jsx)(n.code,{children:"-c, --config"})})," command line option. Currently, the following networks are supported out of the box:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Ethereum"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#ethereum-mainnet",children:"Mainnet"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://github.com/eth-clients/holesky",children:"Holesky"})," (testnet)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#sepolia",children:"Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Base"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-mainnet",children:"Base Mainnet"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-testnet-sepolia",children:"Base Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Energy Web Chain"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain",children:"Energy Web"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/testnet-and-mainnet#developing-on-volta-test-network",children:"Volta"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Gnosis Chain"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://docs.gnosischain.com/about/networks/mainnet",children:"Gnosis"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://docs.gnosischain.com/about/networks/chiado",children:"Chiado"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Optimism"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://docs.optimism.io/chain/networks#op-mainnet",children:"OP Mainnet"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://docs.optimism.io/chain/networks#op-sepolia",children:"OP Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>a});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var i=t(4848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,a),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var r=t(6540),s=t(4164),i=t(3104),a=t(6347),o=t(205),l=t(7485),d=t(1682),c=t(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const s=(0,a.W6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(s.location.search);n.set(i,e),s.replace({...s.location,search:n.toString()})}),[i,s])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,i=u(e),[a,l]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[d,h]=p({queryString:t,groupId:s}),[x,g]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,i]=(0,c.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:s}),f=(()=>{const e=d??x;return m({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&l(f)}),[f]);return{selectedValue:a,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);l(e),h(e),g(e)}),[h,g,i]),tabValues:i}}var g=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function b(e){let{className:n,block:t,selectedValue:r,selectValue:a,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,i.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),s=o[t].value;s!==r&&(d(n),a(s))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>l.push(e),onKeyDown:h,onClick:c,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:i}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=x(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(b,{...n,...e}),(0,j.jsx)(v,{...n,...e})]})}function w(e){const n=(0,g.A)();return(0,j.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var r=t(6540);const s={},i=r.createContext(s);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cef792a0.55ef89f5.js b/assets/js/cef792a0.f228a6f5.js similarity index 99% rename from assets/js/cef792a0.55ef89f5.js rename to assets/js/cef792a0.f228a6f5.js index a1de12de3..9f4737d8d 100644 --- a/assets/js/cef792a0.55ef89f5.js +++ b/assets/js/cef792a0.f228a6f5.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3120],{3818:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var a=t(4848),s=t(8453),r=t(1470),l=t(9365);const i={title:"Health check",sidebar_position:1},o=void 0,c={id:"monitoring/health-check",title:"Health check",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.26.0/monitoring/health-check.md",sourceDirName:"monitoring",slug:"/monitoring/health-check",permalink:"/1.26.0/monitoring/health-check",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/monitoring/health-check.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Health check",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"dotnet-counters",permalink:"/1.26.0/monitoring/metrics/dotnet-counters"},next:{title:"Validators",permalink:"/1.26.0/validators/"}},h={},d=[{value:"Enabling and configuring Health Checks",id:"enabling-and-configuring-health-checks",level:2},{value:"Enabling Health Checks without UI ",id:"enabling-health-checks-without-ui-",level:4},{value:"Enabling Health Checks UI",id:"enabling-health-checks-ui",level:4},{value:"Enabling Slack reports",id:"enabling-slack-reports",level:4},{value:"Consensus Client health",id:"consensus-client-health",level:4},{value:"health_nodeStatus",id:"health_nodestatus",level:4},{value:"Monitoring available storage space",id:"monitoring-available-storage-space",level:4},{value:"HealthChecks for producing and processing blocks",id:"healthchecks-for-producing-and-processing-blocks",level:4}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h4:"h4",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n","\n",(0,a.jsxs)(n.p,{children:["Nethermind has a pre-packed ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"})," plugin that allows you to monitor your Nethermind node better.\nIt leverages the power\nof ",(0,a.jsx)(n.a,{href:"https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks",children:"AspNetCore.Diagnostics.HealthChecks"}),". It simply adds\nan",(0,a.jsx)(n.code,{children:"/health"}),"endpoint to the JSON RPC service which can be used to check the Nethermind's ",(0,a.jsxs)(n.em,{children:[(0,a.jsx)(n.strong,{children:"liveness"})," -"]})," verify if the\nnode is ",(0,a.jsx)(n.strong,{children:"synced"})," and has ",(0,a.jsx)(n.strong,{children:"at least one peer."})," Useful when you don't want to query the node before it's able to\nprovide you data available only for fully synced nodes like ",(0,a.jsx)(n.code,{children:"eth_getBalance"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"}),"plugin will be automatically loaded on Nethermind start."]}),"\n",(0,a.jsx)(n.h2,{id:"enabling-and-configuring-health-checks",children:"Enabling and configuring Health Checks"}),"\n",(0,a.jsxs)(n.p,{children:["The health checks need to be additionally enabled which can be done either through ",(0,a.jsx)(n.code,{children:"--HealthChecks.*"})," flags or by adding\na ",(0,a.jsx)(n.code,{children:'"HealthChecks"'})," section to the config file. "]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:' "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "WebhooksUri": "https://slack.webhook",\n "UIEnabled": true,\n "PollingInterval": 10,\n "Slug": "/api/health"\n }\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"danger",children:(0,a.jsxs)(n.p,{children:["JSON RPC Service needs to be enabled in order for health checks to work ",(0,a.jsx)(n.code,{children:"--JsonRpc.Enabled true"})]})}),"\n",(0,a.jsxs)(n.p,{children:["Each configuration option is described ",(0,a.jsx)(n.a,{href:"../fundamentals/configuration#healthchecks",children:"here"}),"."]}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-without-ui-",children:"Enabling Health Checks without UI "}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"health"})," endpoint is now available at ",(0,a.jsx)(n.code,{children:"localhost:8545/health"})," by default (if your ",(0,a.jsx)(n.code,{children:"--JsonRpc.Port"})," is ",(0,a.jsx)(n.code,{children:"8545"}),").\nThe ",(0,a.jsx)(n.code,{children:"health"})," endpoint can be configured via ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug"})," parameter e.g. ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug /api/health"}),". We\ncan if it is working with ",(0,a.jsx)(n.code,{children:"curl"}),":"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'// Request\ncurl localhost:8545/health\n\n// Example of response for Unhealthy node\n{"status":"Unhealthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node has 0 peers connected","duration":"00:00:00.0003881","status":"Unhealthy","tags":[]}}}\n\n// Example of response for Healthy node\n{"status":"Healthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node is now fully synced with a network, number of peers: 99","duration":"00:00:00.0003881","status":"Healthy","tags":[]}}}\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Unhealthy"})," returns ",(0,a.jsx)(n.strong,{children:"503"})," (Service Unavailable) status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Healthy"})," returns ",(0,a.jsx)(n.strong,{children:"200"})," status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-ui",children:"Enabling Health Checks UI"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true --HealthChecks.UIEnabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Enabling UI will expose an additional endpoint ",(0,a.jsx)(n.code,{children:"/healthchecks-ui"}),"and will allow seeing node's health on a nice UI. To\nview the UI simply go to ",(0,a.jsx)(n.code,{children:"http://localhost:8545/healthchecks-ui"}),"."]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy status reported on UI page",src:t(5218).A+"",width:"1187",height:"418"})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-slack-reports",children:"Enabling Slack reports"}),"\n",(0,a.jsxs)(n.p,{children:["We may also add Slack Webhook endpoint to which our node's health will be reported. We need to pass\nthe ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled true"})," and add the ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksUri"})," which can be found in your Slack app\nconfiguration."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.Enabled true --HealthChecks.UIEnabled true --HealthChecks.WebhooksEnabled true --HealthChecks.WebhooksUri https://hooks.slack.com/\n"})}),"\n",(0,a.jsxs)(n.p,{children:["If your node will be ",(0,a.jsx)(n.strong,{children:"Unhealthy"})," you should receive a message similar to this:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy",src:t(9953).A+"",width:"690",height:"240"})}),"\n",(0,a.jsxs)(n.p,{children:["with description of why the node is unhealthy, node's name and information about the machine on which the node is\nrunning.",(0,a.jsx)(n.br,{}),"\n","When it becomes ",(0,a.jsx)(n.strong,{children:"Healthy"})," (",(0,a.jsx)(n.strong,{children:"synced"})," and with ",(0,a.jsx)(n.strong,{children:"peers"}),") you should receive:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Healthy",src:t(5725).A+"",width:"492",height:"118"})}),"\n",(0,a.jsx)(n.h4,{id:"consensus-client-health",children:"Consensus Client health"}),"\n",(0,a.jsxs)(n.p,{children:["This check verifies if the client receives messages from the CL. If you see this warning in your logs, it means that\nthere is something wrong with CL/Nethermind communication. Check more about setting up Nethermind and\nCL ",(0,a.jsx)(n.a,{href:"/1.26.0/get-started/consensus-clients",children:"here"}),"."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"No incoming messages from Consensus Client. Consensus Client is required to sync the node. Please make sure that it's working properly.\n"})}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"Note that Consensus Client is required for normal node operations."})}),"\n",(0,a.jsx)(n.h4,{id:"health_nodestatus",children:"health_nodeStatus"}),"\n",(0,a.jsxs)(n.p,{children:["Health checks via JSON RPC requests were introduced in version v.1.10.18. For that, ",(0,a.jsx)(n.code,{children:"HealthChecks.Enabled"})," should be\nset to true."]}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsx)(l.A,{value:"request",label:"Request",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{ "jsonrpc":"2.0","method":"health_nodeStatus","params":[],"id":67 }\n'})})}),(0,a.jsx)(l.A,{label:"Response",value:"response",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{\n "jsonrpc": "2.0",\n "result": {\n "healthy": false,\n "messages": [\n "Sync degraded",\n "No messages from CL"\n ],\n "errors": [\n "SyncDegraded",\n "ClUnavailable"\n ],\n "isSyncing": true\n },\n "id": 67\n}\n'})})})]}),"\n",(0,a.jsx)(n.h4,{id:"monitoring-available-storage-space",children:"Monitoring available storage space"}),"\n",(0,a.jsx)(n.p,{children:"Feature which is helping to track free disk space is enabled by default and monitors a drive which has been used to\nconfigure database location. There are two new configuration options available:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold"})," - Percentage of free disk space below which a warning will be\ndisplayed. If Health Checks UI is enabled, it will also be reported under node's health. Default value is 5 - meaning\n5% of free disk space."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold"})," - Percentage of available disk space below which node will shutdown\nto avoid database corruption. Default value is 1 - meaning 1% of free disk space."]}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.LowStorageSpaceWarningThreshold 5 --HealthChecks.LowStorageSpaceShutdownThreshold 1\n"})}),"\n",(0,a.jsx)(n.h4,{id:"healthchecks-for-producing-and-processing-blocks",children:"HealthChecks for producing and processing blocks"}),"\n",(0,a.jsx)(n.p,{children:"There are two fields for HealthChecks config: MaxIntervalWithoutProcessedBlock and MaxIntervalWithoutProducedBlock. The\nnode will return unhealthy status if the interval elapsed without processing or producing a block. Let's use the below\nconfig as an example. If the node doesn't process a block for 15 seconds, we will return unhealthy status. Analogically,\nwe will be waiting 45 seconds for a newly produced block."}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:'\n "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "UIEnabled": true,\n "Slug": "/api/health",\n "MaxIntervalWithoutProcessedBlock ": 15,\n "MaxIntervalWithoutProducedBlock": 45\n }\n'})}),"\n",(0,a.jsx)(n.p,{children:"If those fields are not set in a config, application will try to use them based on seal engine specification. If there\nis infinite time, unhealthy status can still be reported if processing or producing threads stopped."})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var a=t(4164);const s={tabItem:"tabItem_Ymn6"};var r=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var a=t(6540),s=t(4164),r=t(3104),l=t(6347),i=t(205),o=t(7485),c=t(1682),h=t(679);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:s}}=e;return{value:n,label:t,attributes:a,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,o.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(s.location.search);n.set(r,e),s.replace({...s.location,search:n.toString()})}),[r,s])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=u(e),[l,o]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,d]=g({queryString:t,groupId:s}),[b,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,r]=(0,h.Dv)(t);return[s,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:s}),f=(()=>{const e=c??b;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&o(f)}),[f]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),d(e),m(e)}),[d,m,r]),tabValues:r}}var m=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(4848);function j(e){let{className:n,block:t,selectedValue:a,selectValue:l,tabValues:i}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),h=e=>{const n=e.currentTarget,t=o.indexOf(n),s=i[t].value;s!==a&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>o.push(e),onKeyDown:d,onClick:h,...r,className:(0,s.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function k(e){let{lazy:n,children:t,selectedValue:r}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=b(e);return(0,x.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,x.jsx)(j,{...n,...e}),(0,x.jsx)(k,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,x.jsx)(v,{...e,children:d(e.children)},String(n))}},5725:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(46)-5eaf72852b3e686e71865323e9801102.png"},5218:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(76)-09c7ba2b07d07480a303268d261ffd16.png"},9953:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/unhealthy-98cb6ab004e2ecb6edcbec2e6d03edea.png"},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>i});var a=t(6540);const s={},r=a.createContext(s);function l(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3120],{3818:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var a=t(4848),s=t(8453),r=t(1470),l=t(9365);const i={title:"Health check",sidebar_position:1},o=void 0,c={id:"monitoring/health-check",title:"Health check",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.26.0/monitoring/health-check.md",sourceDirName:"monitoring",slug:"/monitoring/health-check",permalink:"/1.26.0/monitoring/health-check",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/monitoring/health-check.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Health check",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"dotnet-counters",permalink:"/1.26.0/monitoring/metrics/dotnet-counters"},next:{title:"Validators",permalink:"/1.26.0/validators/"}},h={},d=[{value:"Enabling and configuring Health Checks",id:"enabling-and-configuring-health-checks",level:2},{value:"Enabling Health Checks without UI ",id:"enabling-health-checks-without-ui-",level:4},{value:"Enabling Health Checks UI",id:"enabling-health-checks-ui",level:4},{value:"Enabling Slack reports",id:"enabling-slack-reports",level:4},{value:"Consensus Client health",id:"consensus-client-health",level:4},{value:"health_nodeStatus",id:"health_nodestatus",level:4},{value:"Monitoring available storage space",id:"monitoring-available-storage-space",level:4},{value:"HealthChecks for producing and processing blocks",id:"healthchecks-for-producing-and-processing-blocks",level:4}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h4:"h4",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n","\n",(0,a.jsxs)(n.p,{children:["Nethermind has a pre-packed ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"})," plugin that allows you to monitor your Nethermind node better.\nIt leverages the power\nof ",(0,a.jsx)(n.a,{href:"https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks",children:"AspNetCore.Diagnostics.HealthChecks"}),". It simply adds\nan",(0,a.jsx)(n.code,{children:"/health"}),"endpoint to the JSON RPC service which can be used to check the Nethermind's ",(0,a.jsxs)(n.em,{children:[(0,a.jsx)(n.strong,{children:"liveness"})," -"]})," verify if the\nnode is ",(0,a.jsx)(n.strong,{children:"synced"})," and has ",(0,a.jsx)(n.strong,{children:"at least one peer."})," Useful when you don't want to query the node before it's able to\nprovide you data available only for fully synced nodes like ",(0,a.jsx)(n.code,{children:"eth_getBalance"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"}),"plugin will be automatically loaded on Nethermind start."]}),"\n",(0,a.jsx)(n.h2,{id:"enabling-and-configuring-health-checks",children:"Enabling and configuring Health Checks"}),"\n",(0,a.jsxs)(n.p,{children:["The health checks need to be additionally enabled which can be done either through ",(0,a.jsx)(n.code,{children:"--HealthChecks.*"})," flags or by adding\na ",(0,a.jsx)(n.code,{children:'"HealthChecks"'})," section to the config file. "]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:' "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "WebhooksUri": "https://slack.webhook",\n "UIEnabled": true,\n "PollingInterval": 10,\n "Slug": "/api/health"\n }\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"danger",children:(0,a.jsxs)(n.p,{children:["JSON RPC Service needs to be enabled in order for health checks to work ",(0,a.jsx)(n.code,{children:"--JsonRpc.Enabled true"})]})}),"\n",(0,a.jsxs)(n.p,{children:["Each configuration option is described ",(0,a.jsx)(n.a,{href:"../fundamentals/configuration#healthchecks",children:"here"}),"."]}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-without-ui-",children:"Enabling Health Checks without UI "}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"health"})," endpoint is now available at ",(0,a.jsx)(n.code,{children:"localhost:8545/health"})," by default (if your ",(0,a.jsx)(n.code,{children:"--JsonRpc.Port"})," is ",(0,a.jsx)(n.code,{children:"8545"}),").\nThe ",(0,a.jsx)(n.code,{children:"health"})," endpoint can be configured via ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug"})," parameter e.g. ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug /api/health"}),". We\ncan if it is working with ",(0,a.jsx)(n.code,{children:"curl"}),":"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'// Request\ncurl localhost:8545/health\n\n// Example of response for Unhealthy node\n{"status":"Unhealthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node has 0 peers connected","duration":"00:00:00.0003881","status":"Unhealthy","tags":[]}}}\n\n// Example of response for Healthy node\n{"status":"Healthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node is now fully synced with a network, number of peers: 99","duration":"00:00:00.0003881","status":"Healthy","tags":[]}}}\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Unhealthy"})," returns ",(0,a.jsx)(n.strong,{children:"503"})," (Service Unavailable) status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Healthy"})," returns ",(0,a.jsx)(n.strong,{children:"200"})," status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-ui",children:"Enabling Health Checks UI"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true --HealthChecks.UIEnabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Enabling UI will expose an additional endpoint ",(0,a.jsx)(n.code,{children:"/healthchecks-ui"}),"and will allow seeing node's health on a nice UI. To\nview the UI simply go to ",(0,a.jsx)(n.code,{children:"http://localhost:8545/healthchecks-ui"}),"."]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy status reported on UI page",src:t(5218).A+"",width:"1187",height:"418"})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-slack-reports",children:"Enabling Slack reports"}),"\n",(0,a.jsxs)(n.p,{children:["We may also add Slack Webhook endpoint to which our node's health will be reported. We need to pass\nthe ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled true"})," and add the ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksUri"})," which can be found in your Slack app\nconfiguration."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.Enabled true --HealthChecks.UIEnabled true --HealthChecks.WebhooksEnabled true --HealthChecks.WebhooksUri https://hooks.slack.com/\n"})}),"\n",(0,a.jsxs)(n.p,{children:["If your node will be ",(0,a.jsx)(n.strong,{children:"Unhealthy"})," you should receive a message similar to this:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy",src:t(9953).A+"",width:"690",height:"240"})}),"\n",(0,a.jsxs)(n.p,{children:["with description of why the node is unhealthy, node's name and information about the machine on which the node is\nrunning.",(0,a.jsx)(n.br,{}),"\n","When it becomes ",(0,a.jsx)(n.strong,{children:"Healthy"})," (",(0,a.jsx)(n.strong,{children:"synced"})," and with ",(0,a.jsx)(n.strong,{children:"peers"}),") you should receive:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Healthy",src:t(5725).A+"",width:"492",height:"118"})}),"\n",(0,a.jsx)(n.h4,{id:"consensus-client-health",children:"Consensus Client health"}),"\n",(0,a.jsxs)(n.p,{children:["This check verifies if the client receives messages from the CL. If you see this warning in your logs, it means that\nthere is something wrong with CL/Nethermind communication. Check more about setting up Nethermind and\nCL ",(0,a.jsx)(n.a,{href:"/1.26.0/get-started/consensus-clients",children:"here"}),"."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"No incoming messages from Consensus Client. Consensus Client is required to sync the node. Please make sure that it's working properly.\n"})}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"Note that Consensus Client is required for normal node operations."})}),"\n",(0,a.jsx)(n.h4,{id:"health_nodestatus",children:"health_nodeStatus"}),"\n",(0,a.jsxs)(n.p,{children:["Health checks via JSON RPC requests were introduced in version v.1.10.18. For that, ",(0,a.jsx)(n.code,{children:"HealthChecks.Enabled"})," should be\nset to true."]}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsx)(l.A,{value:"request",label:"Request",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{ "jsonrpc":"2.0","method":"health_nodeStatus","params":[],"id":67 }\n'})})}),(0,a.jsx)(l.A,{label:"Response",value:"response",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{\n "jsonrpc": "2.0",\n "result": {\n "healthy": false,\n "messages": [\n "Sync degraded",\n "No messages from CL"\n ],\n "errors": [\n "SyncDegraded",\n "ClUnavailable"\n ],\n "isSyncing": true\n },\n "id": 67\n}\n'})})})]}),"\n",(0,a.jsx)(n.h4,{id:"monitoring-available-storage-space",children:"Monitoring available storage space"}),"\n",(0,a.jsx)(n.p,{children:"Feature which is helping to track free disk space is enabled by default and monitors a drive which has been used to\nconfigure database location. There are two new configuration options available:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold"})," - Percentage of free disk space below which a warning will be\ndisplayed. If Health Checks UI is enabled, it will also be reported under node's health. Default value is 5 - meaning\n5% of free disk space."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold"})," - Percentage of available disk space below which node will shutdown\nto avoid database corruption. Default value is 1 - meaning 1% of free disk space."]}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.LowStorageSpaceWarningThreshold 5 --HealthChecks.LowStorageSpaceShutdownThreshold 1\n"})}),"\n",(0,a.jsx)(n.h4,{id:"healthchecks-for-producing-and-processing-blocks",children:"HealthChecks for producing and processing blocks"}),"\n",(0,a.jsx)(n.p,{children:"There are two fields for HealthChecks config: MaxIntervalWithoutProcessedBlock and MaxIntervalWithoutProducedBlock. The\nnode will return unhealthy status if the interval elapsed without processing or producing a block. Let's use the below\nconfig as an example. If the node doesn't process a block for 15 seconds, we will return unhealthy status. Analogically,\nwe will be waiting 45 seconds for a newly produced block."}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:'\n "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "UIEnabled": true,\n "Slug": "/api/health",\n "MaxIntervalWithoutProcessedBlock ": 15,\n "MaxIntervalWithoutProducedBlock": 45\n }\n'})}),"\n",(0,a.jsx)(n.p,{children:"If those fields are not set in a config, application will try to use them based on seal engine specification. If there\nis infinite time, unhealthy status can still be reported if processing or producing threads stopped."})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var a=t(4164);const s={tabItem:"tabItem_Ymn6"};var r=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var a=t(6540),s=t(4164),r=t(3104),l=t(6347),i=t(205),o=t(7485),c=t(1682),h=t(679);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:s}}=e;return{value:n,label:t,attributes:a,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,o.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(s.location.search);n.set(r,e),s.replace({...s.location,search:n.toString()})}),[r,s])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=u(e),[l,o]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,d]=g({queryString:t,groupId:s}),[b,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,r]=(0,h.Dv)(t);return[s,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:s}),f=(()=>{const e=c??b;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&o(f)}),[f]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),d(e),m(e)}),[d,m,r]),tabValues:r}}var m=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(4848);function j(e){let{className:n,block:t,selectedValue:a,selectValue:l,tabValues:i}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),h=e=>{const n=e.currentTarget,t=o.indexOf(n),s=i[t].value;s!==a&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>o.push(e),onKeyDown:d,onClick:h,...r,className:(0,s.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function k(e){let{lazy:n,children:t,selectedValue:r}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=b(e);return(0,x.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,x.jsx)(j,{...n,...e}),(0,x.jsx)(k,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,x.jsx)(v,{...e,children:d(e.children)},String(n))}},5725:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(46)-5eaf72852b3e686e71865323e9801102.png"},5218:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(76)-09c7ba2b07d07480a303268d261ffd16.png"},9953:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/unhealthy-98cb6ab004e2ecb6edcbec2e6d03edea.png"},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>i});var a=t(6540);const s={},r=a.createContext(s);function l(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d074d9ae.0199ae20.js b/assets/js/d074d9ae.5eedcf88.js similarity index 98% rename from assets/js/d074d9ae.0199ae20.js rename to assets/js/d074d9ae.5eedcf88.js index 35f7d1d94..9a64743cb 100644 --- a/assets/js/d074d9ae.0199ae20.js +++ b/assets/js/d074d9ae.5eedcf88.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2645],{3797:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=t(4848),i=t(8453);const o={title:"Performance tuning",sidebar_position:7},r=void 0,a={id:"fundamentals/performance-tuning",title:"Performance tuning",description:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.",source:"@site/versioned_docs/version-1.28.0/fundamentals/performance-tuning.md",sourceDirName:"fundamentals",slug:"/fundamentals/performance-tuning",permalink:"/1.28.0/fundamentals/performance-tuning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/performance-tuning.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:7,frontMatter:{title:"Performance tuning",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Pruning",permalink:"/1.28.0/fundamentals/pruning"},next:{title:"Private networks",permalink:"/1.28.0/fundamentals/private-networks"}},c={},d=[{value:"Peer discovery",id:"peer-discovery",level:2},{value:"Port forwarding",id:"port-forwarding",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Snap sync",id:"snap-sync",level:2},{value:"Old bodies and receipts",id:"old-bodies-and-receipts",level:2},{value:"Block processing time and attestation",id:"block-processing-time-and-attestation",level:2}];function l(e){const n={code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs."}),"\n",(0,s.jsx)(n.h2,{id:"peer-discovery",children:"Peer discovery"}),"\n",(0,s.jsxs)(n.p,{children:["To connect to the Ethereum network, Nethermind needs to maintain connections to other clients. The number of connections can be configured with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers "}),". The default value depends on the network. Increasing this number may reduce syncing time, while reducing this number may help with attestation performance.\nAlso, you can increase the rate at which a new connection is established with ",(0,s.jsx)(n.code,{children:"--Network.MaxOutgoingConnectPerSec "}),". The default value is 20 while 50 would be a reasonable higher value. This tends to reduce the snap sync time; however, some ISPs may throttle your Internet connection if you set this value too high. Also, some WiFi routers may hang if the value is set too high."]}),"\n",(0,s.jsx)(n.h2,{id:"port-forwarding",children:"Port forwarding"}),"\n",(0,s.jsxs)(n.p,{children:["While port forwarding is not strictly required, it helps significantly with finding peers and is essential for the network's overall health. The exact steps for port forwarding highly depend on your environment, router, and ISP. For most home configurations, automatic port forwarding can be turned on with ",(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true"}),".\nSome ISPs are more restrictive and do not support port forwarding and/or utilize provider-level NAT. In such cases, your best option is to use a VPN that supports port forwarding. Keep in mind that consensus clients need a separate port forwarding."]}),"\n",(0,s.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,s.jsx)(n.p,{children:"On the Ethereum mainnet, most of the syncing time is split into three phases: snap sync, old bodies, and old receipts. Strictly speaking, there are also fast sync, full sync, and state sync phases. However, they usually complete in less than a minute, with state sync usually taking up to 3 minutes."}),"\n",(0,s.jsx)(n.p,{children:"At the moment, the best test case sync time is 1 hour 50 minutes for all phases with the following configuration:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"CPU: AMD Ryzen 9 7950X"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Memory: 128GB RAM"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Storage: Intel Optane SSD 905P Series 900GB"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Network: 1 Gbps Internet with TorGuard VPN with WireGuard protocol. Both execution and consensus clients port forwarding are set up manually."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Command line options:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true\n--Network.MaxOutgoingConnectPerSec 50\n--Network.ProcessingThreadCount 32\n--Sync.TuneDbMode HeavyWrite\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"snap-sync",children:"Snap sync"}),"\n",(0,s.jsx)(n.p,{children:"Snap sync is the process of downloading the Ethereum state tree. After it is complete, and after the state sync phase, Nethermind can process and follow the chain. The fastest tested snap sync and state sync time is 25 minutes.\nThis phase is the most I/O-intensive sync phase, and therefore, assuming a fast internet, the sync time highly depends on your SSD's write speed. Remember that most SSDs only advertise peak write speed, usually above 5GB/s. However, they tend to slow down significantly to around 0.5GB/s (or even less for a QLC SSD) after a few seconds. Therefore, look for SSDs with high sustained write speed."}),"\n",(0,s.jsxs)(n.p,{children:["Also, ensuring your SSD is sufficiently cooled to prevent thermal throttling is essential. This is often overlooked as most workloads rarely stress SSD as much; however, to reduce sync time, Nethermind will utilize your SSD to its limit. If, for whatever reason, you need to minimize the I/O load, you can specify a rate limit with ",(0,s.jsx)(n.code,{children:"--Db.MaxBytesPerSec 1000000000"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Nethermind temporarily changes the database configuration during sync to optimize it for writing, notably the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode HeavyWrite"})," is turned on by default. On some systems with slow SSDs, the use of the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode AggressiveHeavyWrite"})," may boost. Also, the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode DisableCompaction"})," can be used to disable compaction altogether. This is likely faster for systems using entry-level NVMe SSDs and is also useful to extend the lifespan of your SSD as it provides the lowest total writes possible. However, it uses about 3GB of extra memory during snap sync. The state sync phase may appear to hang for about 10 minutes as the whole database compacts for the first time after snap sync."]}),"\n",(0,s.jsxs)(n.p,{children:["If you are running on a VPS with artificially capped IOPS, or you are using SATA SSD (which is highly not recommended), increasing the state DB block size with ",(0,s.jsx)(n.code,{children:"--Db.StateDbBlockSize 16384"})," may help to reduce snap sync time. However, this negatively affects block processing time. An alternative is to turn on compaction readahead with ",(0,s.jsx)(n.code,{children:"--Db.CompactionReadAhead 128000"}),"; however, this may take up a few extra GB of memory depending on the readahead value."]}),"\n",(0,s.jsx)(n.h2,{id:"old-bodies-and-receipts",children:"Old bodies and receipts"}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and old receipts are the process of downloading block bodies and receipts. This is required for some RPC methods, such as ",(0,s.jsx)(n.code,{children:"eth_getLogs"}),", and for consensus clients to work correctly. If you don't need them, skip this phase with"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync false\n--Sync.DownloadReceiptsInFastSync false\n--Sync.NonValidatorNode true\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and receipts are mainly limited by your Internet connection. With a 1Gbps connection, they consume around 250MB/s and 500MB/s of writes, respectively, which is generally reasonable for most PCIE SSDs. On older systems or VPS with low single thread performance and high Internet speed, the block body deserialization may be a bottleneck, in which case, you can increase the number of network processing threads with ",(0,s.jsx)(n.code,{children:"--Network.ProcessingThreadCount 32"}),". However, this may impact block processing time."]}),"\n",(0,s.jsx)(n.h2,{id:"block-processing-time-and-attestation",children:"Block processing time and attestation"}),"\n",(0,s.jsxs)(n.p,{children:["Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time.\nTo help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option ",(0,s.jsx)(n.code,{children:"--Init.MemoryHint 2000000000"}),". If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time."]}),"\n",(0,s.jsxs)(n.p,{children:["It is also possible to disable compression of the state DB with ",(0,s.jsx)(n.code,{children:"--Db.StateDbDisableCompression true"})," that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers 20"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2645],{3797:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=t(4848),i=t(8453);const o={title:"Performance tuning",sidebar_position:7},r=void 0,a={id:"fundamentals/performance-tuning",title:"Performance tuning",description:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.",source:"@site/versioned_docs/version-1.28.0/fundamentals/performance-tuning.md",sourceDirName:"fundamentals",slug:"/fundamentals/performance-tuning",permalink:"/1.28.0/fundamentals/performance-tuning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/performance-tuning.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:7,frontMatter:{title:"Performance tuning",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Pruning",permalink:"/1.28.0/fundamentals/pruning"},next:{title:"Private networks",permalink:"/1.28.0/fundamentals/private-networks"}},c={},d=[{value:"Peer discovery",id:"peer-discovery",level:2},{value:"Port forwarding",id:"port-forwarding",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Snap sync",id:"snap-sync",level:2},{value:"Old bodies and receipts",id:"old-bodies-and-receipts",level:2},{value:"Block processing time and attestation",id:"block-processing-time-and-attestation",level:2}];function l(e){const n={code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs."}),"\n",(0,s.jsx)(n.h2,{id:"peer-discovery",children:"Peer discovery"}),"\n",(0,s.jsxs)(n.p,{children:["To connect to the Ethereum network, Nethermind needs to maintain connections to other clients. The number of connections can be configured with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers "}),". The default value depends on the network. Increasing this number may reduce syncing time, while reducing this number may help with attestation performance.\nAlso, you can increase the rate at which a new connection is established with ",(0,s.jsx)(n.code,{children:"--Network.MaxOutgoingConnectPerSec "}),". The default value is 20 while 50 would be a reasonable higher value. This tends to reduce the snap sync time; however, some ISPs may throttle your Internet connection if you set this value too high. Also, some WiFi routers may hang if the value is set too high."]}),"\n",(0,s.jsx)(n.h2,{id:"port-forwarding",children:"Port forwarding"}),"\n",(0,s.jsxs)(n.p,{children:["While port forwarding is not strictly required, it helps significantly with finding peers and is essential for the network's overall health. The exact steps for port forwarding highly depend on your environment, router, and ISP. For most home configurations, automatic port forwarding can be turned on with ",(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true"}),".\nSome ISPs are more restrictive and do not support port forwarding and/or utilize provider-level NAT. In such cases, your best option is to use a VPN that supports port forwarding. Keep in mind that consensus clients need a separate port forwarding."]}),"\n",(0,s.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,s.jsx)(n.p,{children:"On the Ethereum mainnet, most of the syncing time is split into three phases: snap sync, old bodies, and old receipts. Strictly speaking, there are also fast sync, full sync, and state sync phases. However, they usually complete in less than a minute, with state sync usually taking up to 3 minutes."}),"\n",(0,s.jsx)(n.p,{children:"At the moment, the best test case sync time is 1 hour 50 minutes for all phases with the following configuration:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"CPU: AMD Ryzen 9 7950X"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Memory: 128GB RAM"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Storage: Intel Optane SSD 905P Series 900GB"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Network: 1 Gbps Internet with TorGuard VPN with WireGuard protocol. Both execution and consensus clients port forwarding are set up manually."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Command line options:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true\n--Network.MaxOutgoingConnectPerSec 50\n--Network.ProcessingThreadCount 32\n--Sync.TuneDbMode HeavyWrite\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"snap-sync",children:"Snap sync"}),"\n",(0,s.jsx)(n.p,{children:"Snap sync is the process of downloading the Ethereum state tree. After it is complete, and after the state sync phase, Nethermind can process and follow the chain. The fastest tested snap sync and state sync time is 25 minutes.\nThis phase is the most I/O-intensive sync phase, and therefore, assuming a fast internet, the sync time highly depends on your SSD's write speed. Remember that most SSDs only advertise peak write speed, usually above 5GB/s. However, they tend to slow down significantly to around 0.5GB/s (or even less for a QLC SSD) after a few seconds. Therefore, look for SSDs with high sustained write speed."}),"\n",(0,s.jsxs)(n.p,{children:["Also, ensuring your SSD is sufficiently cooled to prevent thermal throttling is essential. This is often overlooked as most workloads rarely stress SSD as much; however, to reduce sync time, Nethermind will utilize your SSD to its limit. If, for whatever reason, you need to minimize the I/O load, you can specify a rate limit with ",(0,s.jsx)(n.code,{children:"--Db.MaxBytesPerSec 1000000000"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Nethermind temporarily changes the database configuration during sync to optimize it for writing, notably the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode HeavyWrite"})," is turned on by default. On some systems with slow SSDs, the use of the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode AggressiveHeavyWrite"})," may boost. Also, the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode DisableCompaction"})," can be used to disable compaction altogether. This is likely faster for systems using entry-level NVMe SSDs and is also useful to extend the lifespan of your SSD as it provides the lowest total writes possible. However, it uses about 3GB of extra memory during snap sync. The state sync phase may appear to hang for about 10 minutes as the whole database compacts for the first time after snap sync."]}),"\n",(0,s.jsxs)(n.p,{children:["If you are running on a VPS with artificially capped IOPS, or you are using SATA SSD (which is highly not recommended), increasing the state DB block size with ",(0,s.jsx)(n.code,{children:"--Db.StateDbBlockSize 16384"})," may help to reduce snap sync time. However, this negatively affects block processing time. An alternative is to turn on compaction readahead with ",(0,s.jsx)(n.code,{children:"--Db.CompactionReadAhead 128000"}),"; however, this may take up a few extra GB of memory depending on the readahead value."]}),"\n",(0,s.jsx)(n.h2,{id:"old-bodies-and-receipts",children:"Old bodies and receipts"}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and old receipts are the process of downloading block bodies and receipts. This is required for some RPC methods, such as ",(0,s.jsx)(n.code,{children:"eth_getLogs"}),", and for consensus clients to work correctly. If you don't need them, skip this phase with"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync false\n--Sync.DownloadReceiptsInFastSync false\n--Sync.NonValidatorNode true\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and receipts are mainly limited by your Internet connection. With a 1Gbps connection, they consume around 250MB/s and 500MB/s of writes, respectively, which is generally reasonable for most PCIE SSDs. On older systems or VPS with low single thread performance and high Internet speed, the block body deserialization may be a bottleneck, in which case, you can increase the number of network processing threads with ",(0,s.jsx)(n.code,{children:"--Network.ProcessingThreadCount 32"}),". However, this may impact block processing time."]}),"\n",(0,s.jsx)(n.h2,{id:"block-processing-time-and-attestation",children:"Block processing time and attestation"}),"\n",(0,s.jsxs)(n.p,{children:["Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time.\nTo help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option ",(0,s.jsx)(n.code,{children:"--Init.MemoryHint 2000000000"}),". If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time."]}),"\n",(0,s.jsxs)(n.p,{children:["It is also possible to disable compression of the state DB with ",(0,s.jsx)(n.code,{children:"--Db.StateDbDisableCompression true"})," that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers 20"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d1d84bce.026c9dc9.js b/assets/js/d1d84bce.fbea0a14.js similarity index 98% rename from assets/js/d1d84bce.026c9dc9.js rename to assets/js/d1d84bce.fbea0a14.js index 2e55ef331..b7ba1c7dc 100644 --- a/assets/js/d1d84bce.026c9dc9.js +++ b/assets/js/d1d84bce.fbea0a14.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[68],{2504:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var i=n(4848),r=n(8453);const o={title:"Security",sidebar_position:3},s=void 0,c={id:"fundamentals/security",title:"Security",description:"General security considerations",source:"@site/versioned_docs/version-1.25.4/fundamentals/security.md",sourceDirName:"fundamentals",slug:"/fundamentals/security",permalink:"/1.25.4/fundamentals/security",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/security.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"Security",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Sync",permalink:"/1.25.4/fundamentals/sync"},next:{title:"Logs",permalink:"/1.25.4/fundamentals/logs"}},a={},d=[{value:"General security considerations",id:"general-security-considerations",level:2},{value:"Networking security",id:"networking-security",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{id:"general-security-considerations",children:"General security considerations"}),"\n",(0,i.jsx)(t.admonition,{type:"tip",children:(0,i.jsx)(t.p,{children:"Although Nethermind is thoroughly tested, the more popular it becomes, the more likely it will be a target of client-specific attacks. Generally, we recommend you always consider running backup client nodes from another developer for any critical operations."})}),"\n",(0,i.jsx)(t.admonition,{type:"warning",children:(0,i.jsxs)(t.p,{children:["Enable only the ",(0,i.jsx)(t.a,{href:"/1.25.4/interacting/json-rpc-server",children:"JSON-RPC namespaces"})," you absolutely need. This is particularly important for namespaces like ",(0,i.jsx)(t.code,{children:"admin"})," and ",(0,i.jsx)(t.code,{children:"debug"}),", as they can be exploited to get elevated access to your node or for DOS attacks."]})}),"\n",(0,i.jsx)(t.admonition,{type:"danger",children:(0,i.jsx)(t.p,{children:"The private key the node id is derived from is stored on the disk as plaintext."})}),"\n",(0,i.jsx)(t.h2,{id:"networking-security",children:"Networking security"}),"\n",(0,i.jsxs)(t.p,{children:["These rules are ",(0,i.jsx)(t.strong,{children:"highly recommended"})," to be applied to your firewall:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Block all traffic to the port ",(0,i.jsx)(t.code,{children:"8545"}),", or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the TCP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port is defined for P2P communication. This allows the node to connect to peers."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the UDP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port ia defined for P2P communication. This allows node discovery."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var i=n(6540);const r={},o=i.createContext(r);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[68],{2504:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var i=n(4848),r=n(8453);const o={title:"Security",sidebar_position:3},s=void 0,c={id:"fundamentals/security",title:"Security",description:"General security considerations",source:"@site/versioned_docs/version-1.25.4/fundamentals/security.md",sourceDirName:"fundamentals",slug:"/fundamentals/security",permalink:"/1.25.4/fundamentals/security",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/security.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"Security",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Sync",permalink:"/1.25.4/fundamentals/sync"},next:{title:"Logs",permalink:"/1.25.4/fundamentals/logs"}},a={},d=[{value:"General security considerations",id:"general-security-considerations",level:2},{value:"Networking security",id:"networking-security",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{id:"general-security-considerations",children:"General security considerations"}),"\n",(0,i.jsx)(t.admonition,{type:"tip",children:(0,i.jsx)(t.p,{children:"Although Nethermind is thoroughly tested, the more popular it becomes, the more likely it will be a target of client-specific attacks. Generally, we recommend you always consider running backup client nodes from another developer for any critical operations."})}),"\n",(0,i.jsx)(t.admonition,{type:"warning",children:(0,i.jsxs)(t.p,{children:["Enable only the ",(0,i.jsx)(t.a,{href:"/1.25.4/interacting/json-rpc-server",children:"JSON-RPC namespaces"})," you absolutely need. This is particularly important for namespaces like ",(0,i.jsx)(t.code,{children:"admin"})," and ",(0,i.jsx)(t.code,{children:"debug"}),", as they can be exploited to get elevated access to your node or for DOS attacks."]})}),"\n",(0,i.jsx)(t.admonition,{type:"danger",children:(0,i.jsx)(t.p,{children:"The private key the node id is derived from is stored on the disk as plaintext."})}),"\n",(0,i.jsx)(t.h2,{id:"networking-security",children:"Networking security"}),"\n",(0,i.jsxs)(t.p,{children:["These rules are ",(0,i.jsx)(t.strong,{children:"highly recommended"})," to be applied to your firewall:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Block all traffic to the port ",(0,i.jsx)(t.code,{children:"8545"}),", or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the TCP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port is defined for P2P communication. This allows the node to connect to peers."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the UDP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port ia defined for P2P communication. This allows node discovery."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var i=n(6540);const r={},o=i.createContext(r);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d2461378.bc5e5a5d.js b/assets/js/d2461378.6d91991e.js similarity index 99% rename from assets/js/d2461378.bc5e5a5d.js rename to assets/js/d2461378.6d91991e.js index 5f8e613f1..2bdf5888b 100644 --- a/assets/js/d2461378.bc5e5a5d.js +++ b/assets/js/d2461378.6d91991e.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2042],{2950:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>m,frontMatter:()=>l,metadata:()=>d,toc:()=>h});var s=t(4848),r=t(8453),i=t(1470),a=t(9365);const l={title:"Installing Nethermind",sidebar_position:2},o=void 0,d={id:"get-started/installing-nethermind",title:"Installing Nethermind",description:"Nethermind can be installed in several ways:",source:"@site/versioned_docs/version-1.25.4/get-started/installing-nethermind.md",sourceDirName:"get-started",slug:"/get-started/installing-nethermind",permalink:"/1.25.4/get-started/installing-nethermind",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/get-started/installing-nethermind.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"Installing Nethermind",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"System requirements",permalink:"/1.25.4/get-started/system-requirements"},next:{title:"Consensus clients",permalink:"/1.25.4/get-started/consensus-clients"}},c={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Ubuntu and Debian-based distros",id:"ubuntu-and-debian-based-distros",level:4},{value:"CentOS, Fedora, and RHEL-like distros",id:"centos-fedora-and-rhel-like-distros",level:4},{value:"Package managers",id:"package-managers",level:2},{value:"Standalone downloads",id:"standalone-downloads",level:2},{value:"Confuguring as a Linux service",id:"confuguring-as-a-linux-service",level:3},{value:"Docker container",id:"docker-container",level:2},{value:"Running Nethermind",id:"running",level:2},{value:"Supported networks",id:"supported-networks",level:3}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"Nethermind can be installed in several ways:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#package-managers",children:"Via a package manager"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#standalone-downloads",children:"As a standalone download"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#docker-container",children:"As a Docker container"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/1.25.4/developers/building-from-source",children:"By building from source code"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"Does not apply to Docker distributions."})}),"\n",(0,s.jsx)(n.p,{children:"Before installing Nethermind, your specific platform might need the following prerequisites."}),"\n",(0,s.jsxs)(i.A,{groupId:"os",children:[(0,s.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,s.jsx)(n.p,{children:"On Linux systems, Snappy is a required dependency. Below are the installation instructions for the supported distros."}),(0,s.jsx)(n.h4,{id:"ubuntu-and-debian-based-distros",children:"Ubuntu and Debian-based distros"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install libsnappy-dev\n"})}),(0,s.jsx)(n.h4,{id:"centos-fedora-and-rhel-like-distros",children:"CentOS, Fedora, and RHEL-like distros"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo dnf install snappy\n"})}),(0,s.jsx)(n.p,{children:"On RHEL-like systems, Nethermind also requires the following symlink to bzip2:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'sudo ln -s `find /usr/lib64/ -type f -name "libbz2.so.1*"` /usr/lib64/libbz2.so.1.0\n'})})]}),(0,s.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,s.jsxs)(n.p,{children:["Although the modern versions of Windows are bundled with a recent version of ",(0,s.jsx)(n.a,{href:"https://aka.ms/vcredist",children:"Microsoft Visual C++ Redistributable"}),", in some cases, it may need an update:"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-powershell",children:"winget install Microsoft.VCRedist.2015+.x64\n"})})]}),(0,s.jsx)(a.A,{value:"macos",label:"macOS",children:"None"})]}),"\n",(0,s.jsx)(n.h2,{id:"package-managers",children:"Package managers"}),"\n",(0,s.jsx)(n.p,{children:"Package managers are the easiest and fastest way of installing Nethermind."}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["If you're using a package manager, it's highly recommended to set the ",(0,s.jsx)(n.code,{children:"-dd, --datadir"})," flag to specify the data directory. Otherwise, Nethermind will use the default data directory where the package is installed, which may not be preserved on further updates or uninstall."]})}),"\n",(0,s.jsxs)(i.A,{groupId:"os",children:[(0,s.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,s.jsx)(n.p,{children:"On Ubuntu and other Linux distros supporting PPA, Nethermind can be installed via Launchpad PPA."}),(0,s.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo add-apt-repository ppa:nethermindeth/nethermind\n"})}),(0,s.jsxs)(n.admonition,{type:"note",children:[(0,s.jsx)(n.p,{children:"If the command is not found, run:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install software-properties-common\n"})})]}),(0,s.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo apt-get update\nsudo apt-get install nethermind\n"})})]}),(0,s.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,s.jsx)(n.p,{children:"On Windows, Nethermind can be installed via Windows Package Manager as follows:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-powershell",children:"winget install nethermind\n"})})]}),(0,s.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,s.jsx)(n.p,{children:"On macOS, Nethermind can be installed via Homebrew."}),(0,s.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"brew tap nethermindeth/nethermind\n"})}),(0,s.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"brew install nethermind\n"})})]})]}),"\n",(0,s.jsxs)(n.p,{children:["For further instructions, see ",(0,s.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"standalone-downloads",children:"Standalone downloads"}),"\n",(0,s.jsx)(n.p,{children:"Standalone downloads give users more flexibility by allowing them to install a specific version of Nethermind, choose the installation location, and prevent automatic updates."}),"\n",(0,s.jsxs)(n.p,{children:["Standalone downloads are available on ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub Releases"})," and at ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads.nethermind.io"})," as ZIP archives for x64 and AArch64 (ARM64) CPU architectures for Linux, Windows, and macOS."]}),"\n",(0,s.jsx)(n.h3,{id:"confuguring-as-a-linux-service",children:"Confuguring as a Linux service"}),"\n",(0,s.jsxs)(n.p,{children:["To install Nethermind as a Linux service, see the ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/scripts/nethermind.service",children:"nethermind.service"})," unit file as an example.\nAs it's configured to run Nethermind as the specific user and group and looks for the executable in a predefined location, the following steps need to be fulfilled:"]}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["Any of these steps can be omitted by replacing them with corresponding changes in the unit file.\nFor instance, if you want to run Nethermind as a different user, change the ",(0,s.jsx)(n.code,{children:"User"})," and ",(0,s.jsx)(n.code,{children:"Group"})," options in the unit file."]})}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Create a new user and group:"}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:" # Create a new user and group\n sudo useradd -m -s /bin/bash nethermind\n \n # Increase the maximum number of open files\n sudo bash -c 'echo \"nethermind soft nofile 100000\" > /etc/security/limits.d/nethermind.conf'\n sudo bash -c 'echo \"nethermind hard nofile 100000\" >> /etc/security/limits.d/nethermind.conf'\n \n # Switch to the nethermind user\n sudo su -l nethermind\n \n # Create required directories\n # Note that the home directory (~) is now /home/nethermind\n mkdir ~/build\n mkdir ~/data\n"})}),"\n",(0,s.jsxs)(n.ol,{start:"2",children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#standalone-downloads",children:"Download Nethermind"})," and extract the package contents to the ",(0,s.jsx)(n.code,{children:"~/build"})," directory."]}),"\n",(0,s.jsxs)(n.li,{children:["Configure options in the ",(0,s.jsx)(n.code,{children:"~/.env"})," file:"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",metastring:'title="~/.env"',children:'# Required\nNETHERMIND_CONFIG="mainnet"\n\n# Optional\nNETHERMIND_HEALTHCHECKSCONFIG_ENABLED="true" \n'})}),"\n",(0,s.jsx)(n.p,{children:"Now, let's set up the Linux service:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"# Download the unit file\ncurl -L https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/nethermind.service -o nethermind.service\n\n# Move the unit file to the systemd directory\nsudo mv nethermind.service /etc/systemd/system\n\n# Reload the systemd daemon\nsudo systemctl daemon-reload\n\n# Start the service\nsudo systemctl start nethermind\n\n# Optionally, enable the service to start on boot\nsudo systemctl enable nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"To ensure the service is up and running, check its status as follows:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo systemctl status nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"To monitor the Nethermind output, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"journalctl -u nethermind -f\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For further instructions, see ",(0,s.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"docker-container",children:"Docker container"}),"\n",(0,s.jsxs)(n.p,{children:["The Docker images of Nethermind are available on ",(0,s.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind",children:"Docker Hub"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"This registry provides production versions of Nethermind with two types of tags:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nethermind/nethermind:latest"})," is the latest version of Nethermind (the default tag)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nethermind/nethermind:"})," is the specific version of Nethermind where ",(0,s.jsx)(n.code,{children:""})," is the actual version of Nethermind."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"To download the image from the registry, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker pull nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"Starting a node is achieved by:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker run -it nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"The following ports are exposed by default:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"8545"}),": TCP, for the JSON-RPC interface"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"8551"}),": TCP, for the consensus client JSON-RPC interface"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"30303"}),": TCP and UDP, for P2P networking"]}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsx)(n.p,{children:"It's highly recommended to mount data volumes as the Nethermind's data directories to ensure the synced data is preserved between the container restarts."})}),"\n",(0,s.jsx)(n.p,{children:"The following volume mount points are available by default:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"/nethermind/nethermind_db"}),": used to store the database"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"/nethermind/logs"}),": used to store the logs"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"/nethermind/keystore"}),": used to store the keys"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"To mount separate volumes for each directory listed above, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/db,target=/nethermind/nethermind_db \\\n --mount type=bind,source=path/to/logs,target=/nethermind/logs \\\n --mount type=bind,source=path/to/keystore,target=/nethermind/keystore \\\n nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"Alternatively, a single volume can be specified as the Nethermind data directory as follows:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/data_dir,target=/nethermind/data_dir \\\n nethermind/nethermind -dd /nethermind/data_dir\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Note that any Nethermind-specific configuration option can be specified at the end. For instance, the ",(0,s.jsx)(n.code,{children:"-dd"})," option in this case. For further instructions, see ",(0,s.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["To build the Docker image yourself, see ",(0,s.jsx)(n.a,{href:"/1.25.4/developers/building-from-source#bulding-docker-image",children:"Building Docker image"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running",children:"Running Nethermind"}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["A ",(0,s.jsx)(n.a,{href:"/1.25.4/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]}),"\n",(0,s.jsxs)(n.li,{children:["Please check out the ",(0,s.jsx)(n.a,{href:"/1.25.4/fundamentals/security",children:"security considerations"})," before using Nethermind for critical operations."]}),"\n"]})}),"\n",(0,s.jsx)(n.p,{children:"Nethermind is mainly controlled by command line options (aka arguments or flags)."}),"\n",(0,s.jsx)(n.p,{children:"The full list of options can be displayed by running:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,s.jsx)(n.p,{children:"For instance, to launch the client with the default configuration for the Mainnet and custom data directory, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet -dd path/to/data/dir\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For detailed info about the available configuration options, see ",(0,s.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration",children:"Configuration"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"supported-networks",children:"Supported networks"}),"\n",(0,s.jsxs)(n.p,{children:["To run Nethermind on a specific network, use the ",(0,s.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration#basic-options",children:(0,s.jsx)(n.code,{children:"-c, --config"})})," command line option. Currently, the following networks are supported out of the box:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Ethereum"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#ethereum-mainnet",children:"Mainnet"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#goerli",children:"Goerli"})," (testnet)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://github.com/eth-clients/holesky",children:"Holesky"})," (testnet)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#sepolia",children:"Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Base"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-mainnet",children:"Base Mainnet"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-testnet-goerli",children:"Base Goerli"})," (testnet)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-testnet-sepolia",children:"Base Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Energy Web Chain"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain",children:"Energy Web"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/testnet-and-mainnet#developing-on-volta-test-network",children:"Volta"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Gnosis Chain"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.gnosischain.com/concepts/networks/mainnet",children:"Gnosis"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://docs.gnosischain.com/concepts/networks/chiado",children:"Chiado"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Optimism"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://community.optimism.io/docs/useful-tools/networks/#op-mainnet",children:"OP Mainnet"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://community.optimism.io/docs/useful-tools/networks/#op-goerli",children:"OP Goerli"})," (testnet)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://community.optimism.io/docs/useful-tools/networks/#op-sepolia",children:"OP Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>a});t(6540);var s=t(4164);const r={tabItem:"tabItem_Ymn6"};var i=t(4848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,s.A)(r.tabItem,a),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var s=t(6540),r=t(4164),i=t(3104),a=t(6347),l=t(205),o=t(7485),d=t(1682),c=t(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:t,attributes:s,default:r}}=e;return{value:n,label:t,attributes:s,default:r}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const r=(0,a.W6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,o.aZ)(i),(0,s.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:r}=e,i=u(e),[a,o]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=t.find((e=>e.default))??t[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:i}))),[d,h]=p({queryString:t,groupId:r}),[x,g]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,c.Dv)(t);return[r,(0,s.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:r}),f=(()=>{const e=d??x;return m({value:e,tabValues:i})?e:null})();(0,l.A)((()=>{f&&o(f)}),[f]);return{selectedValue:a,selectValue:(0,s.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),h(e),g(e)}),[h,g,i]),tabValues:i}}var g=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function b(e){let{className:n,block:t,selectedValue:s,selectValue:a,tabValues:l}=e;const o=[],{blockElementScrollPositionUntilNextRender:d}=(0,i.a_)(),c=e=>{const n=e.currentTarget,t=o.indexOf(n),r=l[t].value;r!==s&&(d(n),a(r))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":t},n),children:l.map((e=>{let{value:n,label:t,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>o.push(e),onKeyDown:h,onClick:c,...i,className:(0,r.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":s===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:i}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===i));return e?(0,s.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=x(e);return(0,j.jsxs)("div",{className:(0,r.A)("tabs-container",f.tabList),children:[(0,j.jsx)(b,{...n,...e}),(0,j.jsx)(v,{...n,...e})]})}function w(e){const n=(0,g.A)();return(0,j.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>l});var s=t(6540);const r={},i=s.createContext(r);function a(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2042],{2950:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>m,frontMatter:()=>l,metadata:()=>d,toc:()=>h});var s=t(4848),r=t(8453),i=t(1470),a=t(9365);const l={title:"Installing Nethermind",sidebar_position:2},o=void 0,d={id:"get-started/installing-nethermind",title:"Installing Nethermind",description:"Nethermind can be installed in several ways:",source:"@site/versioned_docs/version-1.25.4/get-started/installing-nethermind.md",sourceDirName:"get-started",slug:"/get-started/installing-nethermind",permalink:"/1.25.4/get-started/installing-nethermind",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/get-started/installing-nethermind.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"Installing Nethermind",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"System requirements",permalink:"/1.25.4/get-started/system-requirements"},next:{title:"Consensus clients",permalink:"/1.25.4/get-started/consensus-clients"}},c={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Ubuntu and Debian-based distros",id:"ubuntu-and-debian-based-distros",level:4},{value:"CentOS, Fedora, and RHEL-like distros",id:"centos-fedora-and-rhel-like-distros",level:4},{value:"Package managers",id:"package-managers",level:2},{value:"Standalone downloads",id:"standalone-downloads",level:2},{value:"Confuguring as a Linux service",id:"confuguring-as-a-linux-service",level:3},{value:"Docker container",id:"docker-container",level:2},{value:"Running Nethermind",id:"running",level:2},{value:"Supported networks",id:"supported-networks",level:3}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"Nethermind can be installed in several ways:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#package-managers",children:"Via a package manager"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#standalone-downloads",children:"As a standalone download"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#docker-container",children:"As a Docker container"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/1.25.4/developers/building-from-source",children:"By building from source code"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"Does not apply to Docker distributions."})}),"\n",(0,s.jsx)(n.p,{children:"Before installing Nethermind, your specific platform might need the following prerequisites."}),"\n",(0,s.jsxs)(i.A,{groupId:"os",children:[(0,s.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,s.jsx)(n.p,{children:"On Linux systems, Snappy is a required dependency. Below are the installation instructions for the supported distros."}),(0,s.jsx)(n.h4,{id:"ubuntu-and-debian-based-distros",children:"Ubuntu and Debian-based distros"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install libsnappy-dev\n"})}),(0,s.jsx)(n.h4,{id:"centos-fedora-and-rhel-like-distros",children:"CentOS, Fedora, and RHEL-like distros"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo dnf install snappy\n"})}),(0,s.jsx)(n.p,{children:"On RHEL-like systems, Nethermind also requires the following symlink to bzip2:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'sudo ln -s `find /usr/lib64/ -type f -name "libbz2.so.1*"` /usr/lib64/libbz2.so.1.0\n'})})]}),(0,s.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,s.jsxs)(n.p,{children:["Although the modern versions of Windows are bundled with a recent version of ",(0,s.jsx)(n.a,{href:"https://aka.ms/vcredist",children:"Microsoft Visual C++ Redistributable"}),", in some cases, it may need an update:"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-powershell",children:"winget install Microsoft.VCRedist.2015+.x64\n"})})]}),(0,s.jsx)(a.A,{value:"macos",label:"macOS",children:"None"})]}),"\n",(0,s.jsx)(n.h2,{id:"package-managers",children:"Package managers"}),"\n",(0,s.jsx)(n.p,{children:"Package managers are the easiest and fastest way of installing Nethermind."}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["If you're using a package manager, it's highly recommended to set the ",(0,s.jsx)(n.code,{children:"-dd, --datadir"})," flag to specify the data directory. Otherwise, Nethermind will use the default data directory where the package is installed, which may not be preserved on further updates or uninstall."]})}),"\n",(0,s.jsxs)(i.A,{groupId:"os",children:[(0,s.jsxs)(a.A,{value:"linux",label:"Linux",children:[(0,s.jsx)(n.p,{children:"On Ubuntu and other Linux distros supporting PPA, Nethermind can be installed via Launchpad PPA."}),(0,s.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo add-apt-repository ppa:nethermindeth/nethermind\n"})}),(0,s.jsxs)(n.admonition,{type:"note",children:[(0,s.jsx)(n.p,{children:"If the command is not found, run:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install software-properties-common\n"})})]}),(0,s.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo apt-get update\nsudo apt-get install nethermind\n"})})]}),(0,s.jsxs)(a.A,{value:"windows",label:"Windows",children:[(0,s.jsx)(n.p,{children:"On Windows, Nethermind can be installed via Windows Package Manager as follows:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-powershell",children:"winget install nethermind\n"})})]}),(0,s.jsxs)(a.A,{value:"macos",label:"macOS",children:[(0,s.jsx)(n.p,{children:"On macOS, Nethermind can be installed via Homebrew."}),(0,s.jsx)(n.p,{children:"First, add the Nethermind repository:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"brew tap nethermindeth/nethermind\n"})}),(0,s.jsx)(n.p,{children:"Then, install Nethermind as follows:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"brew install nethermind\n"})})]})]}),"\n",(0,s.jsxs)(n.p,{children:["For further instructions, see ",(0,s.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"standalone-downloads",children:"Standalone downloads"}),"\n",(0,s.jsx)(n.p,{children:"Standalone downloads give users more flexibility by allowing them to install a specific version of Nethermind, choose the installation location, and prevent automatic updates."}),"\n",(0,s.jsxs)(n.p,{children:["Standalone downloads are available on ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub Releases"})," and at ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads.nethermind.io"})," as ZIP archives for x64 and AArch64 (ARM64) CPU architectures for Linux, Windows, and macOS."]}),"\n",(0,s.jsx)(n.h3,{id:"confuguring-as-a-linux-service",children:"Confuguring as a Linux service"}),"\n",(0,s.jsxs)(n.p,{children:["To install Nethermind as a Linux service, see the ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/scripts/nethermind.service",children:"nethermind.service"})," unit file as an example.\nAs it's configured to run Nethermind as the specific user and group and looks for the executable in a predefined location, the following steps need to be fulfilled:"]}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["Any of these steps can be omitted by replacing them with corresponding changes in the unit file.\nFor instance, if you want to run Nethermind as a different user, change the ",(0,s.jsx)(n.code,{children:"User"})," and ",(0,s.jsx)(n.code,{children:"Group"})," options in the unit file."]})}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Create a new user and group:"}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:" # Create a new user and group\n sudo useradd -m -s /bin/bash nethermind\n \n # Increase the maximum number of open files\n sudo bash -c 'echo \"nethermind soft nofile 100000\" > /etc/security/limits.d/nethermind.conf'\n sudo bash -c 'echo \"nethermind hard nofile 100000\" >> /etc/security/limits.d/nethermind.conf'\n \n # Switch to the nethermind user\n sudo su -l nethermind\n \n # Create required directories\n # Note that the home directory (~) is now /home/nethermind\n mkdir ~/build\n mkdir ~/data\n"})}),"\n",(0,s.jsxs)(n.ol,{start:"2",children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#standalone-downloads",children:"Download Nethermind"})," and extract the package contents to the ",(0,s.jsx)(n.code,{children:"~/build"})," directory."]}),"\n",(0,s.jsxs)(n.li,{children:["Configure options in the ",(0,s.jsx)(n.code,{children:"~/.env"})," file:"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",metastring:'title="~/.env"',children:'# Required\nNETHERMIND_CONFIG="mainnet"\n\n# Optional\nNETHERMIND_HEALTHCHECKSCONFIG_ENABLED="true" \n'})}),"\n",(0,s.jsx)(n.p,{children:"Now, let's set up the Linux service:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"# Download the unit file\ncurl -L https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/nethermind.service -o nethermind.service\n\n# Move the unit file to the systemd directory\nsudo mv nethermind.service /etc/systemd/system\n\n# Reload the systemd daemon\nsudo systemctl daemon-reload\n\n# Start the service\nsudo systemctl start nethermind\n\n# Optionally, enable the service to start on boot\nsudo systemctl enable nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"To ensure the service is up and running, check its status as follows:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo systemctl status nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"To monitor the Nethermind output, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"journalctl -u nethermind -f\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For further instructions, see ",(0,s.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"docker-container",children:"Docker container"}),"\n",(0,s.jsxs)(n.p,{children:["The Docker images of Nethermind are available on ",(0,s.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind",children:"Docker Hub"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"This registry provides production versions of Nethermind with two types of tags:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nethermind/nethermind:latest"})," is the latest version of Nethermind (the default tag)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nethermind/nethermind:"})," is the specific version of Nethermind where ",(0,s.jsx)(n.code,{children:""})," is the actual version of Nethermind."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"To download the image from the registry, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker pull nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"Starting a node is achieved by:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker run -it nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"The following ports are exposed by default:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"8545"}),": TCP, for the JSON-RPC interface"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"8551"}),": TCP, for the consensus client JSON-RPC interface"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"30303"}),": TCP and UDP, for P2P networking"]}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsx)(n.p,{children:"It's highly recommended to mount data volumes as the Nethermind's data directories to ensure the synced data is preserved between the container restarts."})}),"\n",(0,s.jsx)(n.p,{children:"The following volume mount points are available by default:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"/nethermind/nethermind_db"}),": used to store the database"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"/nethermind/logs"}),": used to store the logs"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"/nethermind/keystore"}),": used to store the keys"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"To mount separate volumes for each directory listed above, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/db,target=/nethermind/nethermind_db \\\n --mount type=bind,source=path/to/logs,target=/nethermind/logs \\\n --mount type=bind,source=path/to/keystore,target=/nethermind/keystore \\\n nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.p,{children:"Alternatively, a single volume can be specified as the Nethermind data directory as follows:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker run -it \\\n --mount type=bind,source=path/to/data_dir,target=/nethermind/data_dir \\\n nethermind/nethermind -dd /nethermind/data_dir\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Note that any Nethermind-specific configuration option can be specified at the end. For instance, the ",(0,s.jsx)(n.code,{children:"-dd"})," option in this case. For further instructions, see ",(0,s.jsx)(n.a,{href:"#running",children:"Running Nethermind"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["To build the Docker image yourself, see ",(0,s.jsx)(n.a,{href:"/1.25.4/developers/building-from-source#bulding-docker-image",children:"Building Docker image"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"running",children:"Running Nethermind"}),"\n",(0,s.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["A ",(0,s.jsx)(n.a,{href:"/1.25.4/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]}),"\n",(0,s.jsxs)(n.li,{children:["Please check out the ",(0,s.jsx)(n.a,{href:"/1.25.4/fundamentals/security",children:"security considerations"})," before using Nethermind for critical operations."]}),"\n"]})}),"\n",(0,s.jsx)(n.p,{children:"Nethermind is mainly controlled by command line options (aka arguments or flags)."}),"\n",(0,s.jsx)(n.p,{children:"The full list of options can be displayed by running:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,s.jsx)(n.p,{children:"For instance, to launch the client with the default configuration for the Mainnet and custom data directory, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet -dd path/to/data/dir\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For detailed info about the available configuration options, see ",(0,s.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration",children:"Configuration"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"supported-networks",children:"Supported networks"}),"\n",(0,s.jsxs)(n.p,{children:["To run Nethermind on a specific network, use the ",(0,s.jsx)(n.a,{href:"/1.25.4/fundamentals/configuration#basic-options",children:(0,s.jsx)(n.code,{children:"-c, --config"})})," command line option. Currently, the following networks are supported out of the box:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Ethereum"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#ethereum-mainnet",children:"Mainnet"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#goerli",children:"Goerli"})," (testnet)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://github.com/eth-clients/holesky",children:"Holesky"})," (testnet)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/networks/#sepolia",children:"Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Base"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-mainnet",children:"Base Mainnet"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-testnet-goerli",children:"Base Goerli"})," (testnet)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://docs.base.org/network-information/#base-testnet-sepolia",children:"Base Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Energy Web Chain"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain",children:"Energy Web"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://energy-web-foundation.gitbook.io/energy-web/ew-dos-technology-components-2023/trust-layer-energy-web-chain/ewc-guides-and-tutorials/testnet-and-mainnet#developing-on-volta-test-network",children:"Volta"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Gnosis Chain"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.gnosischain.com/concepts/networks/mainnet",children:"Gnosis"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://docs.gnosischain.com/concepts/networks/chiado",children:"Chiado"})," (testnet)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Optimism"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://community.optimism.io/docs/useful-tools/networks/#op-mainnet",children:"OP Mainnet"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://community.optimism.io/docs/useful-tools/networks/#op-goerli",children:"OP Goerli"})," (testnet)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://community.optimism.io/docs/useful-tools/networks/#op-sepolia",children:"OP Sepolia"})," (testnet)"]}),"\n"]}),"\n"]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>a});t(6540);var s=t(4164);const r={tabItem:"tabItem_Ymn6"};var i=t(4848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,s.A)(r.tabItem,a),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var s=t(6540),r=t(4164),i=t(3104),a=t(6347),l=t(205),o=t(7485),d=t(1682),c=t(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:t,attributes:s,default:r}}=e;return{value:n,label:t,attributes:s,default:r}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const r=(0,a.W6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,o.aZ)(i),(0,s.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:r}=e,i=u(e),[a,o]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=t.find((e=>e.default))??t[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:i}))),[d,h]=p({queryString:t,groupId:r}),[x,g]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,c.Dv)(t);return[r,(0,s.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:r}),f=(()=>{const e=d??x;return m({value:e,tabValues:i})?e:null})();(0,l.A)((()=>{f&&o(f)}),[f]);return{selectedValue:a,selectValue:(0,s.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),h(e),g(e)}),[h,g,i]),tabValues:i}}var g=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function b(e){let{className:n,block:t,selectedValue:s,selectValue:a,tabValues:l}=e;const o=[],{blockElementScrollPositionUntilNextRender:d}=(0,i.a_)(),c=e=>{const n=e.currentTarget,t=o.indexOf(n),r=l[t].value;r!==s&&(d(n),a(r))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":t},n),children:l.map((e=>{let{value:n,label:t,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>o.push(e),onKeyDown:h,onClick:c,...i,className:(0,r.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":s===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:i}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===i));return e?(0,s.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=x(e);return(0,j.jsxs)("div",{className:(0,r.A)("tabs-container",f.tabList),children:[(0,j.jsx)(b,{...n,...e}),(0,j.jsx)(v,{...n,...e})]})}function w(e){const n=(0,g.A)();return(0,j.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>l});var s=t(6540);const r={},i=s.createContext(r);function a(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d2ae4d42.4e3df433.js b/assets/js/d2ae4d42.d2df1df7.js similarity index 99% rename from assets/js/d2ae4d42.4e3df433.js rename to assets/js/d2ae4d42.d2df1df7.js index 199231846..9d0d276d1 100644 --- a/assets/js/d2ae4d42.4e3df433.js +++ b/assets/js/d2ae4d42.d2df1df7.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8157],{7553:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>j,frontMatter:()=>t,metadata:()=>d,toc:()=>u});var r=s(4848),l=s(8453),a=s(1470),i=s(9365);const t={title:"clique namespace",sidebar_label:"clique",sidebar_position:1},c=void 0,d={id:"interacting/json-rpc-ns/clique",title:"clique namespace",description:"clique_discard",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/clique.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/clique",permalink:"/interacting/json-rpc-ns/clique",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/clique.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"clique namespace",sidebar_label:"clique",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"admin",permalink:"/interacting/json-rpc-ns/admin"},next:{title:"debug",permalink:"/interacting/json-rpc-ns/debug"}},o={},u=[{value:"clique_discard",id:"clique_discard",level:3},{value:"clique_getBlockSigner",id:"clique_getblocksigner",level:3},{value:"clique_getSigners",id:"clique_getsigners",level:3},{value:"clique_getSignersAnnotated",id:"clique_getsignersannotated",level:3},{value:"clique_getSignersAtHash",id:"clique_getsignersathash",level:3},{value:"clique_getSignersAtHashAnnotated",id:"clique_getsignersathashannotated",level:3},{value:"clique_getSignersAtNumber",id:"clique_getsignersatnumber",level:3},{value:"clique_getSnapshot",id:"clique_getsnapshot",level:3},{value:"clique_getSnapshotAtHash",id:"clique_getsnapshotathash",level:3},{value:"clique_produceBlock",id:"clique_produceblock",level:3},{value:"clique_propose",id:"clique_propose",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"clique_discard",children:"clique_discard"}),"\n",(0,r.jsx)(n.p,{children:"This method drops a currently running proposal. The signer will not cast further votes (either for or against) the address."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_discard",\n "params": [signer]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getblocksigner",children:"clique_getBlockSigner"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getBlockSigner",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsigners",children:"clique_getSigners"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSigners",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersannotated",children:"clique_getSignersAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAnnotated",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathash",children:"clique_getSignersAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathashannotated",children:"clique_getSignersAtHashAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHashAnnotated",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersatnumber",children:"clique_getSignersAtNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by block number."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtNumber",\n "params": [number]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshot",children:"clique_getSnapshot"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a snapshot of all clique state at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshot",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshotathash",children:"clique_getSnapshotAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the state snapshot at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshotAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_produceblock",children:"clique_produceBlock"}),"\n",(0,r.jsx)(n.p,{children:"Forces Clique block producer to produce a new block"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_produceBlock",\n "params": [parentHash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_propose",children:"clique_propose"}),"\n",(0,r.jsxs)(n.p,{children:["Adds a new authorization proposal that the signer will attempt to push through. If the ",(0,r.jsx)(n.code,{children:"vote"})," parameter is true, the local signer votes for the given address to be included in the set of authorized signers. With ",(0,r.jsx)(n.code,{children:"vote"})," set to false, the signer is against the address."]}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"vote"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_propose",\n "params": [signer, vote]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>i});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var a=s(4848);function i(e){let{children:n,hidden:s,className:i}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,i),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>A});var r=s(6540),l=s(4164),a=s(3104),i=s(6347),t=s(205),c=s(7485),d=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const l=(0,i.W6)(),a=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(l.location.search);n.set(a,e),l.replace({...l.location,search:n.toString()})}),[a,l])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,a=h(e),[i,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[d,u]=p({queryString:s,groupId:l}),[x,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,a]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&a.set(e)}),[s,a])]}({groupId:l}),m=(()=>{const e=d??x;return j({value:e,tabValues:a})?e:null})();(0,t.A)((()=>{m&&c(m)}),[m]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),g(e)}),[u,g,a]),tabValues:a}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:i,tabValues:t}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),l=t[s].value;l!==r&&(d(n),i(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:a}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:u,onClick:o,...a,className:(0,l.A)("tabs__item",m.tabItem,a?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:a}=e;const i=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=i.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function q(e){const n=x(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",m.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(f,{...n,...e})]})}function A(e){const n=(0,g.A)();return(0,b.jsx)(q,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>t});var r=s(6540);const l={},a=r.createContext(l);function i(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:i(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8157],{7553:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>j,frontMatter:()=>t,metadata:()=>d,toc:()=>u});var r=s(4848),l=s(8453),a=s(1470),i=s(9365);const t={title:"clique namespace",sidebar_label:"clique",sidebar_position:1},c=void 0,d={id:"interacting/json-rpc-ns/clique",title:"clique namespace",description:"clique_discard",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/clique.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/clique",permalink:"/interacting/json-rpc-ns/clique",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/clique.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"clique namespace",sidebar_label:"clique",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"admin",permalink:"/interacting/json-rpc-ns/admin"},next:{title:"debug",permalink:"/interacting/json-rpc-ns/debug"}},o={},u=[{value:"clique_discard",id:"clique_discard",level:3},{value:"clique_getBlockSigner",id:"clique_getblocksigner",level:3},{value:"clique_getSigners",id:"clique_getsigners",level:3},{value:"clique_getSignersAnnotated",id:"clique_getsignersannotated",level:3},{value:"clique_getSignersAtHash",id:"clique_getsignersathash",level:3},{value:"clique_getSignersAtHashAnnotated",id:"clique_getsignersathashannotated",level:3},{value:"clique_getSignersAtNumber",id:"clique_getsignersatnumber",level:3},{value:"clique_getSnapshot",id:"clique_getsnapshot",level:3},{value:"clique_getSnapshotAtHash",id:"clique_getsnapshotathash",level:3},{value:"clique_produceBlock",id:"clique_produceblock",level:3},{value:"clique_propose",id:"clique_propose",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"clique_discard",children:"clique_discard"}),"\n",(0,r.jsx)(n.p,{children:"This method drops a currently running proposal. The signer will not cast further votes (either for or against) the address."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_discard",\n "params": [signer]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getblocksigner",children:"clique_getBlockSigner"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getBlockSigner",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsigners",children:"clique_getSigners"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSigners",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersannotated",children:"clique_getSignersAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAnnotated",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathash",children:"clique_getSignersAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersathashannotated",children:"clique_getSignersAtHashAnnotated"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtHashAnnotated",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsignersatnumber",children:"clique_getSignersAtNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the list of authorized signers at the specified block by block number."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSignersAtNumber",\n "params": [number]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshot",children:"clique_getSnapshot"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a snapshot of all clique state at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshot",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_getsnapshotathash",children:"clique_getSnapshotAtHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the state snapshot at a given block."}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_getSnapshotAtHash",\n "params": [hash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signerLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signers"}),": map of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_produceblock",children:"clique_produceBlock"}),"\n",(0,r.jsx)(n.p,{children:"Forces Clique block producer to produce a new block"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_produceBlock",\n "params": [parentHash]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"clique_propose",children:"clique_propose"}),"\n",(0,r.jsxs)(n.p,{children:["Adds a new authorization proposal that the signer will attempt to push through. If the ",(0,r.jsx)(n.code,{children:"vote"})," parameter is true, the local signer votes for the given address to be included in the set of authorized signers. With ",(0,r.jsx)(n.code,{children:"vote"})," set to false, the signer is against the address."]}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(i.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"signer"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"vote"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(i.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "clique_propose",\n "params": [signer, vote]\n }\'\n'})})}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>i});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var a=s(4848);function i(e){let{children:n,hidden:s,className:i}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,i),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>A});var r=s(6540),l=s(4164),a=s(3104),i=s(6347),t=s(205),c=s(7485),d=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const l=(0,i.W6)(),a=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(l.location.search);n.set(a,e),l.replace({...l.location,search:n.toString()})}),[a,l])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,a=h(e),[i,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[d,u]=p({queryString:s,groupId:l}),[x,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,a]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&a.set(e)}),[s,a])]}({groupId:l}),m=(()=>{const e=d??x;return j({value:e,tabValues:a})?e:null})();(0,t.A)((()=>{m&&c(m)}),[m]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),g(e)}),[u,g,a]),tabValues:a}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:i,tabValues:t}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),l=t[s].value;l!==r&&(d(n),i(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:a}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:u,onClick:o,...a,className:(0,l.A)("tabs__item",m.tabItem,a?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function f(e){let{lazy:n,children:s,selectedValue:a}=e;const i=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=i.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function q(e){const n=x(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",m.tabList),children:[(0,b.jsx)(v,{...n,...e}),(0,b.jsx)(f,{...n,...e})]})}function A(e){const n=(0,g.A)();return(0,b.jsx)(q,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>t});var r=s(6540);const l={},a=r.createContext(l);function i(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:i(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d2d2ec91.ee5b482f.js b/assets/js/d2d2ec91.346e96eb.js similarity index 99% rename from assets/js/d2d2ec91.ee5b482f.js rename to assets/js/d2d2ec91.346e96eb.js index 587cfb063..27cd8e14a 100644 --- a/assets/js/d2d2ec91.ee5b482f.js +++ b/assets/js/d2d2ec91.346e96eb.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1049],{3215:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});var i=s(4848),r=s(8453);const o={title:"Logs",sidebar_position:4},d=void 0,t={id:"fundamentals/logs",title:"Logs",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.27.0/fundamentals/logs.md",sourceDirName:"fundamentals",slug:"/fundamentals/logs",permalink:"/1.27.0/fundamentals/logs",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/logs.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"Logs",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Security",permalink:"/1.27.0/fundamentals/security"},next:{title:"Database",permalink:"/1.27.0/fundamentals/database"}},l={},c=[{value:"Log config file location",id:"log-config-file-location",level:2},{value:"Log config file syntax",id:"log-config-file-syntax",level:2},{value:"Config or CLI log rules",id:"config-or-cli-log-rules",level:2},{value:"Global logging override",id:"global-logging-override",level:2},{value:"JSON RPC logging level",id:"json-rpc-logging-level",level:2},{value:"Enterprise Logging",id:"enterprise-logging",level:2},{value:"Explaining Nethermind logs",id:"explaining-nethermind-logs",level:2}];function a(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-location",children:"Log config file location"}),"\n",(0,i.jsx)(n.p,{children:"Logging in Nethermind is done via NLog library that can be configured by editing the NLog.config file."}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Environment Type"}),(0,i.jsx)(n.th,{children:"NLog.config location"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Debug mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Debug\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Release mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Release\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"PPA"}),(0,i.jsx)(n.td,{children:"/usr/share/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Docker"}),(0,i.jsx)(n.td,{children:"/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub releases page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"dAppNode"}),(0,i.jsx)(n.td,{children:"? [to be documented]"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-syntax",children:"Log config file syntax"}),"\n",(0,i.jsxs)(n.p,{children:["Detailed NLog configuration options can be found\nhere: ",(0,i.jsx)(n.a,{href:"https://nlog-project.org/config/",children:"https://nlog-project.org/config/"})]}),"\n",(0,i.jsx)(n.h2,{id:"config-or-cli-log-rules",children:"Config or CLI log rules"}),"\n",(0,i.jsx)(n.p,{children:"Simple logging rules can be added through configuration file or command line argument."}),"\n",(0,i.jsxs)(n.p,{children:["For example this would add ",(0,i.jsx)(n.code,{children:"Trace"})," level logs to any logger under ",(0,i.jsx)(n.code,{children:"Synchronization"})," module and ",(0,i.jsx)(n.code,{children:"Debug"})," level logs\nfor ",(0,i.jsx)(n.code,{children:"BlockTree"})," from ",(0,i.jsx)(n.code,{children:"Blockchain"})," module:",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.code,{children:"--Init.LogRules Synchronization.*:Trace;Blockchain.BlockTree:Debug"})]}),"\n",(0,i.jsx)(n.h2,{id:"global-logging-override",children:"Global logging override"}),"\n",(0,i.jsx)(n.p,{children:"Additionally there are global logging override that you can use temporarily:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Command line override"}),(0,i.jsx)(n.th,{children:"Log level"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log TRACE"}),(0,i.jsx)(n.td,{children:"TRACE"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log DEBUG"}),(0,i.jsx)(n.td,{children:"DEBUG"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log INFO"}),(0,i.jsx)(n.td,{children:"INFO"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log WARN"}),(0,i.jsx)(n.td,{children:"WARN"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log ERROR"}),(0,i.jsx)(n.td,{children:"ERROR"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"json-rpc-logging-level",children:"JSON RPC logging level"}),"\n",(0,i.jsx)(n.p,{children:"This can be done by including these lines in the logging configuration file:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\n\n\n'})}),"\n",(0,i.jsx)(n.h2,{id:"enterprise-logging",children:"Enterprise Logging"}),"\n",(0,i.jsxs)(n.p,{children:["See how to configure Seq ",(0,i.jsx)(n.a,{href:"https://docs.nethermind.io/nethermind/enterprise/seq",children:"here"})]}),"\n",(0,i.jsx)(n.h2,{id:"explaining-nethermind-logs",children:"Explaining Nethermind logs"}),"\n",(0,i.jsxs)(n.p,{children:["You can check the supported operating systems, architectures and hardware requirements\nhere: ",(0,i.jsx)(n.a,{href:"/1.27.0/get-started/system-requirements",children:"system-requirements.md"})]}),"\n",(0,i.jsxs)(n.p,{children:["After the node starts, you will see some initial info about the node and then the sync will start. G\xf6rli fast sync uses\na ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync mode initially. The ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync picks some known ",(0,i.jsx)(n.code,{children:"pivot block"})," from the past and\ndownloads ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"}),", and ",(0,i.jsx)(n.code,{children:"receipts"})," downwards all the way to ",(0,i.jsx)(n.code,{children:"genesis block"}),". All blocks from 0 to\nthe ",(0,i.jsx)(n.code,{children:"pivot block"})," are showed as ",(0,i.jsx)(n.code,{children:"Old Headers"})," in the ",(0,i.jsx)(n.code,{children:"fast blocks sync"})," logs. The console display shows the number\ngrowing from 0 to pivot, but this is just to make the display more user-friendly."]}),"\n",(0,i.jsx)(n.p,{children:"You will see some information about the sync progress, like below:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Shows the number of already downloaded ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," under the name ",(0,i.jsx)(n.code,{children:"Downloaded"})," out of all to\nbe downloaded in the fast blocks stage."]}),"\n",(0,i.jsxs)(n.li,{children:["Shows the current queue of already downloaded ",(0,i.jsx)(n.code,{children:"blocks"}),", ",(0,i.jsx)(n.code,{children:"headers"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," waiting for being saved to the\ndatabase."]}),"\n",(0,i.jsx)(n.li,{children:"Shows the current download speed (blocks per second - bps)."}),"\n",(0,i.jsx)(n.li,{children:"Shows the average download speed (blocks per second - bps)."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast blocks sync logs",src:s(8973).A+"",width:"1219",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["When the fast blocks stage finishes, there will be some period of downloading blocks between the ",(0,i.jsx)(n.code,{children:"pivot"})," and\nthe",(0,i.jsx)(n.code,{children:"latest blocks"})," which will have some additional info:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Shows the last entry from the fast blocks stage."}),"\n",(0,i.jsx)(n.li,{children:"Shows the mode transition moment."}),"\n",(0,i.jsxs)(n.li,{children:["Displays the speed (in blocks per second) of all ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," at the same time."]}),"\n",(0,i.jsx)(n.li,{children:"Additional info will appear every 30000 blocks with information about the G\xf6rli epoch being stored."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli fast sync logs",src:s(245).A+"",width:"1528",height:"643"})}),"\n",(0,i.jsxs)(n.p,{children:["After the ",(0,i.jsx)(n.code,{children:"fast sync"})," part finished, the node will transition to the ",(0,i.jsx)(n.code,{children:"state sync stage"})," when the ",(0,i.jsx)(n.code,{children:"state trie"})," is being\ndownloaded. Much information is displayed about the progress, as this process may take a long time on mainnet (a few\nhours)."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Total elapsed time in ",(0,i.jsx)(n.code,{children:"state sync"})," is displayed."]}),"\n",(0,i.jsx)(n.li,{children:"The total percentage of downloaded DB size is displayed (on mainnet the sync finishes around 34GB in March 2020, on\nG\xf6rli around 800MB)."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"branches"})," stands for the percentage of downloaded branches."]}),"\n",(0,i.jsx)(n.li,{children:"Download speed in kilobytes per second is displayed."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"accounts"})," stands for the number of accounts data downloaded already."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"nodes"})," stands for the number of ",(0,i.jsx)(n.code,{children:"Patricia trie nodes"})," downloaded by the sync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"diagnostic"})," shows the time spent in the DB write / read access. The higher the value, the worse. It may get much\nworse if you restart the node during the sync process, as we need to recreate some caches then by reading data from\nthe DB."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli state sync logs",src:s(9378).A+"",width:"1528",height:"742"})}),"\n",(0,i.jsxs)(n.p,{children:["When the state sync is nearing completion, you may see a series of ",(0,i.jsx)(n.code,{children:"branch sync"})," information reloading many times from\n0% to nearly 100%. This is the node trying to retrieve the few remaining state nodes and progressing with the head block\nrapidly:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli branch sync logs",src:s(1548).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["At some point, the entire state is downloaded and the node enters the ",(0,i.jsx)(n.code,{children:"full sync"})," mode and will allow you to issue CLI /\nWeb3 queries and send / receive transactions\ud83e\udd73"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.code,{children:"root"})," is saved at the moment when the entire ",(0,i.jsx)(n.code,{children:"Patricia trie"})," is downloaded."]}),"\n",(0,i.jsxs)(n.li,{children:["We also clearly state that the node transitions to the ",(0,i.jsx)(n.code,{children:"full sync"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["When you see the block being processed, then you are in the ",(0,i.jsx)(n.code,{children:"full sync"})," and the newly arrived block is being\ncalculated."]}),"\n",(0,i.jsx)(n.li,{children:"Every two minutes you will see a summary of connected peers with their client version, IP address, highest synced\nblock, and data download speeds."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli full sync logs",src:s(3035).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsx)(n.p,{children:"Also, every now and then, a peer report will appear like below:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(4922).A+"",width:"2560",height:"1337"})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["First bracket is for Allocated contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsxs)(n.li,{children:["Second bracket is for Sleeping contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsx)(n.li,{children:"Third bracket contains Peer Info."}),"\n",(0,i.jsxs)(n.li,{children:["Fourth bracket is for Speeds as Follows:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Latency"}),"\n",(0,i.jsx)(n.li,{children:"Headers Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Bodies Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Receipts Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Node Data Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Snap Ranges Transfer"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},4922:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png"},1548:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png"},245:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png"},9378:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png"},3035:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png"},8973:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png"},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>t});var i=s(6540);const r={},o=i.createContext(r);function d(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1049],{3215:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});var i=s(4848),r=s(8453);const o={title:"Logs",sidebar_position:4},d=void 0,t={id:"fundamentals/logs",title:"Logs",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.27.0/fundamentals/logs.md",sourceDirName:"fundamentals",slug:"/fundamentals/logs",permalink:"/1.27.0/fundamentals/logs",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/logs.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"Logs",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Security",permalink:"/1.27.0/fundamentals/security"},next:{title:"Database",permalink:"/1.27.0/fundamentals/database"}},l={},c=[{value:"Log config file location",id:"log-config-file-location",level:2},{value:"Log config file syntax",id:"log-config-file-syntax",level:2},{value:"Config or CLI log rules",id:"config-or-cli-log-rules",level:2},{value:"Global logging override",id:"global-logging-override",level:2},{value:"JSON RPC logging level",id:"json-rpc-logging-level",level:2},{value:"Enterprise Logging",id:"enterprise-logging",level:2},{value:"Explaining Nethermind logs",id:"explaining-nethermind-logs",level:2}];function a(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-location",children:"Log config file location"}),"\n",(0,i.jsx)(n.p,{children:"Logging in Nethermind is done via NLog library that can be configured by editing the NLog.config file."}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Environment Type"}),(0,i.jsx)(n.th,{children:"NLog.config location"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Debug mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Debug\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"built from src - Release mode"}),(0,i.jsx)(n.td,{children:"src\\Nethermind\\Nethermind.Runner\\bin\\Release\\netcoreapp3.1\\NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"PPA"}),(0,i.jsx)(n.td,{children:"/usr/share/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Docker"}),(0,i.jsx)(n.td,{children:"/nethermind/NLog.config"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://downloads.nethermind.io",children:"downloads page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:["from ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"GitHub releases page"})]}),(0,i.jsx)(n.td,{children:"top level directory after unzipping the package"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"dAppNode"}),(0,i.jsx)(n.td,{children:"? [to be documented]"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"log-config-file-syntax",children:"Log config file syntax"}),"\n",(0,i.jsxs)(n.p,{children:["Detailed NLog configuration options can be found\nhere: ",(0,i.jsx)(n.a,{href:"https://nlog-project.org/config/",children:"https://nlog-project.org/config/"})]}),"\n",(0,i.jsx)(n.h2,{id:"config-or-cli-log-rules",children:"Config or CLI log rules"}),"\n",(0,i.jsx)(n.p,{children:"Simple logging rules can be added through configuration file or command line argument."}),"\n",(0,i.jsxs)(n.p,{children:["For example this would add ",(0,i.jsx)(n.code,{children:"Trace"})," level logs to any logger under ",(0,i.jsx)(n.code,{children:"Synchronization"})," module and ",(0,i.jsx)(n.code,{children:"Debug"})," level logs\nfor ",(0,i.jsx)(n.code,{children:"BlockTree"})," from ",(0,i.jsx)(n.code,{children:"Blockchain"})," module:",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.code,{children:"--Init.LogRules Synchronization.*:Trace;Blockchain.BlockTree:Debug"})]}),"\n",(0,i.jsx)(n.h2,{id:"global-logging-override",children:"Global logging override"}),"\n",(0,i.jsx)(n.p,{children:"Additionally there are global logging override that you can use temporarily:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Command line override"}),(0,i.jsx)(n.th,{children:"Log level"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log TRACE"}),(0,i.jsx)(n.td,{children:"TRACE"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log DEBUG"}),(0,i.jsx)(n.td,{children:"DEBUG"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log INFO"}),(0,i.jsx)(n.td,{children:"INFO"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log WARN"}),(0,i.jsx)(n.td,{children:"WARN"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"./Nethermind.Runner --config mainnet --log ERROR"}),(0,i.jsx)(n.td,{children:"ERROR"})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"json-rpc-logging-level",children:"JSON RPC logging level"}),"\n",(0,i.jsx)(n.p,{children:"This can be done by including these lines in the logging configuration file:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\n\n\n'})}),"\n",(0,i.jsx)(n.h2,{id:"enterprise-logging",children:"Enterprise Logging"}),"\n",(0,i.jsxs)(n.p,{children:["See how to configure Seq ",(0,i.jsx)(n.a,{href:"https://docs.nethermind.io/nethermind/enterprise/seq",children:"here"})]}),"\n",(0,i.jsx)(n.h2,{id:"explaining-nethermind-logs",children:"Explaining Nethermind logs"}),"\n",(0,i.jsxs)(n.p,{children:["You can check the supported operating systems, architectures and hardware requirements\nhere: ",(0,i.jsx)(n.a,{href:"/1.27.0/get-started/system-requirements",children:"system-requirements.md"})]}),"\n",(0,i.jsxs)(n.p,{children:["After the node starts, you will see some initial info about the node and then the sync will start. G\xf6rli fast sync uses\na ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync mode initially. The ",(0,i.jsx)(n.code,{children:"fast blocks"})," sync picks some known ",(0,i.jsx)(n.code,{children:"pivot block"})," from the past and\ndownloads ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"}),", and ",(0,i.jsx)(n.code,{children:"receipts"})," downwards all the way to ",(0,i.jsx)(n.code,{children:"genesis block"}),". All blocks from 0 to\nthe ",(0,i.jsx)(n.code,{children:"pivot block"})," are showed as ",(0,i.jsx)(n.code,{children:"Old Headers"})," in the ",(0,i.jsx)(n.code,{children:"fast blocks sync"})," logs. The console display shows the number\ngrowing from 0 to pivot, but this is just to make the display more user-friendly."]}),"\n",(0,i.jsx)(n.p,{children:"You will see some information about the sync progress, like below:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Shows the number of already downloaded ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," under the name ",(0,i.jsx)(n.code,{children:"Downloaded"})," out of all to\nbe downloaded in the fast blocks stage."]}),"\n",(0,i.jsxs)(n.li,{children:["Shows the current queue of already downloaded ",(0,i.jsx)(n.code,{children:"blocks"}),", ",(0,i.jsx)(n.code,{children:"headers"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," waiting for being saved to the\ndatabase."]}),"\n",(0,i.jsx)(n.li,{children:"Shows the current download speed (blocks per second - bps)."}),"\n",(0,i.jsx)(n.li,{children:"Shows the average download speed (blocks per second - bps)."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Fast blocks sync logs",src:s(8973).A+"",width:"1219",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["When the fast blocks stage finishes, there will be some period of downloading blocks between the ",(0,i.jsx)(n.code,{children:"pivot"})," and\nthe",(0,i.jsx)(n.code,{children:"latest blocks"})," which will have some additional info:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Shows the last entry from the fast blocks stage."}),"\n",(0,i.jsx)(n.li,{children:"Shows the mode transition moment."}),"\n",(0,i.jsxs)(n.li,{children:["Displays the speed (in blocks per second) of all ",(0,i.jsx)(n.code,{children:"headers"}),", ",(0,i.jsx)(n.code,{children:"bodies"})," and ",(0,i.jsx)(n.code,{children:"receipts"})," at the same time."]}),"\n",(0,i.jsx)(n.li,{children:"Additional info will appear every 30000 blocks with information about the G\xf6rli epoch being stored."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli fast sync logs",src:s(245).A+"",width:"1528",height:"643"})}),"\n",(0,i.jsxs)(n.p,{children:["After the ",(0,i.jsx)(n.code,{children:"fast sync"})," part finished, the node will transition to the ",(0,i.jsx)(n.code,{children:"state sync stage"})," when the ",(0,i.jsx)(n.code,{children:"state trie"})," is being\ndownloaded. Much information is displayed about the progress, as this process may take a long time on mainnet (a few\nhours)."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Total elapsed time in ",(0,i.jsx)(n.code,{children:"state sync"})," is displayed."]}),"\n",(0,i.jsx)(n.li,{children:"The total percentage of downloaded DB size is displayed (on mainnet the sync finishes around 34GB in March 2020, on\nG\xf6rli around 800MB)."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"branches"})," stands for the percentage of downloaded branches."]}),"\n",(0,i.jsx)(n.li,{children:"Download speed in kilobytes per second is displayed."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"accounts"})," stands for the number of accounts data downloaded already."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"nodes"})," stands for the number of ",(0,i.jsx)(n.code,{children:"Patricia trie nodes"})," downloaded by the sync process."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"diagnostic"})," shows the time spent in the DB write / read access. The higher the value, the worse. It may get much\nworse if you restart the node during the sync process, as we need to recreate some caches then by reading data from\nthe DB."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli state sync logs",src:s(9378).A+"",width:"1528",height:"742"})}),"\n",(0,i.jsxs)(n.p,{children:["When the state sync is nearing completion, you may see a series of ",(0,i.jsx)(n.code,{children:"branch sync"})," information reloading many times from\n0% to nearly 100%. This is the node trying to retrieve the few remaining state nodes and progressing with the head block\nrapidly:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli branch sync logs",src:s(1548).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsxs)(n.p,{children:["At some point, the entire state is downloaded and the node enters the ",(0,i.jsx)(n.code,{children:"full sync"})," mode and will allow you to issue CLI /\nWeb3 queries and send / receive transactions\ud83e\udd73"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.code,{children:"root"})," is saved at the moment when the entire ",(0,i.jsx)(n.code,{children:"Patricia trie"})," is downloaded."]}),"\n",(0,i.jsxs)(n.li,{children:["We also clearly state that the node transitions to the ",(0,i.jsx)(n.code,{children:"full sync"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["When you see the block being processed, then you are in the ",(0,i.jsx)(n.code,{children:"full sync"})," and the newly arrived block is being\ncalculated."]}),"\n",(0,i.jsx)(n.li,{children:"Every two minutes you will see a summary of connected peers with their client version, IP address, highest synced\nblock, and data download speeds."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"G\xf6rli full sync logs",src:s(3035).A+"",width:"1441",height:"572"})}),"\n",(0,i.jsx)(n.p,{children:"Also, every now and then, a peer report will appear like below:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(4922).A+"",width:"2560",height:"1337"})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["First bracket is for Allocated contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsxs)(n.li,{children:["Second bracket is for Sleeping contexts. It has possible values of ",(0,i.jsx)(n.code,{children:"H"})," for Headers, ",(0,i.jsx)(n.code,{children:"B"})," for Bodies, ",(0,i.jsx)(n.code,{children:"R"})," for\nReceipts, ",(0,i.jsx)(n.code,{children:"N"})," for State, ",(0,i.jsx)(n.code,{children:"S"})," for Snap, and ",(0,i.jsx)(n.code,{children:"W"})," for Witness."]}),"\n",(0,i.jsx)(n.li,{children:"Third bracket contains Peer Info."}),"\n",(0,i.jsxs)(n.li,{children:["Fourth bracket is for Speeds as Follows:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Latency"}),"\n",(0,i.jsx)(n.li,{children:"Headers Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Bodies Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Receipts Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Node Data Transfer"}),"\n",(0,i.jsx)(n.li,{children:"Snap Ranges Transfer"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},4922:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png"},1548:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png"},245:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png"},9378:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png"},3035:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png"},8973:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png"},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>t});var i=s(6540);const r={},o=i.createContext(r);function d(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d33c2fd3.0e90d453.js b/assets/js/d33c2fd3.2978aa1e.js similarity index 99% rename from assets/js/d33c2fd3.0e90d453.js rename to assets/js/d33c2fd3.2978aa1e.js index 1edf96f5c..9054c6b1a 100644 --- a/assets/js/d33c2fd3.0e90d453.js +++ b/assets/js/d33c2fd3.2978aa1e.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7261],{2413:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=s(4848),a=s(8453),l=s(1470),t=s(9365);const o={title:"personal namespace",sidebar_label:"personal",sidebar_position:6},c=void 0,i={id:"interacting/json-rpc-ns/personal",title:"personal namespace",description:"personal_importRawKey",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/personal.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/personal",permalink:"/1.25.4/interacting/json-rpc-ns/personal",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/personal.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:6,frontMatter:{title:"personal namespace",sidebar_label:"personal",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"parity",permalink:"/1.25.4/interacting/json-rpc-ns/parity"},next:{title:"proof",permalink:"/1.25.4/interacting/json-rpc-ns/proof"}},u={},d=[{value:"personal_importRawKey",id:"personal_importrawkey",level:3},{value:"personal_listAccounts",id:"personal_listaccounts",level:3},{value:"personal_lockAccount",id:"personal_lockaccount",level:3},{value:"personal_newAccount",id:"personal_newaccount",level:3},{value:"personal_unlockAccount",id:"personal_unlockaccount",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"personal_importrawkey",children:"personal_importRawKey"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"keyData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_importRawKey",\n "params": [keyData, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_listaccounts",children:"personal_listAccounts"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_listAccounts",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_lockaccount",children:"personal_lockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_lockAccount",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_newaccount",children:"personal_newAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_newAccount",\n "params": [passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_unlockaccount",children:"personal_unlockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_unlockAccount",\n "params": [address, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const a={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),a=s(4164),l=s(3104),t=s(6347),o=s(205),c=s(7485),i=s(1682),u=s(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:a}}=e;return{value:n,label:s,attributes:r,default:a}}))}(s);return function(e){const n=(0,i.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const a=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(a.location.search);n.set(l,e),a.replace({...a.location,search:n.toString()})}),[l,a])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:a}=e,l=p(e),[t,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[i,d]=j({queryString:s,groupId:a}),[m,x]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,l]=(0,u.Dv)(s);return[a,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:a}),b=(()=>{const e=i??m;return h({value:e,tabValues:l})?e:null})();(0,o.A)((()=>{b&&c(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),x(e)}),[d,x,l]),tabValues:l}}var x=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:o}=e;const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),u=e=>{const n=e.currentTarget,s=c.indexOf(n),a=o[s].value;a!==r&&(i(n),t(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":s},n),children:o.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:d,onClick:u,...l,className:(0,a.A)("tabs__item",b.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function g(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function A(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(g,{...n,...e})]})}function _(e){const n=(0,x.A)();return(0,f.jsx)(A,{...e,children:d(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>o});var r=s(6540);const a={},l=r.createContext(a);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7261],{2413:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=s(4848),a=s(8453),l=s(1470),t=s(9365);const o={title:"personal namespace",sidebar_label:"personal",sidebar_position:6},c=void 0,i={id:"interacting/json-rpc-ns/personal",title:"personal namespace",description:"personal_importRawKey",source:"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/personal.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/personal",permalink:"/1.25.4/interacting/json-rpc-ns/personal",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/interacting/json-rpc-ns/personal.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:6,frontMatter:{title:"personal namespace",sidebar_label:"personal",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"parity",permalink:"/1.25.4/interacting/json-rpc-ns/parity"},next:{title:"proof",permalink:"/1.25.4/interacting/json-rpc-ns/proof"}},u={},d=[{value:"personal_importRawKey",id:"personal_importrawkey",level:3},{value:"personal_listAccounts",id:"personal_listaccounts",level:3},{value:"personal_lockAccount",id:"personal_lockaccount",level:3},{value:"personal_newAccount",id:"personal_newaccount",level:3},{value:"personal_unlockAccount",id:"personal_unlockaccount",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"personal_importrawkey",children:"personal_importRawKey"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"keyData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_importRawKey",\n "params": [keyData, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_listaccounts",children:"personal_listAccounts"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_listAccounts",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_lockaccount",children:"personal_lockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_lockAccount",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_newaccount",children:"personal_newAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_newAccount",\n "params": [passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_unlockaccount",children:"personal_unlockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_unlockAccount",\n "params": [address, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const a={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),a=s(4164),l=s(3104),t=s(6347),o=s(205),c=s(7485),i=s(1682),u=s(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:a}}=e;return{value:n,label:s,attributes:r,default:a}}))}(s);return function(e){const n=(0,i.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const a=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(a.location.search);n.set(l,e),a.replace({...a.location,search:n.toString()})}),[l,a])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:a}=e,l=p(e),[t,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[i,d]=j({queryString:s,groupId:a}),[m,x]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,l]=(0,u.Dv)(s);return[a,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:a}),b=(()=>{const e=i??m;return h({value:e,tabValues:l})?e:null})();(0,o.A)((()=>{b&&c(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),x(e)}),[d,x,l]),tabValues:l}}var x=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:o}=e;const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),u=e=>{const n=e.currentTarget,s=c.indexOf(n),a=o[s].value;a!==r&&(i(n),t(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":s},n),children:o.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:d,onClick:u,...l,className:(0,a.A)("tabs__item",b.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function g(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function A(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(g,{...n,...e})]})}function _(e){const n=(0,x.A)();return(0,f.jsx)(A,{...e,children:d(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>o});var r=s(6540);const a={},l=r.createContext(a);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d35bfd19.04ba51c7.js b/assets/js/d35bfd19.ac943fbc.js similarity index 99% rename from assets/js/d35bfd19.04ba51c7.js rename to assets/js/d35bfd19.ac943fbc.js index 446ad1a96..97c6ded98 100644 --- a/assets/js/d35bfd19.04ba51c7.js +++ b/assets/js/d35bfd19.ac943fbc.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6941],{3190:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>t});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"trace namespace",sidebar_label:"trace",sidebar_position:8},h=void 0,x={id:"interacting/json-rpc-ns/trace",title:"trace namespace",description:"trace_block",source:"@site/docs/interacting/json-rpc-ns/trace.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/trace",permalink:"/next/interacting/json-rpc-ns/trace",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/trace.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"trace namespace",sidebar_label:"trace",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"proof",permalink:"/next/interacting/json-rpc-ns/proof"},next:{title:"txpool",permalink:"/next/interacting/json-rpc-ns/txpool"}},j={},t=[{value:"trace_block",id:"trace_block",level:3},{value:"trace_call",id:"trace_call",level:3},{value:"trace_filter",id:"trace_filter",level:3},{value:"trace_rawTransaction",id:"trace_rawtransaction",level:3},{value:"trace_replayBlockTransactions",id:"trace_replayblocktransactions",level:3},{value:"trace_replayTransaction",id:"trace_replaytransaction",level:3},{value:"trace_transaction",id:"trace_transaction",level:3}];function a(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"trace_block",children:"trace_block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"numberOrTag"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_block",\n "params": [numberOrTag]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_call",children:"trace_call"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"call"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_call",\n "params": [call, traceTypes, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_filter",children:"trace_filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceFilterForRpc"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"count"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_filter",\n "params": [traceFilterForRpc]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_rawtransaction",children:"trace_rawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Traces a call to eth_sendRawTransaction without making the call, returning the traces"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_rawTransaction",\n "params": [data, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replayblocktransactions",children:"trace_replayBlockTransactions"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayBlockTransactions",\n "params": [blockParameter, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replaytransaction",children:"trace_replayTransaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayTransaction",\n "params": [txHash, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_transaction",children:"trace_transaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_transaction",\n "params": [txHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>T});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),j=s(679);function t(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function a(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function g(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=a(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,t]=m({queryString:s,groupId:i}),[g,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,j.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??g;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),t(e),u(e)}),[t,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},t=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:t,onClick:j,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=g(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function T(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:t(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6941],{3190:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>t});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"trace namespace",sidebar_label:"trace",sidebar_position:8},h=void 0,x={id:"interacting/json-rpc-ns/trace",title:"trace namespace",description:"trace_block",source:"@site/docs/interacting/json-rpc-ns/trace.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/trace",permalink:"/next/interacting/json-rpc-ns/trace",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/trace.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"trace namespace",sidebar_label:"trace",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"proof",permalink:"/next/interacting/json-rpc-ns/proof"},next:{title:"txpool",permalink:"/next/interacting/json-rpc-ns/txpool"}},j={},t=[{value:"trace_block",id:"trace_block",level:3},{value:"trace_call",id:"trace_call",level:3},{value:"trace_filter",id:"trace_filter",level:3},{value:"trace_rawTransaction",id:"trace_rawtransaction",level:3},{value:"trace_replayBlockTransactions",id:"trace_replayblocktransactions",level:3},{value:"trace_replayTransaction",id:"trace_replaytransaction",level:3},{value:"trace_transaction",id:"trace_transaction",level:3}];function a(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"trace_block",children:"trace_block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"numberOrTag"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_block",\n "params": [numberOrTag]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_call",children:"trace_call"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"call"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_call",\n "params": [call, traceTypes, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_filter",children:"trace_filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceFilterForRpc"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"count"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_filter",\n "params": [traceFilterForRpc]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_rawtransaction",children:"trace_rawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Traces a call to eth_sendRawTransaction without making the call, returning the traces"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_rawTransaction",\n "params": [data, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replayblocktransactions",children:"trace_replayBlockTransactions"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayBlockTransactions",\n "params": [blockParameter, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replaytransaction",children:"trace_replayTransaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayTransaction",\n "params": [txHash, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_transaction",children:"trace_transaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_transaction",\n "params": [txHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>T});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),j=s(679);function t(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function a(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function g(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=a(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,t]=m({queryString:s,groupId:i}),[g,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,j.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??g;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),t(e),u(e)}),[t,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},t=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:t,onClick:j,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=g(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function T(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:t(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d363997f.22af962a.js b/assets/js/d363997f.0afcfcd3.js similarity index 98% rename from assets/js/d363997f.22af962a.js rename to assets/js/d363997f.0afcfcd3.js index 52b8b0a12..ab3396fea 100644 --- a/assets/js/d363997f.22af962a.js +++ b/assets/js/d363997f.0afcfcd3.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3376],{6133:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var i=n(4848),r=n(8453);const o={title:"Security",sidebar_position:3},s=void 0,c={id:"fundamentals/security",title:"Security",description:"General security considerations",source:"@site/versioned_docs/version-1.26.0/fundamentals/security.md",sourceDirName:"fundamentals",slug:"/fundamentals/security",permalink:"/1.26.0/fundamentals/security",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/security.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"Security",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Sync",permalink:"/1.26.0/fundamentals/sync"},next:{title:"Logs",permalink:"/1.26.0/fundamentals/logs"}},a={},d=[{value:"General security considerations",id:"general-security-considerations",level:2},{value:"Networking security",id:"networking-security",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{id:"general-security-considerations",children:"General security considerations"}),"\n",(0,i.jsx)(t.admonition,{type:"tip",children:(0,i.jsx)(t.p,{children:"Although Nethermind is thoroughly tested, the more popular it becomes, the more likely it will be a target of client-specific attacks. Generally, we recommend you always consider running backup client nodes from another developer for any critical operations."})}),"\n",(0,i.jsx)(t.admonition,{type:"warning",children:(0,i.jsxs)(t.p,{children:["Enable only the ",(0,i.jsx)(t.a,{href:"/1.26.0/interacting/json-rpc-server",children:"JSON-RPC namespaces"})," you absolutely need. This is particularly important for namespaces like ",(0,i.jsx)(t.code,{children:"admin"})," and ",(0,i.jsx)(t.code,{children:"debug"}),", as they can be exploited to get elevated access to your node or for DOS attacks."]})}),"\n",(0,i.jsx)(t.admonition,{type:"danger",children:(0,i.jsx)(t.p,{children:"The private key the node id is derived from is stored on the disk as plaintext."})}),"\n",(0,i.jsx)(t.h2,{id:"networking-security",children:"Networking security"}),"\n",(0,i.jsxs)(t.p,{children:["These rules are ",(0,i.jsx)(t.strong,{children:"highly recommended"})," to be applied to your firewall:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Block all traffic to the port ",(0,i.jsx)(t.code,{children:"8545"}),", or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the TCP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port is defined for P2P communication. This allows the node to connect to peers."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the UDP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port ia defined for P2P communication. This allows node discovery."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var i=n(6540);const r={},o=i.createContext(r);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3376],{6133:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var i=n(4848),r=n(8453);const o={title:"Security",sidebar_position:3},s=void 0,c={id:"fundamentals/security",title:"Security",description:"General security considerations",source:"@site/versioned_docs/version-1.26.0/fundamentals/security.md",sourceDirName:"fundamentals",slug:"/fundamentals/security",permalink:"/1.26.0/fundamentals/security",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/security.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"Security",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Sync",permalink:"/1.26.0/fundamentals/sync"},next:{title:"Logs",permalink:"/1.26.0/fundamentals/logs"}},a={},d=[{value:"General security considerations",id:"general-security-considerations",level:2},{value:"Networking security",id:"networking-security",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{id:"general-security-considerations",children:"General security considerations"}),"\n",(0,i.jsx)(t.admonition,{type:"tip",children:(0,i.jsx)(t.p,{children:"Although Nethermind is thoroughly tested, the more popular it becomes, the more likely it will be a target of client-specific attacks. Generally, we recommend you always consider running backup client nodes from another developer for any critical operations."})}),"\n",(0,i.jsx)(t.admonition,{type:"warning",children:(0,i.jsxs)(t.p,{children:["Enable only the ",(0,i.jsx)(t.a,{href:"/1.26.0/interacting/json-rpc-server",children:"JSON-RPC namespaces"})," you absolutely need. This is particularly important for namespaces like ",(0,i.jsx)(t.code,{children:"admin"})," and ",(0,i.jsx)(t.code,{children:"debug"}),", as they can be exploited to get elevated access to your node or for DOS attacks."]})}),"\n",(0,i.jsx)(t.admonition,{type:"danger",children:(0,i.jsx)(t.p,{children:"The private key the node id is derived from is stored on the disk as plaintext."})}),"\n",(0,i.jsx)(t.h2,{id:"networking-security",children:"Networking security"}),"\n",(0,i.jsxs)(t.p,{children:["These rules are ",(0,i.jsx)(t.strong,{children:"highly recommended"})," to be applied to your firewall:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Block all traffic to the port ",(0,i.jsx)(t.code,{children:"8545"}),", or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the TCP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port is defined for P2P communication. This allows the node to connect to peers."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the UDP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port ia defined for P2P communication. This allows node discovery."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var i=n(6540);const r={},o=i.createContext(r);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d4222919.8f77430a.js b/assets/js/d4222919.c57c5c86.js similarity index 99% rename from assets/js/d4222919.8f77430a.js rename to assets/js/d4222919.c57c5c86.js index a9edfb5ea..16479ad30 100644 --- a/assets/js/d4222919.8f77430a.js +++ b/assets/js/d4222919.c57c5c86.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4518],{6109:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var r=n(4848),s=n(8453),a=n(1470),o=n(9365);const i={title:"Troubleshooting",sidebar_position:8},l=void 0,c={id:"troubleshooting",title:"Troubleshooting",description:"File descriptor limits",source:"@site/versioned_docs/version-1.25.4/troubleshooting.md",sourceDirName:".",slug:"/troubleshooting",permalink:"/1.25.4/troubleshooting",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/troubleshooting.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"Troubleshooting",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"FAQ",permalink:"/1.25.4/faq"}},u={},d=[{value:"File descriptor limits",id:"file-descriptor-limits",level:2},{value:"Database corruption issues",id:"database-corruption-issues",level:2},{value:"Issues with lock files",id:"issues-with-lock-files",level:2},{value:"Block checksum mismatch",id:"block-checksum-mismatch",level:2}];function h(e){const t={a:"a",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"file-descriptor-limits",children:"File descriptor limits"}),"\n",(0,r.jsx)(t.p,{children:'In some cases, file descriptor limits may cause errors like "Too many open files". To solve that, see the instructions for your platform below.'}),"\n",(0,r.jsxs)(a.A,{groupId:"os",children:[(0,r.jsxs)(o.A,{value:"linux",label:"Linux",children:[(0,r.jsxs)(t.p,{children:["To increase the limits for the user running Nethermind (given the process name of ",(0,r.jsx)(t.code,{children:"nethermind"}),"), run:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:'sudo echo "nethermind soft nofile 100000" > /etc/security/limits.d/nethermind.conf\nsudo echo "nethermind hard nofile 100000" >> /etc/security/limits.d/nethermind.conf\n'})})]}),(0,r.jsxs)(o.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(t.p,{children:"To increase the limits, run:"}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"ulimit -n 10000\n"})}),(0,r.jsxs)(t.p,{children:["If you run into issues with the above command, see the ",(0,r.jsx)(t.a,{href:"https://developer.apple.com/forums/thread/735798?answerId=762679022#762679022",children:"workaround"}),"."]}),(0,r.jsxs)(t.p,{children:["Note that the changes above are temporary and will be reset after the system reboot. To make them permanent, you can add them to your ",(0,r.jsx)(t.code,{children:"~/.bashrc"})," or ",(0,r.jsx)(t.code,{children:"~/.bash_profile"})," shell configuration file."]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"database-corruption-issues",children:"Database corruption issues"}),"\n",(0,r.jsx)(t.p,{children:"Database corruption is one of the issues that happen now and then; it has many possible causes among them:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Hardware failures: disk failures, memory errors, hardware overheating, etc."}),"\n",(0,r.jsx)(t.li,{children:"Power cuts and abrupt shutdowns"}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["There's no shortcut in such situations, and ",(0,r.jsx)(t.a,{href:"/1.25.4/fundamentals/sync#resync-a-node-from-scratch",children:"resyncing Nethermind from scratch"})," is the recommended remedy."]}),"\n",(0,r.jsx)(t.h2,{id:"issues-with-lock-files",children:"Issues with lock files"}),"\n",(0,r.jsx)(t.p,{children:"If Nethermind complains about the lock files, it perhaps because of one of the following:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Another Nethermind process is running using the same database"}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The database has not been appropriately closed on the last run.",(0,r.jsx)(t.br,{}),"\n","In this case, run the following command from the Nethermind database directory:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"find . -type f -name 'LOCK' -delete\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"block-checksum-mismatch",children:"Block checksum mismatch"}),"\n",(0,r.jsx)(t.p,{children:"Sometimes Nethermind may fail with an error similar the following:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"Corruption: block checksum mismatch: expected 2087346143, got 2983326672 in... \n"})}),"\n",(0,r.jsxs)(t.p,{children:["This tends to happen on XFS file systems under very high memory pressure. The issue can be mitigated by using the ",(0,r.jsx)(t.code,{children:"--Db.UseDirectIoForFlushAndCompactions true"})," option although at the cost of performance."]}),"\n",(0,r.jsx)(t.p,{children:"However, quite often, this is because of memory module issues."})]})}function m(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>o});n(6540);var r=n(4164);const s={tabItem:"tabItem_Ymn6"};var a=n(4848);function o(e){let{children:t,hidden:n,className:o}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,o),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(4164),a=n(3104),o=n(6347),i=n(205),l=n(7485),c=n(1682),u=n(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const s=(0,o.W6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(s.location.search);t.set(a,e),s.replace({...s.location,search:t.toString()})}),[a,s])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,a=h(e),[o,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:a}))),[c,d]=p({queryString:n,groupId:s}),[f,b]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,a]=(0,u.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:s}),v=(()=>{const e=c??f;return m({value:e,tabValues:a})?e:null})();(0,i.A)((()=>{v&&l(v)}),[v]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=n(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=n(4848);function g(e){let{className:t,block:n,selectedValue:r,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const t=e.currentTarget,n=l.indexOf(t),s=i[n].value;s!==r&&(c(t),o(s))},d=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:i.map((e=>{let{value:t,label:n,attributes:a}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>l.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",v.tabItem,a?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function j(e){let{lazy:t,children:n,selectedValue:a}=e;const o=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:o.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a})))})}function y(e){const t=f(e);return(0,x.jsxs)("div",{className:(0,s.A)("tabs-container",v.tabList),children:[(0,x.jsx)(g,{...t,...e}),(0,x.jsx)(j,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,x.jsx)(y,{...e,children:d(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>i});var r=n(6540);const s={},a=r.createContext(s);function o(e){const t=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4518],{6109:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var r=n(4848),s=n(8453),a=n(1470),o=n(9365);const i={title:"Troubleshooting",sidebar_position:8},l=void 0,c={id:"troubleshooting",title:"Troubleshooting",description:"File descriptor limits",source:"@site/versioned_docs/version-1.25.4/troubleshooting.md",sourceDirName:".",slug:"/troubleshooting",permalink:"/1.25.4/troubleshooting",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/troubleshooting.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"Troubleshooting",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"FAQ",permalink:"/1.25.4/faq"}},u={},d=[{value:"File descriptor limits",id:"file-descriptor-limits",level:2},{value:"Database corruption issues",id:"database-corruption-issues",level:2},{value:"Issues with lock files",id:"issues-with-lock-files",level:2},{value:"Block checksum mismatch",id:"block-checksum-mismatch",level:2}];function h(e){const t={a:"a",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"file-descriptor-limits",children:"File descriptor limits"}),"\n",(0,r.jsx)(t.p,{children:'In some cases, file descriptor limits may cause errors like "Too many open files". To solve that, see the instructions for your platform below.'}),"\n",(0,r.jsxs)(a.A,{groupId:"os",children:[(0,r.jsxs)(o.A,{value:"linux",label:"Linux",children:[(0,r.jsxs)(t.p,{children:["To increase the limits for the user running Nethermind (given the process name of ",(0,r.jsx)(t.code,{children:"nethermind"}),"), run:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:'sudo echo "nethermind soft nofile 100000" > /etc/security/limits.d/nethermind.conf\nsudo echo "nethermind hard nofile 100000" >> /etc/security/limits.d/nethermind.conf\n'})})]}),(0,r.jsxs)(o.A,{value:"macos",label:"macOS",children:[(0,r.jsx)(t.p,{children:"To increase the limits, run:"}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"ulimit -n 10000\n"})}),(0,r.jsxs)(t.p,{children:["If you run into issues with the above command, see the ",(0,r.jsx)(t.a,{href:"https://developer.apple.com/forums/thread/735798?answerId=762679022#762679022",children:"workaround"}),"."]}),(0,r.jsxs)(t.p,{children:["Note that the changes above are temporary and will be reset after the system reboot. To make them permanent, you can add them to your ",(0,r.jsx)(t.code,{children:"~/.bashrc"})," or ",(0,r.jsx)(t.code,{children:"~/.bash_profile"})," shell configuration file."]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"database-corruption-issues",children:"Database corruption issues"}),"\n",(0,r.jsx)(t.p,{children:"Database corruption is one of the issues that happen now and then; it has many possible causes among them:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Hardware failures: disk failures, memory errors, hardware overheating, etc."}),"\n",(0,r.jsx)(t.li,{children:"Power cuts and abrupt shutdowns"}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["There's no shortcut in such situations, and ",(0,r.jsx)(t.a,{href:"/1.25.4/fundamentals/sync#resync-a-node-from-scratch",children:"resyncing Nethermind from scratch"})," is the recommended remedy."]}),"\n",(0,r.jsx)(t.h2,{id:"issues-with-lock-files",children:"Issues with lock files"}),"\n",(0,r.jsx)(t.p,{children:"If Nethermind complains about the lock files, it perhaps because of one of the following:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Another Nethermind process is running using the same database"}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The database has not been appropriately closed on the last run.",(0,r.jsx)(t.br,{}),"\n","In this case, run the following command from the Nethermind database directory:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"find . -type f -name 'LOCK' -delete\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"block-checksum-mismatch",children:"Block checksum mismatch"}),"\n",(0,r.jsx)(t.p,{children:"Sometimes Nethermind may fail with an error similar the following:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"Corruption: block checksum mismatch: expected 2087346143, got 2983326672 in... \n"})}),"\n",(0,r.jsxs)(t.p,{children:["This tends to happen on XFS file systems under very high memory pressure. The issue can be mitigated by using the ",(0,r.jsx)(t.code,{children:"--Db.UseDirectIoForFlushAndCompactions true"})," option although at the cost of performance."]}),"\n",(0,r.jsx)(t.p,{children:"However, quite often, this is because of memory module issues."})]})}function m(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>o});n(6540);var r=n(4164);const s={tabItem:"tabItem_Ymn6"};var a=n(4848);function o(e){let{children:t,hidden:n,className:o}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,o),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(4164),a=n(3104),o=n(6347),i=n(205),l=n(7485),c=n(1682),u=n(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const s=(0,o.W6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(s.location.search);t.set(a,e),s.replace({...s.location,search:t.toString()})}),[a,s])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,a=h(e),[o,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:a}))),[c,d]=p({queryString:n,groupId:s}),[f,b]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,a]=(0,u.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:s}),v=(()=>{const e=c??f;return m({value:e,tabValues:a})?e:null})();(0,i.A)((()=>{v&&l(v)}),[v]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=n(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=n(4848);function g(e){let{className:t,block:n,selectedValue:r,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const t=e.currentTarget,n=l.indexOf(t),s=i[n].value;s!==r&&(c(t),o(s))},d=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:i.map((e=>{let{value:t,label:n,attributes:a}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>l.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",v.tabItem,a?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function j(e){let{lazy:t,children:n,selectedValue:a}=e;const o=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:o.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a})))})}function y(e){const t=f(e);return(0,x.jsxs)("div",{className:(0,s.A)("tabs-container",v.tabList),children:[(0,x.jsx)(g,{...t,...e}),(0,x.jsx)(j,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,x.jsx)(y,{...e,children:d(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>i});var r=n(6540);const s={},a=r.createContext(s);function o(e){const t=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d4b7677e.1da77e1f.js b/assets/js/d4b7677e.7152343a.js similarity index 99% rename from assets/js/d4b7677e.1da77e1f.js rename to assets/js/d4b7677e.7152343a.js index 3340ede5e..6778f547e 100644 --- a/assets/js/d4b7677e.1da77e1f.js +++ b/assets/js/d4b7677e.7152343a.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2187],{428:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var a=t(4848),s=t(8453),r=t(1470),l=t(9365);const i={title:"Health check",sidebar_position:1},o=void 0,c={id:"monitoring/health-check",title:"Health check",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.28.0/monitoring/health-check.md",sourceDirName:"monitoring",slug:"/monitoring/health-check",permalink:"/1.28.0/monitoring/health-check",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/monitoring/health-check.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Health check",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"dotnet-counters",permalink:"/1.28.0/monitoring/metrics/dotnet-counters"},next:{title:"Validators",permalink:"/1.28.0/validators/"}},h={},d=[{value:"Enabling and configuring Health Checks",id:"enabling-and-configuring-health-checks",level:2},{value:"Enabling Health Checks without UI ",id:"enabling-health-checks-without-ui-",level:4},{value:"Enabling Health Checks UI",id:"enabling-health-checks-ui",level:4},{value:"Enabling Slack reports",id:"enabling-slack-reports",level:4},{value:"Consensus Client health",id:"consensus-client-health",level:4},{value:"health_nodeStatus",id:"health_nodestatus",level:4},{value:"Monitoring available storage space",id:"monitoring-available-storage-space",level:4},{value:"HealthChecks for producing and processing blocks",id:"healthchecks-for-producing-and-processing-blocks",level:4}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h4:"h4",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n","\n",(0,a.jsxs)(n.p,{children:["Nethermind has a pre-packed ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"})," plugin that allows you to monitor your Nethermind node better.\nIt leverages the power\nof ",(0,a.jsx)(n.a,{href:"https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks",children:"AspNetCore.Diagnostics.HealthChecks"}),". It simply adds\nan",(0,a.jsx)(n.code,{children:"/health"}),"endpoint to the JSON RPC service which can be used to check the Nethermind's ",(0,a.jsxs)(n.em,{children:[(0,a.jsx)(n.strong,{children:"liveness"})," -"]})," verify if the\nnode is ",(0,a.jsx)(n.strong,{children:"synced"})," and has ",(0,a.jsx)(n.strong,{children:"at least one peer."})," Useful when you don't want to query the node before it's able to\nprovide you data available only for fully synced nodes like ",(0,a.jsx)(n.code,{children:"eth_getBalance"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"}),"plugin will be automatically loaded on Nethermind start."]}),"\n",(0,a.jsx)(n.h2,{id:"enabling-and-configuring-health-checks",children:"Enabling and configuring Health Checks"}),"\n",(0,a.jsxs)(n.p,{children:["The health checks need to be additionally enabled which can be done either through ",(0,a.jsx)(n.code,{children:"--HealthChecks.*"})," flags or by adding\na ",(0,a.jsx)(n.code,{children:'"HealthChecks"'})," section to the config file. "]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:' "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "WebhooksUri": "https://slack.webhook",\n "UIEnabled": true,\n "PollingInterval": 10,\n "Slug": "/api/health"\n }\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"danger",children:(0,a.jsxs)(n.p,{children:["JSON RPC Service needs to be enabled in order for health checks to work ",(0,a.jsx)(n.code,{children:"--JsonRpc.Enabled true"})]})}),"\n",(0,a.jsxs)(n.p,{children:["Each configuration option is described ",(0,a.jsx)(n.a,{href:"../fundamentals/configuration#healthchecks",children:"here"}),"."]}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-without-ui-",children:"Enabling Health Checks without UI "}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"health"})," endpoint is now available at ",(0,a.jsx)(n.code,{children:"localhost:8545/health"})," by default (if your ",(0,a.jsx)(n.code,{children:"--JsonRpc.Port"})," is ",(0,a.jsx)(n.code,{children:"8545"}),").\nThe ",(0,a.jsx)(n.code,{children:"health"})," endpoint can be configured via ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug"})," parameter e.g. ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug /api/health"}),". We\ncan if it is working with ",(0,a.jsx)(n.code,{children:"curl"}),":"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'// Request\ncurl localhost:8545/health\n\n// Example of response for Unhealthy node\n{"status":"Unhealthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node has 0 peers connected","duration":"00:00:00.0003881","status":"Unhealthy","tags":[]}}}\n\n// Example of response for Healthy node\n{"status":"Healthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node is now fully synced with a network, number of peers: 99","duration":"00:00:00.0003881","status":"Healthy","tags":[]}}}\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Unhealthy"})," returns ",(0,a.jsx)(n.strong,{children:"503"})," (Service Unavailable) status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Healthy"})," returns ",(0,a.jsx)(n.strong,{children:"200"})," status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-ui",children:"Enabling Health Checks UI"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true --HealthChecks.UIEnabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Enabling UI will expose an additional endpoint ",(0,a.jsx)(n.code,{children:"/healthchecks-ui"}),"and will allow seeing node's health on a nice UI. To\nview the UI simply go to ",(0,a.jsx)(n.code,{children:"http://localhost:8545/healthchecks-ui"}),"."]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy status reported on UI page",src:t(5218).A+"",width:"1187",height:"418"})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-slack-reports",children:"Enabling Slack reports"}),"\n",(0,a.jsxs)(n.p,{children:["We may also add Slack Webhook endpoint to which our node's health will be reported. We need to pass\nthe ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled true"})," and add the ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksUri"})," which can be found in your Slack app\nconfiguration."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.Enabled true --HealthChecks.UIEnabled true --HealthChecks.WebhooksEnabled true --HealthChecks.WebhooksUri https://hooks.slack.com/\n"})}),"\n",(0,a.jsxs)(n.p,{children:["If your node will be ",(0,a.jsx)(n.strong,{children:"Unhealthy"})," you should receive a message similar to this:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy",src:t(9953).A+"",width:"690",height:"240"})}),"\n",(0,a.jsxs)(n.p,{children:["with description of why the node is unhealthy, node's name and information about the machine on which the node is\nrunning.",(0,a.jsx)(n.br,{}),"\n","When it becomes ",(0,a.jsx)(n.strong,{children:"Healthy"})," (",(0,a.jsx)(n.strong,{children:"synced"})," and with ",(0,a.jsx)(n.strong,{children:"peers"}),") you should receive:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Healthy",src:t(5725).A+"",width:"492",height:"118"})}),"\n",(0,a.jsx)(n.h4,{id:"consensus-client-health",children:"Consensus Client health"}),"\n",(0,a.jsxs)(n.p,{children:["This check verifies if the client receives messages from the CL. If you see this warning in your logs, it means that\nthere is something wrong with CL/Nethermind communication. Check more about setting up Nethermind and\nCL ",(0,a.jsx)(n.a,{href:"/1.28.0/get-started/consensus-clients",children:"here"}),"."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"No incoming messages from Consensus Client. Consensus Client is required to sync the node. Please make sure that it's working properly.\n"})}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"Note that Consensus Client is required for normal node operations."})}),"\n",(0,a.jsx)(n.h4,{id:"health_nodestatus",children:"health_nodeStatus"}),"\n",(0,a.jsxs)(n.p,{children:["Health checks via JSON RPC requests were introduced in version v.1.10.18. For that, ",(0,a.jsx)(n.code,{children:"HealthChecks.Enabled"})," should be\nset to true."]}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsx)(l.A,{value:"request",label:"Request",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{ "jsonrpc":"2.0","method":"health_nodeStatus","params":[],"id":67 }\n'})})}),(0,a.jsx)(l.A,{label:"Response",value:"response",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{\n "jsonrpc": "2.0",\n "result": {\n "healthy": false,\n "messages": [\n "Sync degraded",\n "No messages from CL"\n ],\n "errors": [\n "SyncDegraded",\n "ClUnavailable"\n ],\n "isSyncing": true\n },\n "id": 67\n}\n'})})})]}),"\n",(0,a.jsx)(n.h4,{id:"monitoring-available-storage-space",children:"Monitoring available storage space"}),"\n",(0,a.jsx)(n.p,{children:"Feature which is helping to track free disk space is enabled by default and monitors a drive which has been used to\nconfigure database location. There are two new configuration options available:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold"})," - Percentage of free disk space below which a warning will be\ndisplayed. If Health Checks UI is enabled, it will also be reported under node's health. Default value is 5 - meaning\n5% of free disk space."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold"})," - Percentage of available disk space below which node will shutdown\nto avoid database corruption. Default value is 1 - meaning 1% of free disk space."]}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.LowStorageSpaceWarningThreshold 5 --HealthChecks.LowStorageSpaceShutdownThreshold 1\n"})}),"\n",(0,a.jsx)(n.h4,{id:"healthchecks-for-producing-and-processing-blocks",children:"HealthChecks for producing and processing blocks"}),"\n",(0,a.jsx)(n.p,{children:"There are two fields for HealthChecks config: MaxIntervalWithoutProcessedBlock and MaxIntervalWithoutProducedBlock. The\nnode will return unhealthy status if the interval elapsed without processing or producing a block. Let's use the below\nconfig as an example. If the node doesn't process a block for 15 seconds, we will return unhealthy status. Analogically,\nwe will be waiting 45 seconds for a newly produced block."}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:'\n "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "UIEnabled": true,\n "Slug": "/api/health",\n "MaxIntervalWithoutProcessedBlock ": 15,\n "MaxIntervalWithoutProducedBlock": 45\n }\n'})}),"\n",(0,a.jsx)(n.p,{children:"If those fields are not set in a config, application will try to use them based on seal engine specification. If there\nis infinite time, unhealthy status can still be reported if processing or producing threads stopped."})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var a=t(4164);const s={tabItem:"tabItem_Ymn6"};var r=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var a=t(6540),s=t(4164),r=t(3104),l=t(6347),i=t(205),o=t(7485),c=t(1682),h=t(679);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:s}}=e;return{value:n,label:t,attributes:a,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,o.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(s.location.search);n.set(r,e),s.replace({...s.location,search:n.toString()})}),[r,s])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=u(e),[l,o]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,d]=g({queryString:t,groupId:s}),[b,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,r]=(0,h.Dv)(t);return[s,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:s}),f=(()=>{const e=c??b;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&o(f)}),[f]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),d(e),m(e)}),[d,m,r]),tabValues:r}}var m=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(4848);function j(e){let{className:n,block:t,selectedValue:a,selectValue:l,tabValues:i}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),h=e=>{const n=e.currentTarget,t=o.indexOf(n),s=i[t].value;s!==a&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>o.push(e),onKeyDown:d,onClick:h,...r,className:(0,s.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function k(e){let{lazy:n,children:t,selectedValue:r}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=b(e);return(0,x.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,x.jsx)(j,{...n,...e}),(0,x.jsx)(k,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,x.jsx)(v,{...e,children:d(e.children)},String(n))}},5725:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(46)-5eaf72852b3e686e71865323e9801102.png"},5218:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(76)-09c7ba2b07d07480a303268d261ffd16.png"},9953:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/unhealthy-98cb6ab004e2ecb6edcbec2e6d03edea.png"},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>i});var a=t(6540);const s={},r=a.createContext(s);function l(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2187],{428:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var a=t(4848),s=t(8453),r=t(1470),l=t(9365);const i={title:"Health check",sidebar_position:1},o=void 0,c={id:"monitoring/health-check",title:"Health check",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.28.0/monitoring/health-check.md",sourceDirName:"monitoring",slug:"/monitoring/health-check",permalink:"/1.28.0/monitoring/health-check",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/monitoring/health-check.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Health check",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"dotnet-counters",permalink:"/1.28.0/monitoring/metrics/dotnet-counters"},next:{title:"Validators",permalink:"/1.28.0/validators/"}},h={},d=[{value:"Enabling and configuring Health Checks",id:"enabling-and-configuring-health-checks",level:2},{value:"Enabling Health Checks without UI ",id:"enabling-health-checks-without-ui-",level:4},{value:"Enabling Health Checks UI",id:"enabling-health-checks-ui",level:4},{value:"Enabling Slack reports",id:"enabling-slack-reports",level:4},{value:"Consensus Client health",id:"consensus-client-health",level:4},{value:"health_nodeStatus",id:"health_nodestatus",level:4},{value:"Monitoring available storage space",id:"monitoring-available-storage-space",level:4},{value:"HealthChecks for producing and processing blocks",id:"healthchecks-for-producing-and-processing-blocks",level:4}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h4:"h4",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n","\n",(0,a.jsxs)(n.p,{children:["Nethermind has a pre-packed ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"})," plugin that allows you to monitor your Nethermind node better.\nIt leverages the power\nof ",(0,a.jsx)(n.a,{href:"https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks",children:"AspNetCore.Diagnostics.HealthChecks"}),". It simply adds\nan",(0,a.jsx)(n.code,{children:"/health"}),"endpoint to the JSON RPC service which can be used to check the Nethermind's ",(0,a.jsxs)(n.em,{children:[(0,a.jsx)(n.strong,{children:"liveness"})," -"]})," verify if the\nnode is ",(0,a.jsx)(n.strong,{children:"synced"})," and has ",(0,a.jsx)(n.strong,{children:"at least one peer."})," Useful when you don't want to query the node before it's able to\nprovide you data available only for fully synced nodes like ",(0,a.jsx)(n.code,{children:"eth_getBalance"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"Nethermind.HealthChecks.dll"}),"plugin will be automatically loaded on Nethermind start."]}),"\n",(0,a.jsx)(n.h2,{id:"enabling-and-configuring-health-checks",children:"Enabling and configuring Health Checks"}),"\n",(0,a.jsxs)(n.p,{children:["The health checks need to be additionally enabled which can be done either through ",(0,a.jsx)(n.code,{children:"--HealthChecks.*"})," flags or by adding\na ",(0,a.jsx)(n.code,{children:'"HealthChecks"'})," section to the config file. "]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:' "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "WebhooksUri": "https://slack.webhook",\n "UIEnabled": true,\n "PollingInterval": 10,\n "Slug": "/api/health"\n }\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"danger",children:(0,a.jsxs)(n.p,{children:["JSON RPC Service needs to be enabled in order for health checks to work ",(0,a.jsx)(n.code,{children:"--JsonRpc.Enabled true"})]})}),"\n",(0,a.jsxs)(n.p,{children:["Each configuration option is described ",(0,a.jsx)(n.a,{href:"../fundamentals/configuration#healthchecks",children:"here"}),"."]}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-without-ui-",children:"Enabling Health Checks without UI "}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"health"})," endpoint is now available at ",(0,a.jsx)(n.code,{children:"localhost:8545/health"})," by default (if your ",(0,a.jsx)(n.code,{children:"--JsonRpc.Port"})," is ",(0,a.jsx)(n.code,{children:"8545"}),").\nThe ",(0,a.jsx)(n.code,{children:"health"})," endpoint can be configured via ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug"})," parameter e.g. ",(0,a.jsx)(n.code,{children:"--HealthChecks.Slug /api/health"}),". We\ncan if it is working with ",(0,a.jsx)(n.code,{children:"curl"}),":"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'// Request\ncurl localhost:8545/health\n\n// Example of response for Unhealthy node\n{"status":"Unhealthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node has 0 peers connected","duration":"00:00:00.0003881","status":"Unhealthy","tags":[]}}}\n\n// Example of response for Healthy node\n{"status":"Healthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node is now fully synced with a network, number of peers: 99","duration":"00:00:00.0003881","status":"Healthy","tags":[]}}}\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Unhealthy"})," returns ",(0,a.jsx)(n.strong,{children:"503"})," (Service Unavailable) status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Healthy"})," returns ",(0,a.jsx)(n.strong,{children:"200"})," status code"]}),"\n"]})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-health-checks-ui",children:"Enabling Health Checks UI"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"./Nethermind.Runner --HealthChecks.Enabled true --HealthChecks.UIEnabled true\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Enabling UI will expose an additional endpoint ",(0,a.jsx)(n.code,{children:"/healthchecks-ui"}),"and will allow seeing node's health on a nice UI. To\nview the UI simply go to ",(0,a.jsx)(n.code,{children:"http://localhost:8545/healthchecks-ui"}),"."]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy status reported on UI page",src:t(5218).A+"",width:"1187",height:"418"})}),"\n",(0,a.jsx)(n.h4,{id:"enabling-slack-reports",children:"Enabling Slack reports"}),"\n",(0,a.jsxs)(n.p,{children:["We may also add Slack Webhook endpoint to which our node's health will be reported. We need to pass\nthe ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled true"})," and add the ",(0,a.jsx)(n.code,{children:"--HealthChecks.WebhooksUri"})," which can be found in your Slack app\nconfiguration."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.Enabled true --HealthChecks.UIEnabled true --HealthChecks.WebhooksEnabled true --HealthChecks.WebhooksUri https://hooks.slack.com/\n"})}),"\n",(0,a.jsxs)(n.p,{children:["If your node will be ",(0,a.jsx)(n.strong,{children:"Unhealthy"})," you should receive a message similar to this:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Unhealthy",src:t(9953).A+"",width:"690",height:"240"})}),"\n",(0,a.jsxs)(n.p,{children:["with description of why the node is unhealthy, node's name and information about the machine on which the node is\nrunning.",(0,a.jsx)(n.br,{}),"\n","When it becomes ",(0,a.jsx)(n.strong,{children:"Healthy"})," (",(0,a.jsx)(n.strong,{children:"synced"})," and with ",(0,a.jsx)(n.strong,{children:"peers"}),") you should receive:"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Healthy",src:t(5725).A+"",width:"492",height:"118"})}),"\n",(0,a.jsx)(n.h4,{id:"consensus-client-health",children:"Consensus Client health"}),"\n",(0,a.jsxs)(n.p,{children:["This check verifies if the client receives messages from the CL. If you see this warning in your logs, it means that\nthere is something wrong with CL/Nethermind communication. Check more about setting up Nethermind and\nCL ",(0,a.jsx)(n.a,{href:"/1.28.0/get-started/consensus-clients",children:"here"}),"."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"No incoming messages from Consensus Client. Consensus Client is required to sync the node. Please make sure that it's working properly.\n"})}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"Note that Consensus Client is required for normal node operations."})}),"\n",(0,a.jsx)(n.h4,{id:"health_nodestatus",children:"health_nodeStatus"}),"\n",(0,a.jsxs)(n.p,{children:["Health checks via JSON RPC requests were introduced in version v.1.10.18. For that, ",(0,a.jsx)(n.code,{children:"HealthChecks.Enabled"})," should be\nset to true."]}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsx)(l.A,{value:"request",label:"Request",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{ "jsonrpc":"2.0","method":"health_nodeStatus","params":[],"id":67 }\n'})})}),(0,a.jsx)(l.A,{label:"Response",value:"response",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'{\n "jsonrpc": "2.0",\n "result": {\n "healthy": false,\n "messages": [\n "Sync degraded",\n "No messages from CL"\n ],\n "errors": [\n "SyncDegraded",\n "ClUnavailable"\n ],\n "isSyncing": true\n },\n "id": 67\n}\n'})})})]}),"\n",(0,a.jsx)(n.h4,{id:"monitoring-available-storage-space",children:"Monitoring available storage space"}),"\n",(0,a.jsx)(n.p,{children:"Feature which is helping to track free disk space is enabled by default and monitors a drive which has been used to\nconfigure database location. There are two new configuration options available:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold"})," - Percentage of free disk space below which a warning will be\ndisplayed. If Health Checks UI is enabled, it will also be reported under node's health. Default value is 5 - meaning\n5% of free disk space."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold"})," - Percentage of available disk space below which node will shutdown\nto avoid database corruption. Default value is 1 - meaning 1% of free disk space."]}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"nethermind --HealthChecks.LowStorageSpaceWarningThreshold 5 --HealthChecks.LowStorageSpaceShutdownThreshold 1\n"})}),"\n",(0,a.jsx)(n.h4,{id:"healthchecks-for-producing-and-processing-blocks",children:"HealthChecks for producing and processing blocks"}),"\n",(0,a.jsx)(n.p,{children:"There are two fields for HealthChecks config: MaxIntervalWithoutProcessedBlock and MaxIntervalWithoutProducedBlock. The\nnode will return unhealthy status if the interval elapsed without processing or producing a block. Let's use the below\nconfig as an example. If the node doesn't process a block for 15 seconds, we will return unhealthy status. Analogically,\nwe will be waiting 45 seconds for a newly produced block."}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",metastring:'title="HealthChecks config section example" ',children:'\n "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "UIEnabled": true,\n "Slug": "/api/health",\n "MaxIntervalWithoutProcessedBlock ": 15,\n "MaxIntervalWithoutProducedBlock": 45\n }\n'})}),"\n",(0,a.jsx)(n.p,{children:"If those fields are not set in a config, application will try to use them based on seal engine specification. If there\nis infinite time, unhealthy status can still be reported if processing or producing threads stopped."})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(u,{...e})}):u(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var a=t(4164);const s={tabItem:"tabItem_Ymn6"};var r=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var a=t(6540),s=t(4164),r=t(3104),l=t(6347),i=t(205),o=t(7485),c=t(1682),h=t(679);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:s}}=e;return{value:n,label:t,attributes:a,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,o.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(s.location.search);n.set(r,e),s.replace({...s.location,search:n.toString()})}),[r,s])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=u(e),[l,o]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,d]=g({queryString:t,groupId:s}),[b,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,r]=(0,h.Dv)(t);return[s,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:s}),f=(()=>{const e=c??b;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&o(f)}),[f]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),d(e),m(e)}),[d,m,r]),tabValues:r}}var m=t(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(4848);function j(e){let{className:n,block:t,selectedValue:a,selectValue:l,tabValues:i}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),h=e=>{const n=e.currentTarget,t=o.indexOf(n),s=i[t].value;s!==a&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>o.push(e),onKeyDown:d,onClick:h,...r,className:(0,s.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function k(e){let{lazy:n,children:t,selectedValue:r}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=b(e);return(0,x.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,x.jsx)(j,{...n,...e}),(0,x.jsx)(k,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,x.jsx)(v,{...e,children:d(e.children)},String(n))}},5725:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(46)-5eaf72852b3e686e71865323e9801102.png"},5218:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/image(76)-09c7ba2b07d07480a303268d261ffd16.png"},9953:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/unhealthy-98cb6ab004e2ecb6edcbec2e6d03edea.png"},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>i});var a=t(6540);const s={},r=a.createContext(s);function l(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d5f38527.4eb58f4b.js b/assets/js/d5f38527.b3a9ef9f.js similarity index 97% rename from assets/js/d5f38527.4eb58f4b.js rename to assets/js/d5f38527.b3a9ef9f.js index 29f93e027..47a574c99 100644 --- a/assets/js/d5f38527.4eb58f4b.js +++ b/assets/js/d5f38527.b3a9ef9f.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3899],{6506:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=t(4848),r=t(8453);const o={title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},a=void 0,s={id:"get-started/intro",title:"Introduction and overview",description:"Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.",source:"@site/versioned_docs/version-1.25.4/get-started/intro.md",sourceDirName:"get-started",slug:"/",permalink:"/1.25.4/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/get-started/intro.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},sidebar:"tutorialSidebar",next:{title:"System requirements",permalink:"/1.25.4/get-started/system-requirements"}},d={},c=[];function u(e){const n={a:"a",p:"p",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Nethermind is a high-performance, highly configurable Ethereum execution client built on ",(0,i.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/",children:".NET"})," that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with ",(0,i.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,i.jsx)(n.a,{href:"https://datalust.co/seq",children:"Seq"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators."}),"\n",(0,i.jsx)(n.p,{children:"Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding."}),"\n",(0,i.jsx)(n.p,{children:"We hope you find this documentation helpful and welcome your feedback and suggestions!"})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var i=t(6540);const r={},o=i.createContext(r);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3899],{6506:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=t(4848),r=t(8453);const o={title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},a=void 0,s={id:"get-started/intro",title:"Introduction and overview",description:"Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.",source:"@site/versioned_docs/version-1.25.4/get-started/intro.md",sourceDirName:"get-started",slug:"/",permalink:"/1.25.4/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/get-started/intro.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},sidebar:"tutorialSidebar",next:{title:"System requirements",permalink:"/1.25.4/get-started/system-requirements"}},d={},c=[];function u(e){const n={a:"a",p:"p",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Nethermind is a high-performance, highly configurable Ethereum execution client built on ",(0,i.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/",children:".NET"})," that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with ",(0,i.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,i.jsx)(n.a,{href:"https://datalust.co/seq",children:"Seq"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators."}),"\n",(0,i.jsx)(n.p,{children:"Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding."}),"\n",(0,i.jsx)(n.p,{children:"We hope you find this documentation helpful and welcome your feedback and suggestions!"})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var i=t(6540);const r={},o=i.createContext(r);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d63712d6.a6b9a722.js b/assets/js/d63712d6.f031be08.js similarity index 99% rename from assets/js/d63712d6.a6b9a722.js rename to assets/js/d63712d6.f031be08.js index 1461a4391..6cf536aaf 100644 --- a/assets/js/d63712d6.a6b9a722.js +++ b/assets/js/d63712d6.f031be08.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9448],{4240:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>h,toc:()=>a});var i=t(4848),s=t(8453);const r={title:"Migrating from Geth",sidebar_position:4},o=void 0,h={id:"get-started/migrating-from-geth",title:"Migrating from Geth",description:"This guide will walk you through all the steps required for a seamless and quick transition.",source:"@site/versioned_docs/version-1.29.0/get-started/migrating-from-geth.md",sourceDirName:"get-started",slug:"/get-started/migrating-from-geth",permalink:"/get-started/migrating-from-geth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/get-started/migrating-from-geth.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"Migrating from Geth",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Layer 2 networks",permalink:"/get-started/running-node/l2-networks"},next:{title:"Configuration",permalink:"/fundamentals/configuration"}},d={},a=[{value:"Option 1: Sync Nethermind next to Geth",id:"option-1",level:2},{value:"Option 2: Sync Nethermind using Sedge next to Geth",id:"option-2",level:2},{value:"Option 3: Remove Geth and sync Nethermind",id:"option-3",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This guide will walk you through all the steps required for a seamless and quick transition."}),"\n",(0,i.jsxs)(n.p,{children:["First, ensure ",(0,i.jsx)(n.em,{children:"the disk has enough space"}),". The most secure way is having a Nethermind synced on the same machine as Geth without shutting Geth down. That allows you to check whether Nethermind is syncing properly, verify whether everything works as expected, and reduce node downtime to a bare minimum. This is a recommended approach for any public JSON-RPC provider or a validator."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the disk has enough space, ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"})," or ",(0,i.jsx)(n.a,{href:"#option-2",children:"option 2"})," are the recommended choices."]}),"\n",(0,i.jsx)(n.li,{children:"If there is not enough disk space, and downtime is not an option, we recommend either extending the disk or, if not possible, hosting Nethermind on another machine, syncing it, and whenever it completes, moving everything validator-related to that machine, and abandoning the first one."}),"\n",(0,i.jsxs)(n.li,{children:["If downtime of around 12 hours or more is not a problem, see the ",(0,i.jsx)(n.a,{href:"#option-3",children:"option 3"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"option-1",children:"Option 1: Sync Nethermind next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:["First, ",(0,i.jsx)(n.a,{href:"/get-started/installing-nethermind",children:"install Nethermind"})," and a ",(0,i.jsx)(n.a,{href:"/get-started/running-node/consensus-clients",children:"consensus client"})," of your choice."]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"If you choose the same consensus client for Nethermind that is already being used with Geth, ensure their settings, such as data directories, do not interfere."}),"\n",(0,i.jsx)(n.li,{children:"Ensure the network ports of the consensus client paired with Nethermind and the one paired with Geth do not interfere with each other."}),"\n",(0,i.jsxs)(n.li,{children:["Ensure the JSON-RPC port, Engine API port, and the P2P networking ports of Nethermind are different from the ones used by Geth. These ports are set using the following command line options:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort "})}),"\n"]}),"\n"]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. To check the sync status, use the ",(0,i.jsx)(n.a,{href:"/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method. When it returns ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind is considered fully synced with all block bodies and receipts needed to work properly as a validator. Another option to monitor the sync is a ",(0,i.jsx)(n.a,{href:"/monitoring/health-check",children:"health check"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Once Nethermind is synced, shut down both Geth and Nethermind, along with its paired consensus client. Then, restart Nethermind using the ports assigned for and the JWT secret used by Geth before. Ensure no warnings or errors are present in the logs of both Nethermind and the consensus client. Also, check if Nethermind is following the chain properly. If everything is alright, you can remove Geth and the consensus client paired with Nethermind previously along with their data."}),"\n",(0,i.jsx)(n.h2,{id:"option-2",children:"Option 2: Sync Nethermind using Sedge next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"})," is a setup tool for PoS validators and nodes that runs on Linux and macOS."]}),"\n",(0,i.jsxs)(n.p,{children:["This option is similar to the ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"}),", but Sedge automatically takes care of conflicting settings making the entire process much easier."]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsx)(n.p,{children:"You can add a flag to Sedge as follows. For instance:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["For the execution client, ",(0,i.jsx)(n.code,{children:"--el-extra-flag JsonRpc.Port=8546"})]}),"\n",(0,i.jsxs)(n.li,{children:["For the consensus client, ",(0,i.jsx)(n.code,{children:"--cl-extra-flag rpc-port=4001"})]}),"\n"]})]}),"\n",(0,i.jsxs)(n.p,{children:["Once Nethermind is synced, you can remove extra flags if any from the ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," and restart the node as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"docker compose stop execution\ndocker compose up -d execution\n"})}),"\n",(0,i.jsx)(n.h2,{id:"option-3",children:"Option 3: Remove Geth and sync Nethermind"}),"\n",(0,i.jsx)(n.p,{children:"This is the simplest option as it doesn't require configuration adjustments. However, the node will be down until Nethermind is syncing."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Shut down and remove Geth along with its data."}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/get-started/installing-nethermind",children:"Install Nethermind"})}),"\n",(0,i.jsx)(n.li,{children:"Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the ",(0,i.jsx)(n.a,{href:"/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method or the ",(0,i.jsx)(n.a,{href:"/monitoring/health-check",children:"health check"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>h});var i=t(6540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function h(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9448],{4240:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>h,toc:()=>a});var i=t(4848),s=t(8453);const r={title:"Migrating from Geth",sidebar_position:4},o=void 0,h={id:"get-started/migrating-from-geth",title:"Migrating from Geth",description:"This guide will walk you through all the steps required for a seamless and quick transition.",source:"@site/versioned_docs/version-1.29.0/get-started/migrating-from-geth.md",sourceDirName:"get-started",slug:"/get-started/migrating-from-geth",permalink:"/get-started/migrating-from-geth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/get-started/migrating-from-geth.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"Migrating from Geth",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Layer 2 networks",permalink:"/get-started/running-node/l2-networks"},next:{title:"Configuration",permalink:"/fundamentals/configuration"}},d={},a=[{value:"Option 1: Sync Nethermind next to Geth",id:"option-1",level:2},{value:"Option 2: Sync Nethermind using Sedge next to Geth",id:"option-2",level:2},{value:"Option 3: Remove Geth and sync Nethermind",id:"option-3",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This guide will walk you through all the steps required for a seamless and quick transition."}),"\n",(0,i.jsxs)(n.p,{children:["First, ensure ",(0,i.jsx)(n.em,{children:"the disk has enough space"}),". The most secure way is having a Nethermind synced on the same machine as Geth without shutting Geth down. That allows you to check whether Nethermind is syncing properly, verify whether everything works as expected, and reduce node downtime to a bare minimum. This is a recommended approach for any public JSON-RPC provider or a validator."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the disk has enough space, ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"})," or ",(0,i.jsx)(n.a,{href:"#option-2",children:"option 2"})," are the recommended choices."]}),"\n",(0,i.jsx)(n.li,{children:"If there is not enough disk space, and downtime is not an option, we recommend either extending the disk or, if not possible, hosting Nethermind on another machine, syncing it, and whenever it completes, moving everything validator-related to that machine, and abandoning the first one."}),"\n",(0,i.jsxs)(n.li,{children:["If downtime of around 12 hours or more is not a problem, see the ",(0,i.jsx)(n.a,{href:"#option-3",children:"option 3"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"option-1",children:"Option 1: Sync Nethermind next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:["First, ",(0,i.jsx)(n.a,{href:"/get-started/installing-nethermind",children:"install Nethermind"})," and a ",(0,i.jsx)(n.a,{href:"/get-started/running-node/consensus-clients",children:"consensus client"})," of your choice."]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"If you choose the same consensus client for Nethermind that is already being used with Geth, ensure their settings, such as data directories, do not interfere."}),"\n",(0,i.jsx)(n.li,{children:"Ensure the network ports of the consensus client paired with Nethermind and the one paired with Geth do not interfere with each other."}),"\n",(0,i.jsxs)(n.li,{children:["Ensure the JSON-RPC port, Engine API port, and the P2P networking ports of Nethermind are different from the ones used by Geth. These ports are set using the following command line options:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort "})}),"\n"]}),"\n"]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. To check the sync status, use the ",(0,i.jsx)(n.a,{href:"/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method. When it returns ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind is considered fully synced with all block bodies and receipts needed to work properly as a validator. Another option to monitor the sync is a ",(0,i.jsx)(n.a,{href:"/monitoring/health-check",children:"health check"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Once Nethermind is synced, shut down both Geth and Nethermind, along with its paired consensus client. Then, restart Nethermind using the ports assigned for and the JWT secret used by Geth before. Ensure no warnings or errors are present in the logs of both Nethermind and the consensus client. Also, check if Nethermind is following the chain properly. If everything is alright, you can remove Geth and the consensus client paired with Nethermind previously along with their data."}),"\n",(0,i.jsx)(n.h2,{id:"option-2",children:"Option 2: Sync Nethermind using Sedge next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"})," is a setup tool for PoS validators and nodes that runs on Linux and macOS."]}),"\n",(0,i.jsxs)(n.p,{children:["This option is similar to the ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"}),", but Sedge automatically takes care of conflicting settings making the entire process much easier."]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsx)(n.p,{children:"You can add a flag to Sedge as follows. For instance:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["For the execution client, ",(0,i.jsx)(n.code,{children:"--el-extra-flag JsonRpc.Port=8546"})]}),"\n",(0,i.jsxs)(n.li,{children:["For the consensus client, ",(0,i.jsx)(n.code,{children:"--cl-extra-flag rpc-port=4001"})]}),"\n"]})]}),"\n",(0,i.jsxs)(n.p,{children:["Once Nethermind is synced, you can remove extra flags if any from the ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," and restart the node as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"docker compose stop execution\ndocker compose up -d execution\n"})}),"\n",(0,i.jsx)(n.h2,{id:"option-3",children:"Option 3: Remove Geth and sync Nethermind"}),"\n",(0,i.jsx)(n.p,{children:"This is the simplest option as it doesn't require configuration adjustments. However, the node will be down until Nethermind is syncing."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Shut down and remove Geth along with its data."}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/get-started/installing-nethermind",children:"Install Nethermind"})}),"\n",(0,i.jsx)(n.li,{children:"Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the ",(0,i.jsx)(n.a,{href:"/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method or the ",(0,i.jsx)(n.a,{href:"/monitoring/health-check",children:"health check"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>h});var i=t(6540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function h(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d6764455.1ae35de6.js b/assets/js/d6764455.bfa90128.js similarity index 99% rename from assets/js/d6764455.1ae35de6.js rename to assets/js/d6764455.bfa90128.js index a8687c8b1..9906f9447 100644 --- a/assets/js/d6764455.1ae35de6.js +++ b/assets/js/d6764455.bfa90128.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3992],{4014:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var t=s(4848),i=s(8453);const r={title:"System requirements",sidebar_position:1},d=void 0,a={id:"get-started/system-requirements",title:"System requirements",description:"Supported operating systems",source:"@site/versioned_docs/version-1.27.0/get-started/system-requirements.md",sourceDirName:"get-started",slug:"/get-started/system-requirements",permalink:"/1.27.0/get-started/system-requirements",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/get-started/system-requirements.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"System requirements",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/1.27.0/"},next:{title:"Installing Nethermind",permalink:"/1.27.0/get-started/installing-nethermind"}},o={},l=[{value:"Supported operating systems",id:"supported-operating-systems",level:2},{value:"Hardware requirements",id:"hardware-requirements",level:2},{value:"Disk requirements",id:"disk-requirements",level:3},{value:"Database growth",id:"database-growth",level:4},{value:"Disk speed",id:"disk-speed",level:4},{value:"Sync modes and disk usage",id:"sync-modes-and-disk-usage",level:4}];function c(e){const n={a:"a",br:"br",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"supported-operating-systems",children:"Supported operating systems"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind supports a broad range of modern ",(0,t.jsx)(n.em,{children:"64-bit"})," operating systems including but not limited to:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Linux"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Alpine 3.17+"}),"\n",(0,t.jsx)(n.li,{children:"CentOS Stream 9+"}),"\n",(0,t.jsx)(n.li,{children:"Debian 11+"}),"\n",(0,t.jsx)(n.li,{children:"Fedora 37+"}),"\n",(0,t.jsx)(n.li,{children:"openSUSE 15+"}),"\n",(0,t.jsx)(n.li,{children:"RHEL 8+"}),"\n",(0,t.jsx)(n.li,{children:"SLES 15+"}),"\n",(0,t.jsx)(n.li,{children:"Ubuntu 20.04+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Windows"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Windows 10+ (x64 only)"}),"\n",(0,t.jsx)(n.li,{children:"Windows Server 2012+ (x64 only)"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"macOS"})," 10.15+"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"hardware-requirements",children:"Hardware requirements"}),"\n",(0,t.jsx)(n.p,{children:"Suggested requirements can be found below."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Network"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Memory"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"CPU cores"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"4"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet archive"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"128 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Gnosis"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Energy Web"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Volta"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]})]})]}),"\n",(0,t.jsx)(n.h3,{id:"disk-requirements",children:"Disk requirements"}),"\n",(0,t.jsxs)(n.p,{children:["Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as NVMe or a fast SSD. However, ",(0,t.jsx)(n.strong,{children:"2\nTB is recommended"})," to minimize maintenance requirements. To choose a specific disk model, we recommend\nchecking out ",(0,t.jsx)(n.a,{href:"https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good",children:"this guide"}),".",(0,t.jsx)(n.br,{}),"\n","Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking.\nNonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic."]}),"\n",(0,t.jsx)(n.h4,{id:"database-growth",children:"Database growth"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind requires approximately 898 GB of disk space (as of Jan 2024) after a fresh Ethereum Mainnet sync using default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to bring it back to its optimal database size. For more info on managing node disk usage growth, see ",(0,t.jsx)(n.a,{href:"/1.27.0/fundamentals/database#reducing-database-size",children:"how to reduce database size"}),".",(0,t.jsx)(n.br,{}),"\n","Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements."]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.27.0/fundamentals/database#database-size",children:"Database size"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"disk-speed",children:"Disk speed"}),"\n",(0,t.jsx)(n.p,{children:"The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully."}),"\n",(0,t.jsx)(n.h4,{id:"sync-modes-and-disk-usage",children:"Sync modes and disk usage"}),"\n",(0,t.jsx)(n.p,{children:"A node can be run using different syncing options, and each option has different characteristics of disk space usage."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Archive node."})," This mode stores the full historical state for all blocks. As of July 2023, an archive node requires at least 14 TB of disk space, and it grows by approximately 60 GB per week."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Ancient barriers."})," Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Non-validator mode."})," This mode drops all historical receipts and bodies, but it cannot be used for validation."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.27.0/fundamentals/sync",children:"sync modes"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>a});var t=s(6540);const i={},r=t.createContext(i);function d(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3992],{4014:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var t=s(4848),i=s(8453);const r={title:"System requirements",sidebar_position:1},d=void 0,a={id:"get-started/system-requirements",title:"System requirements",description:"Supported operating systems",source:"@site/versioned_docs/version-1.27.0/get-started/system-requirements.md",sourceDirName:"get-started",slug:"/get-started/system-requirements",permalink:"/1.27.0/get-started/system-requirements",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/get-started/system-requirements.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"System requirements",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/1.27.0/"},next:{title:"Installing Nethermind",permalink:"/1.27.0/get-started/installing-nethermind"}},o={},l=[{value:"Supported operating systems",id:"supported-operating-systems",level:2},{value:"Hardware requirements",id:"hardware-requirements",level:2},{value:"Disk requirements",id:"disk-requirements",level:3},{value:"Database growth",id:"database-growth",level:4},{value:"Disk speed",id:"disk-speed",level:4},{value:"Sync modes and disk usage",id:"sync-modes-and-disk-usage",level:4}];function c(e){const n={a:"a",br:"br",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"supported-operating-systems",children:"Supported operating systems"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind supports a broad range of modern ",(0,t.jsx)(n.em,{children:"64-bit"})," operating systems including but not limited to:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Linux"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Alpine 3.17+"}),"\n",(0,t.jsx)(n.li,{children:"CentOS Stream 9+"}),"\n",(0,t.jsx)(n.li,{children:"Debian 11+"}),"\n",(0,t.jsx)(n.li,{children:"Fedora 37+"}),"\n",(0,t.jsx)(n.li,{children:"openSUSE 15+"}),"\n",(0,t.jsx)(n.li,{children:"RHEL 8+"}),"\n",(0,t.jsx)(n.li,{children:"SLES 15+"}),"\n",(0,t.jsx)(n.li,{children:"Ubuntu 20.04+"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Windows"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Windows 10+ (x64 only)"}),"\n",(0,t.jsx)(n.li,{children:"Windows Server 2012+ (x64 only)"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"macOS"})," 10.15+"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"hardware-requirements",children:"Hardware requirements"}),"\n",(0,t.jsx)(n.p,{children:"Suggested requirements can be found below."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Network"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Memory"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"CPU cores"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"4"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Mainnet archive"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"128 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Gnosis"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"16 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Energy Web"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Volta"})}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"8 GB"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"2"})]})]})]}),"\n",(0,t.jsx)(n.h3,{id:"disk-requirements",children:"Disk requirements"}),"\n",(0,t.jsxs)(n.p,{children:["Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as NVMe or a fast SSD. However, ",(0,t.jsx)(n.strong,{children:"2\nTB is recommended"})," to minimize maintenance requirements. To choose a specific disk model, we recommend\nchecking out ",(0,t.jsx)(n.a,{href:"https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good",children:"this guide"}),".",(0,t.jsx)(n.br,{}),"\n","Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking.\nNonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic."]}),"\n",(0,t.jsx)(n.h4,{id:"database-growth",children:"Database growth"}),"\n",(0,t.jsxs)(n.p,{children:["Nethermind requires approximately 898 GB of disk space (as of Jan 2024) after a fresh Ethereum Mainnet sync using default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to bring it back to its optimal database size. For more info on managing node disk usage growth, see ",(0,t.jsx)(n.a,{href:"/1.27.0/fundamentals/database#reducing-database-size",children:"how to reduce database size"}),".",(0,t.jsx)(n.br,{}),"\n","Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements."]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.27.0/fundamentals/database#database-size",children:"Database size"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"disk-speed",children:"Disk speed"}),"\n",(0,t.jsx)(n.p,{children:"The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully."}),"\n",(0,t.jsx)(n.h4,{id:"sync-modes-and-disk-usage",children:"Sync modes and disk usage"}),"\n",(0,t.jsx)(n.p,{children:"A node can be run using different syncing options, and each option has different characteristics of disk space usage."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Archive node."})," This mode stores the full historical state for all blocks. As of July 2023, an archive node requires at least 14 TB of disk space, and it grows by approximately 60 GB per week."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Ancient barriers."})," Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Non-validator mode."})," This mode drops all historical receipts and bodies, but it cannot be used for validation."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, see ",(0,t.jsx)(n.a,{href:"/1.27.0/fundamentals/sync",children:"sync modes"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>a});var t=s(6540);const i={},r=t.createContext(i);function d(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d788bb18.278b2903.js b/assets/js/d788bb18.84e8eca8.js similarity index 99% rename from assets/js/d788bb18.278b2903.js rename to assets/js/d788bb18.84e8eca8.js index c0c352fa3..cec4e40f0 100644 --- a/assets/js/d788bb18.278b2903.js +++ b/assets/js/d788bb18.84e8eca8.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4363],{4446:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),s=t(8453),a=t(1470),l=t(9365);const o={title:"net namespace",sidebar_label:"net",sidebar_position:4},i=void 0,c={id:"interacting/json-rpc-ns/net",title:"net namespace",description:"net_listening",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/net.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/net",permalink:"/interacting/json-rpc-ns/net",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/net.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"net namespace",sidebar_label:"net",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"eth",permalink:"/interacting/json-rpc-ns/eth"},next:{title:"parity",permalink:"/interacting/json-rpc-ns/parity"}},u={},d=[{value:"net_listening",id:"net_listening",level:3},{value:"net_localAddress",id:"net_localaddress",level:3},{value:"net_localEnode",id:"net_localenode",level:3},{value:"net_peerCount",id:"net_peercount",level:3},{value:"net_version",id:"net_version",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"net_listening",children:"net_listening"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_listening",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localaddress",children:"net_localAddress"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localAddress",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localenode",children:"net_localEnode"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localEnode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_peercount",children:"net_peerCount"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_peerCount",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_version",children:"net_version"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_version",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var a=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>A});var r=t(6540),s=t(4164),a=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(s.location.search);n.set(a,e),s.replace({...s.location,search:n.toString()})}),[a,s])]}function j(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[c,d]=m({queryString:t,groupId:s}),[j,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,a]=(0,u.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:s}),x=(()=>{const e=c??j;return h({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{x&&i(x)}),[x]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=t(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=t(4848);function f(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),s=o[t].value;s!==r&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:a}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function _(e){const n=j(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,v.jsx)(f,{...n,...e}),(0,v.jsx)(g,{...n,...e})]})}function A(e){const n=(0,b.A)();return(0,v.jsx)(_,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const s={},a=r.createContext(s);function l(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4363],{4446:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),s=t(8453),a=t(1470),l=t(9365);const o={title:"net namespace",sidebar_label:"net",sidebar_position:4},i=void 0,c={id:"interacting/json-rpc-ns/net",title:"net namespace",description:"net_listening",source:"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/net.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/net",permalink:"/interacting/json-rpc-ns/net",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/interacting/json-rpc-ns/net.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"net namespace",sidebar_label:"net",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"eth",permalink:"/interacting/json-rpc-ns/eth"},next:{title:"parity",permalink:"/interacting/json-rpc-ns/parity"}},u={},d=[{value:"net_listening",id:"net_listening",level:3},{value:"net_localAddress",id:"net_localaddress",level:3},{value:"net_localEnode",id:"net_localenode",level:3},{value:"net_peerCount",id:"net_peercount",level:3},{value:"net_version",id:"net_version",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"net_listening",children:"net_listening"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_listening",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localaddress",children:"net_localAddress"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localAddress",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localenode",children:"net_localEnode"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localEnode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_peercount",children:"net_peerCount"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_peerCount",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_version",children:"net_version"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_version",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var a=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>A});var r=t(6540),s=t(4164),a=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(s.location.search);n.set(a,e),s.replace({...s.location,search:n.toString()})}),[a,s])]}function j(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[c,d]=m({queryString:t,groupId:s}),[j,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,a]=(0,u.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:s}),x=(()=>{const e=c??j;return h({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{x&&i(x)}),[x]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=t(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=t(4848);function f(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),s=o[t].value;s!==r&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:a}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function _(e){const n=j(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,v.jsx)(f,{...n,...e}),(0,v.jsx)(g,{...n,...e})]})}function A(e){const n=(0,b.A)();return(0,v.jsx)(_,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const s={},a=r.createContext(s);function l(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d9226b24.36115572.js b/assets/js/d9226b24.e4756008.js similarity index 99% rename from assets/js/d9226b24.36115572.js rename to assets/js/d9226b24.e4756008.js index 73b6f0d25..1afcb88dc 100644 --- a/assets/js/d9226b24.36115572.js +++ b/assets/js/d9226b24.e4756008.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2380],{7119:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>d,toc:()=>h});var s=t(4848),i=t(8453);const r={sidebar_label:"FAQ",sidebar_position:7},o="FAQ",d={id:"faq",title:"faq",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.25.4/faq.md",sourceDirName:".",slug:"/faq",permalink:"/1.25.4/faq",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/faq.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:7,frontMatter:{sidebar_label:"FAQ",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Custom analytic tools",permalink:"/1.25.4/developers/custom-analytic-tools"},next:{title:"Troubleshooting",permalink:"/1.25.4/troubleshooting"}},a={},h=[{value:"How do I upgrade my node?",id:"how-do-i-upgrade-my-node",level:2},{value:"Upgrading Nethermind for Docker users",id:"upgrading-nethermind-for-docker-users",level:3},{value:"Upgrading Nethermind for Systemd users",id:"upgrading-nethermind-for-systemd-users",level:3},{value:"Upgrading Nethermind when running as a background process",id:"upgrading-nethermind-when-running-as-a-background-process",level:3},{value:"What is the minimum viable config to serve ETH2 validator requests?",id:"what-is-the-minimum-viable-config-to-serve-eth2-validator-requests",level:2},{value:"Can I disable logging to file?",id:"can-i-disable-logging-to-file",level:2},{value:"Can I disable logging of JSON RPC calls?",id:"can-i-disable-logging-of-json-rpc-calls",level:2},{value:"How can I configure a validator?",id:"how-can-i-configure-a-validator",level:2},{value:"My network bandwidth is used up by the Nethermind node",id:"my-network-bandwidth-is-used-up-by-the-nethermind-node",level:2},{value:"Is my node synced?",id:"is-my-node-synced",level:2},{value:"I want to run two or more nodes on one machine. How can I achieve this?",id:"i-want-to-run-two-or-more-nodes-on-one-machine-how-can-i-achieve-this",level:2}];function l(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"faq",children:"FAQ"})}),"\n",(0,s.jsx)(n.h2,{id:"how-do-i-upgrade-my-node",children:"How do I upgrade my node?"}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-for-docker-users",children:"Upgrading Nethermind for Docker users"}),"\n",(0,s.jsxs)(n.p,{children:["Pull the latest version of Nethermind using the ",(0,s.jsx)(n.code,{children:"latest"})," tag. You can find specific tag\nat ",(0,s.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind/tags",children:"Docker Hub"}),"."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"docker pull nethermind/nethermind:latest\n"})}),"\n",(0,s.jsxs)(n.p,{children:["or pull with docker-compose if the ",(0,s.jsx)(n.code,{children:"nethermind/nethermind:latest"})," base image is specified"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"docker-compose pull\n"})}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-for-systemd-users",children:"Upgrading Nethermind for Systemd users"}),"\n",(0,s.jsxs)(n.p,{children:["Simply download the latest Nethermind package either\nfrom ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io/",children:"https://downloads.nethermind.io"}),"\nor ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"https://github.com/NethermindEth/nethermind/releases"})," and make\nsure that the package is extracted in the ",(0,s.jsx)(n.code,{children:"WorkingDirectory"})," path defined in your ",(0,s.jsx)(n.code,{children:"systemd"})," service. Make sure to stop\nthe service before the upgrade and start it after."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-systemd",children:"WorkingDirectory=/home/nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-when-running-as-a-background-process",children:"Upgrading Nethermind when running as a background process"}),"\n",(0,s.jsxs)(n.p,{children:["Download the latest Nethermind package either from ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io/",children:"https://downloads.nethermind.io"}),"\nor ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"https://github.com/NethermindEth/nethermind/releases"})," and\nextract the package in the folder you currently use for running Nethermind. Make sure the service is down before the\nupdate. Make sure to stop the service before the upgrade and start it after."]}),"\n",(0,s.jsx)(n.h2,{id:"what-is-the-minimum-viable-config-to-serve-eth2-validator-requests",children:"What is the minimum viable config to serve ETH2 validator requests?"}),"\n",(0,s.jsxs)(n.p,{children:["This config downloads a minimal amount of bodies and receipts to be able to serve ETH2 validator requests since the\ndeposit contract deployment. It also enables JSON RPC (",(0,s.jsx)(n.strong,{children:"important - make sure that you do not open firewall to the\noutside world!"}),")"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"nethermind --config mainnet --Init.BaseDbPath /your/db/path\n"})}),"\n",(0,s.jsxs)(n.p,{children:["If you have any issues, please reach out to us on Discord: ",(0,s.jsx)(n.a,{href:"https://discord.gg/X539yhn",children:"https://discord.gg/X539yhn"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"can-i-disable-logging-to-file",children:"Can I disable logging to file?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on the logging config page ",(0,s.jsx)(n.a,{href:"/1.25.4/fundamentals/logs",children:"here"})]}),"\n",(0,s.jsx)(n.h2,{id:"can-i-disable-logging-of-json-rpc-calls",children:"Can I disable logging of JSON RPC calls?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on the logging config page ",(0,s.jsx)(n.a,{href:"/1.25.4/fundamentals/logs",children:"here"})]}),"\n",(0,s.jsx)(n.h2,{id:"how-can-i-configure-a-validator",children:"How can I configure a validator?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on running validators ",(0,s.jsx)(n.a,{href:"/1.25.4/validators/",children:"here"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"my-network-bandwidth-is-used-up-by-the-nethermind-node",children:"My network bandwidth is used up by the Nethermind node"}),"\n",(0,s.jsxs)(n.p,{children:["Try changing the config to a lower number (",(0,s.jsx)(n.code,{children:"--Network.ActivePeersMaxCount 25"}),")"]}),"\n",(0,s.jsx)(n.h2,{id:"is-my-node-synced",children:"Is my node synced?"}),"\n",(0,s.jsx)(n.p,{children:"Your node is synced when it shows log lines starting with:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.code,{children:"Processed ..."})}),"\n",(0,s.jsx)(n.p,{children:"And the block numbers shown are at the head of the chain."}),"\n",(0,s.jsxs)(n.p,{children:["Also, to check if your node is synced, you may execute ",(0,s.jsx)(n.code,{children:"eth_syncing"})," call check its result"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-text",children:'curl -X POST --data \'{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}\' localhost:8545\n'})}),"\n",(0,s.jsxs)(n.p,{children:["If the result shows ",(0,s.jsx)(n.code,{children:"false"})," it means that your node is ",(0,s.jsx)(n.strong,{children:"synced"})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-text",children:'{"jsonrpc":"2.0","result":false,"id":1}\n'})}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"In blockchain, any node can never be 100% sure it is synced because there is no central source of truth - so your node\nis generally not able to tell you that it is synced but, it is able to tell you that it believes it is synced based on\nwhat it knows from the peers that it talks to)."})}),"\n",(0,s.jsx)(n.h2,{id:"i-want-to-run-two-or-more-nodes-on-one-machine-how-can-i-achieve-this",children:"I want to run two or more nodes on one machine. How can I achieve this?"}),"\n",(0,s.jsx)(n.p,{children:"You have to configure a few ports used by Nethermind."}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Settings"}),(0,s.jsx)(n.th,{children:"Default Value"}),(0,s.jsx)(n.th,{children:"Comment"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.EnginePort"}),(0,s.jsx)(n.td,{children:"8551"}),(0,s.jsx)(n.td,{children:"Remember to change it on your Consensus client."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.Port"}),(0,s.jsx)(n.td,{children:"8545"}),(0,s.jsx)(n.td,{children:"Only needed if you are using standard JsonRpc"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.WebSocketsPort"}),(0,s.jsx)(n.td,{children:"8545"}),(0,s.jsx)(n.td,{children:"By default same as the JsonRpc port. Only relevant when you use WebSockets"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Network.P2PPort"}),(0,s.jsx)(n.td,{children:"30303"}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Network.DiscoveryPort"}),(0,s.jsx)(n.td,{children:"30303"}),(0,s.jsx)(n.td,{})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["The example of parameters that you have to pass to your second node when the first has been running with default\nsettings:",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.code,{children:"--JsonRpc.EnginePort 8552 --JsonRpc.Port 8546 --Network.P2PPort 30304 --Network.DiscoveryPort 30304"})]})]})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var s=t(6540);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2380],{7119:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>d,toc:()=>h});var s=t(4848),i=t(8453);const r={sidebar_label:"FAQ",sidebar_position:7},o="FAQ",d={id:"faq",title:"faq",description:"This article is outdated and requires a revision.",source:"@site/versioned_docs/version-1.25.4/faq.md",sourceDirName:".",slug:"/faq",permalink:"/1.25.4/faq",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/faq.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:7,frontMatter:{sidebar_label:"FAQ",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Custom analytic tools",permalink:"/1.25.4/developers/custom-analytic-tools"},next:{title:"Troubleshooting",permalink:"/1.25.4/troubleshooting"}},a={},h=[{value:"How do I upgrade my node?",id:"how-do-i-upgrade-my-node",level:2},{value:"Upgrading Nethermind for Docker users",id:"upgrading-nethermind-for-docker-users",level:3},{value:"Upgrading Nethermind for Systemd users",id:"upgrading-nethermind-for-systemd-users",level:3},{value:"Upgrading Nethermind when running as a background process",id:"upgrading-nethermind-when-running-as-a-background-process",level:3},{value:"What is the minimum viable config to serve ETH2 validator requests?",id:"what-is-the-minimum-viable-config-to-serve-eth2-validator-requests",level:2},{value:"Can I disable logging to file?",id:"can-i-disable-logging-to-file",level:2},{value:"Can I disable logging of JSON RPC calls?",id:"can-i-disable-logging-of-json-rpc-calls",level:2},{value:"How can I configure a validator?",id:"how-can-i-configure-a-validator",level:2},{value:"My network bandwidth is used up by the Nethermind node",id:"my-network-bandwidth-is-used-up-by-the-nethermind-node",level:2},{value:"Is my node synced?",id:"is-my-node-synced",level:2},{value:"I want to run two or more nodes on one machine. How can I achieve this?",id:"i-want-to-run-two-or-more-nodes-on-one-machine-how-can-i-achieve-this",level:2}];function l(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"faq",children:"FAQ"})}),"\n",(0,s.jsx)(n.h2,{id:"how-do-i-upgrade-my-node",children:"How do I upgrade my node?"}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-for-docker-users",children:"Upgrading Nethermind for Docker users"}),"\n",(0,s.jsxs)(n.p,{children:["Pull the latest version of Nethermind using the ",(0,s.jsx)(n.code,{children:"latest"})," tag. You can find specific tag\nat ",(0,s.jsx)(n.a,{href:"https://hub.docker.com/r/nethermind/nethermind/tags",children:"Docker Hub"}),"."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"docker pull nethermind/nethermind:latest\n"})}),"\n",(0,s.jsxs)(n.p,{children:["or pull with docker-compose if the ",(0,s.jsx)(n.code,{children:"nethermind/nethermind:latest"})," base image is specified"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"docker-compose pull\n"})}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-for-systemd-users",children:"Upgrading Nethermind for Systemd users"}),"\n",(0,s.jsxs)(n.p,{children:["Simply download the latest Nethermind package either\nfrom ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io/",children:"https://downloads.nethermind.io"}),"\nor ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"https://github.com/NethermindEth/nethermind/releases"})," and make\nsure that the package is extracted in the ",(0,s.jsx)(n.code,{children:"WorkingDirectory"})," path defined in your ",(0,s.jsx)(n.code,{children:"systemd"})," service. Make sure to stop\nthe service before the upgrade and start it after."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-systemd",children:"WorkingDirectory=/home/nethermind/nethermind\n"})}),"\n",(0,s.jsx)(n.h3,{id:"upgrading-nethermind-when-running-as-a-background-process",children:"Upgrading Nethermind when running as a background process"}),"\n",(0,s.jsxs)(n.p,{children:["Download the latest Nethermind package either from ",(0,s.jsx)(n.a,{href:"https://downloads.nethermind.io/",children:"https://downloads.nethermind.io"}),"\nor ",(0,s.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/releases",children:"https://github.com/NethermindEth/nethermind/releases"})," and\nextract the package in the folder you currently use for running Nethermind. Make sure the service is down before the\nupdate. Make sure to stop the service before the upgrade and start it after."]}),"\n",(0,s.jsx)(n.h2,{id:"what-is-the-minimum-viable-config-to-serve-eth2-validator-requests",children:"What is the minimum viable config to serve ETH2 validator requests?"}),"\n",(0,s.jsxs)(n.p,{children:["This config downloads a minimal amount of bodies and receipts to be able to serve ETH2 validator requests since the\ndeposit contract deployment. It also enables JSON RPC (",(0,s.jsx)(n.strong,{children:"important - make sure that you do not open firewall to the\noutside world!"}),")"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"nethermind --config mainnet --Init.BaseDbPath /your/db/path\n"})}),"\n",(0,s.jsxs)(n.p,{children:["If you have any issues, please reach out to us on Discord: ",(0,s.jsx)(n.a,{href:"https://discord.gg/X539yhn",children:"https://discord.gg/X539yhn"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"can-i-disable-logging-to-file",children:"Can I disable logging to file?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on the logging config page ",(0,s.jsx)(n.a,{href:"/1.25.4/fundamentals/logs",children:"here"})]}),"\n",(0,s.jsx)(n.h2,{id:"can-i-disable-logging-of-json-rpc-calls",children:"Can I disable logging of JSON RPC calls?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on the logging config page ",(0,s.jsx)(n.a,{href:"/1.25.4/fundamentals/logs",children:"here"})]}),"\n",(0,s.jsx)(n.h2,{id:"how-can-i-configure-a-validator",children:"How can I configure a validator?"}),"\n",(0,s.jsxs)(n.p,{children:["You can find more details on running validators ",(0,s.jsx)(n.a,{href:"/1.25.4/validators/",children:"here"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"my-network-bandwidth-is-used-up-by-the-nethermind-node",children:"My network bandwidth is used up by the Nethermind node"}),"\n",(0,s.jsxs)(n.p,{children:["Try changing the config to a lower number (",(0,s.jsx)(n.code,{children:"--Network.ActivePeersMaxCount 25"}),")"]}),"\n",(0,s.jsx)(n.h2,{id:"is-my-node-synced",children:"Is my node synced?"}),"\n",(0,s.jsx)(n.p,{children:"Your node is synced when it shows log lines starting with:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.code,{children:"Processed ..."})}),"\n",(0,s.jsx)(n.p,{children:"And the block numbers shown are at the head of the chain."}),"\n",(0,s.jsxs)(n.p,{children:["Also, to check if your node is synced, you may execute ",(0,s.jsx)(n.code,{children:"eth_syncing"})," call check its result"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-text",children:'curl -X POST --data \'{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}\' localhost:8545\n'})}),"\n",(0,s.jsxs)(n.p,{children:["If the result shows ",(0,s.jsx)(n.code,{children:"false"})," it means that your node is ",(0,s.jsx)(n.strong,{children:"synced"})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-text",children:'{"jsonrpc":"2.0","result":false,"id":1}\n'})}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"In blockchain, any node can never be 100% sure it is synced because there is no central source of truth - so your node\nis generally not able to tell you that it is synced but, it is able to tell you that it believes it is synced based on\nwhat it knows from the peers that it talks to)."})}),"\n",(0,s.jsx)(n.h2,{id:"i-want-to-run-two-or-more-nodes-on-one-machine-how-can-i-achieve-this",children:"I want to run two or more nodes on one machine. How can I achieve this?"}),"\n",(0,s.jsx)(n.p,{children:"You have to configure a few ports used by Nethermind."}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Settings"}),(0,s.jsx)(n.th,{children:"Default Value"}),(0,s.jsx)(n.th,{children:"Comment"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.EnginePort"}),(0,s.jsx)(n.td,{children:"8551"}),(0,s.jsx)(n.td,{children:"Remember to change it on your Consensus client."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.Port"}),(0,s.jsx)(n.td,{children:"8545"}),(0,s.jsx)(n.td,{children:"Only needed if you are using standard JsonRpc"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"JsonRpc.WebSocketsPort"}),(0,s.jsx)(n.td,{children:"8545"}),(0,s.jsx)(n.td,{children:"By default same as the JsonRpc port. Only relevant when you use WebSockets"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Network.P2PPort"}),(0,s.jsx)(n.td,{children:"30303"}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Network.DiscoveryPort"}),(0,s.jsx)(n.td,{children:"30303"}),(0,s.jsx)(n.td,{})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["The example of parameters that you have to pass to your second node when the first has been running with default\nsettings:",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.code,{children:"--JsonRpc.EnginePort 8552 --JsonRpc.Port 8546 --Network.P2PPort 30304 --Network.DiscoveryPort 30304"})]})]})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var s=t(6540);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/da066521.8f3ccf9f.js b/assets/js/da066521.448afd8d.js similarity index 99% rename from assets/js/da066521.8f3ccf9f.js rename to assets/js/da066521.448afd8d.js index 2617d014f..8ca575d39 100644 --- a/assets/js/da066521.8f3ccf9f.js +++ b/assets/js/da066521.448afd8d.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9496],{5689:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),s=t(8453),a=t(1470),l=t(9365);const o={title:"net namespace",sidebar_label:"net",sidebar_position:4},i=void 0,c={id:"interacting/json-rpc-ns/net",title:"net namespace",description:"net_listening",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/net.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/net",permalink:"/1.28.0/interacting/json-rpc-ns/net",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/net.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"net namespace",sidebar_label:"net",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"eth",permalink:"/1.28.0/interacting/json-rpc-ns/eth"},next:{title:"parity",permalink:"/1.28.0/interacting/json-rpc-ns/parity"}},u={},d=[{value:"net_listening",id:"net_listening",level:3},{value:"net_localAddress",id:"net_localaddress",level:3},{value:"net_localEnode",id:"net_localenode",level:3},{value:"net_peerCount",id:"net_peercount",level:3},{value:"net_version",id:"net_version",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"net_listening",children:"net_listening"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_listening",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localaddress",children:"net_localAddress"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localAddress",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localenode",children:"net_localEnode"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localEnode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_peercount",children:"net_peerCount"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_peerCount",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_version",children:"net_version"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_version",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var a=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>A});var r=t(6540),s=t(4164),a=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(s.location.search);n.set(a,e),s.replace({...s.location,search:n.toString()})}),[a,s])]}function j(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[c,d]=m({queryString:t,groupId:s}),[j,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,a]=(0,u.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:s}),x=(()=>{const e=c??j;return h({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{x&&i(x)}),[x]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=t(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=t(4848);function f(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),s=o[t].value;s!==r&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:a}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function _(e){const n=j(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,v.jsx)(f,{...n,...e}),(0,v.jsx)(g,{...n,...e})]})}function A(e){const n=(0,b.A)();return(0,v.jsx)(_,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const s={},a=r.createContext(s);function l(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9496],{5689:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),s=t(8453),a=t(1470),l=t(9365);const o={title:"net namespace",sidebar_label:"net",sidebar_position:4},i=void 0,c={id:"interacting/json-rpc-ns/net",title:"net namespace",description:"net_listening",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/net.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/net",permalink:"/1.28.0/interacting/json-rpc-ns/net",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/net.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"net namespace",sidebar_label:"net",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"eth",permalink:"/1.28.0/interacting/json-rpc-ns/eth"},next:{title:"parity",permalink:"/1.28.0/interacting/json-rpc-ns/parity"}},u={},d=[{value:"net_listening",id:"net_listening",level:3},{value:"net_localAddress",id:"net_localaddress",level:3},{value:"net_localEnode",id:"net_localenode",level:3},{value:"net_peerCount",id:"net_peercount",level:3},{value:"net_version",id:"net_version",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"net_listening",children:"net_listening"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_listening",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localaddress",children:"net_localAddress"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localAddress",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_localenode",children:"net_localEnode"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_localEnode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_peercount",children:"net_peerCount"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_peerCount",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"net_version",children:"net_version"}),"\n",(0,r.jsxs)(a.A,{children:[(0,r.jsx)(l.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "net_version",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(l.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var r=t(4164);const s={tabItem:"tabItem_Ymn6"};var a=t(4848);function l(e){let{children:n,hidden:t,className:l}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>A});var r=t(6540),s=t(4164),a=t(3104),l=t(6347),o=t(205),i=t(7485),c=t(1682),u=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function h(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const s=(0,l.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(s.location.search);n.set(a,e),s.replace({...s.location,search:n.toString()})}),[a,s])]}function j(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[c,d]=m({queryString:t,groupId:s}),[j,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,a]=(0,u.Dv)(t);return[s,(0,r.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:s}),x=(()=>{const e=c??j;return h({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{x&&i(x)}),[x]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=t(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=t(4848);function f(e){let{className:n,block:t,selectedValue:r,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),s=o[t].value;s!==r&&(c(n),l(s))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function g(e){let{lazy:n,children:t,selectedValue:a}=e;const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function _(e){const n=j(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,v.jsx)(f,{...n,...e}),(0,v.jsx)(g,{...n,...e})]})}function A(e){const n=(0,b.A)();return(0,v.jsx)(_,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var r=t(6540);const s={},a=r.createContext(s);function l(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/de0b05d1.c89b1320.js b/assets/js/de0b05d1.c69d37af.js similarity index 98% rename from assets/js/de0b05d1.c89b1320.js rename to assets/js/de0b05d1.c69d37af.js index a0fe90f8b..c64786e40 100644 --- a/assets/js/de0b05d1.c89b1320.js +++ b/assets/js/de0b05d1.c69d37af.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8612],{8430:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var i=n(4848),r=n(8453);const o={title:"Security",sidebar_position:3},s=void 0,c={id:"fundamentals/security",title:"Security",description:"General security considerations",source:"@site/versioned_docs/version-1.27.0/fundamentals/security.md",sourceDirName:"fundamentals",slug:"/fundamentals/security",permalink:"/1.27.0/fundamentals/security",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/security.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"Security",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Sync",permalink:"/1.27.0/fundamentals/sync"},next:{title:"Logs",permalink:"/1.27.0/fundamentals/logs"}},a={},d=[{value:"General security considerations",id:"general-security-considerations",level:2},{value:"Networking security",id:"networking-security",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{id:"general-security-considerations",children:"General security considerations"}),"\n",(0,i.jsx)(t.admonition,{type:"tip",children:(0,i.jsx)(t.p,{children:"Although Nethermind is thoroughly tested, the more popular it becomes, the more likely it will be a target of client-specific attacks. Generally, we recommend you always consider running backup client nodes from another developer for any critical operations."})}),"\n",(0,i.jsx)(t.admonition,{type:"warning",children:(0,i.jsxs)(t.p,{children:["Enable only the ",(0,i.jsx)(t.a,{href:"/1.27.0/interacting/json-rpc-server",children:"JSON-RPC namespaces"})," you absolutely need. This is particularly important for namespaces like ",(0,i.jsx)(t.code,{children:"admin"})," and ",(0,i.jsx)(t.code,{children:"debug"}),", as they can be exploited to get elevated access to your node or for DOS attacks."]})}),"\n",(0,i.jsx)(t.admonition,{type:"danger",children:(0,i.jsx)(t.p,{children:"The private key the node id is derived from is stored on the disk as plaintext."})}),"\n",(0,i.jsx)(t.h2,{id:"networking-security",children:"Networking security"}),"\n",(0,i.jsxs)(t.p,{children:["These rules are ",(0,i.jsx)(t.strong,{children:"highly recommended"})," to be applied to your firewall:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Block all traffic to the port ",(0,i.jsx)(t.code,{children:"8545"}),", or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the TCP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port is defined for P2P communication. This allows the node to connect to peers."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the UDP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port ia defined for P2P communication. This allows node discovery."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var i=n(6540);const r={},o=i.createContext(r);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8612],{8430:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var i=n(4848),r=n(8453);const o={title:"Security",sidebar_position:3},s=void 0,c={id:"fundamentals/security",title:"Security",description:"General security considerations",source:"@site/versioned_docs/version-1.27.0/fundamentals/security.md",sourceDirName:"fundamentals",slug:"/fundamentals/security",permalink:"/1.27.0/fundamentals/security",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/fundamentals/security.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"Security",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Sync",permalink:"/1.27.0/fundamentals/sync"},next:{title:"Logs",permalink:"/1.27.0/fundamentals/logs"}},a={},d=[{value:"General security considerations",id:"general-security-considerations",level:2},{value:"Networking security",id:"networking-security",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{id:"general-security-considerations",children:"General security considerations"}),"\n",(0,i.jsx)(t.admonition,{type:"tip",children:(0,i.jsx)(t.p,{children:"Although Nethermind is thoroughly tested, the more popular it becomes, the more likely it will be a target of client-specific attacks. Generally, we recommend you always consider running backup client nodes from another developer for any critical operations."})}),"\n",(0,i.jsx)(t.admonition,{type:"warning",children:(0,i.jsxs)(t.p,{children:["Enable only the ",(0,i.jsx)(t.a,{href:"/1.27.0/interacting/json-rpc-server",children:"JSON-RPC namespaces"})," you absolutely need. This is particularly important for namespaces like ",(0,i.jsx)(t.code,{children:"admin"})," and ",(0,i.jsx)(t.code,{children:"debug"}),", as they can be exploited to get elevated access to your node or for DOS attacks."]})}),"\n",(0,i.jsx)(t.admonition,{type:"danger",children:(0,i.jsx)(t.p,{children:"The private key the node id is derived from is stored on the disk as plaintext."})}),"\n",(0,i.jsx)(t.h2,{id:"networking-security",children:"Networking security"}),"\n",(0,i.jsxs)(t.p,{children:["These rules are ",(0,i.jsx)(t.strong,{children:"highly recommended"})," to be applied to your firewall:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Block all traffic to the port ",(0,i.jsx)(t.code,{children:"8545"}),", or whatever port is defined for JSON-RPC interface, except for traffic from explicitly defined trusted sources."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the TCP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port is defined for P2P communication. This allows the node to connect to peers."]}),"\n",(0,i.jsxs)(t.li,{children:["Allow traffic to the UDP port ",(0,i.jsx)(t.code,{children:"30303"})," or whatever port ia defined for P2P communication. This allows node discovery."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var i=n(6540);const r={},o=i.createContext(r);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e02b2202.033409f8.js b/assets/js/e02b2202.2bc2cb12.js similarity index 99% rename from assets/js/e02b2202.033409f8.js rename to assets/js/e02b2202.2bc2cb12.js index cdbe1733b..d8af5716c 100644 --- a/assets/js/e02b2202.033409f8.js +++ b/assets/js/e02b2202.2bc2cb12.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9866],{4969:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>j,frontMatter:()=>c,metadata:()=>o,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),t=s(9365);const c={title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},d=void 0,o={id:"interacting/json-rpc-ns/txpool",title:"txpool namespace",description:"txpool_content",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/txpool.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/txpool",permalink:"/1.27.0/interacting/json-rpc-ns/txpool",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/txpool.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:9,frontMatter:{title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"trace",permalink:"/1.27.0/interacting/json-rpc-ns/trace"},next:{title:"web3",permalink:"/1.27.0/interacting/json-rpc-ns/web3"}},a={},h=[{value:"txpool_content",id:"txpool_content",level:3},{value:"txpool_inspect",id:"txpool_inspect",level:3},{value:"txpool_status",id:"txpool_status",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"txpool_content",children:"txpool_content"}),"\n",(0,r.jsx)(n.p,{children:"Returns tx pool content."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_content",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_inspect",children:"txpool_inspect"}),"\n",(0,r.jsx)(n.p,{children:"Returns a detailed info on tx pool transactions."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_inspect",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_status",children:"txpool_status"}),"\n",(0,r.jsx)(n.p,{children:"Returns a tx pool status."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_status",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),t=s(6347),c=s(205),d=s(7485),o=s(1682),a=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[o,h]=u({queryString:s,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,a.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),g=(()=>{const e=o??m;return j({value:e,tabValues:l})?e:null})();(0,c.A)((()=>{g&&d(g)}),[g]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:c}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,l.a_)(),a=e=>{const n=e.currentTarget,s=d.indexOf(n),i=c[s].value;i!==r&&(o(n),t(i))},h=e=>{let n=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:c.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:a,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,p.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>c});var r=s(6540);const i={},l=r.createContext(i);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9866],{4969:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>j,frontMatter:()=>c,metadata:()=>o,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),t=s(9365);const c={title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},d=void 0,o={id:"interacting/json-rpc-ns/txpool",title:"txpool namespace",description:"txpool_content",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/txpool.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/txpool",permalink:"/1.27.0/interacting/json-rpc-ns/txpool",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/txpool.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:9,frontMatter:{title:"txpool namespace",sidebar_label:"txpool",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"trace",permalink:"/1.27.0/interacting/json-rpc-ns/trace"},next:{title:"web3",permalink:"/1.27.0/interacting/json-rpc-ns/web3"}},a={},h=[{value:"txpool_content",id:"txpool_content",level:3},{value:"txpool_inspect",id:"txpool_inspect",level:3},{value:"txpool_status",id:"txpool_status",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"txpool_content",children:"txpool_content"}),"\n",(0,r.jsx)(n.p,{children:"Returns tx pool content."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_content",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"object"}),"\nmap of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_inspect",children:"txpool_inspect"}),"\n",(0,r.jsx)(n.p,{children:"Returns a detailed info on tx pool transactions."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_inspect",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": map of map of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"txpool_status",children:"txpool_status"}),"\n",(0,r.jsx)(n.p,{children:"Returns a tx pool status."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "txpool_status",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pending"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"queued"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),t=s(6347),c=s(205),d=s(7485),o=s(1682),a=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[o,h]=u({queryString:s,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,a.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),g=(()=>{const e=o??m;return j({value:e,tabValues:l})?e:null})();(0,c.A)((()=>{g&&d(g)}),[g]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:c}=e;const d=[],{blockElementScrollPositionUntilNextRender:o}=(0,l.a_)(),a=e=>{const n=e.currentTarget,s=d.indexOf(n),i=c[s].value;i!==r&&(o(n),t(i))},h=e=>{let n=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:c.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:a,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,p.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>c});var r=s(6540);const i={},l=r.createContext(i);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e0b15704.454a645c.js b/assets/js/e0b15704.453016cc.js similarity index 99% rename from assets/js/e0b15704.454a645c.js rename to assets/js/e0b15704.453016cc.js index c983bff85..33f3cbcdb 100644 --- a/assets/js/e0b15704.454a645c.js +++ b/assets/js/e0b15704.453016cc.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3011],{3409:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>i,metadata:()=>o,toc:()=>h});var r=t(4848),s=t(8453);const i={title:"Grafana and Prometheus",sidebar_position:0},a=void 0,o={id:"monitoring/metrics/grafana-and-prometheus",title:"Grafana and Prometheus",description:"This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.",source:"@site/versioned_docs/version-1.29.0/monitoring/metrics/grafana-and-prometheus.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/grafana-and-prometheus",permalink:"/monitoring/metrics/grafana-and-prometheus",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/monitoring/metrics/grafana-and-prometheus.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Grafana and Prometheus",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Metrics",permalink:"/monitoring/metrics/"},next:{title:"dotnet-counters",permalink:"/monitoring/metrics/dotnet-counters"}},c={},h=[{value:"Step 1: Set up Grafana and Prometheus",id:"step-1-set-up-grafana-and-prometheus",level:2},{value:"Step 2: Run the stack",id:"step-2-run-the-stack",level:2},{value:"Step 3: Run Nethermind",id:"step-3-run-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["This guide will walk you through setting up a local metrics infrastructure using ",(0,r.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,r.jsx)(n.a,{href:"https://prometheus.io",children:"Prometheus"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"step-1-set-up-grafana-and-prometheus",children:"Step 1: Set up Grafana and Prometheus"}),"\n",(0,r.jsxs)(n.p,{children:["To simplify the process, we will use the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/metrics-infrastructure",children:"metrics-infrastructure"})," repository, which contains the necessary configuration files to run Grafana and Prometheus in a Docker container. However, you can also set up Grafana and Prometheus manually the way it fits your specific needs."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/NethermindEth/metrics-infrastructure.git\n"})}),"\n",(0,r.jsx)(n.h2,{id:"step-2-run-the-stack",children:"Step 2: Run the stack"}),"\n",(0,r.jsx)(n.p,{children:"After cloning the repository, navigate to its root directory and run the containers using Docker Compose as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,r.jsx)(n.p,{children:"Once the stack is running, you can access the following services:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Grafana"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:3000",children:"localhost:3000"}),(0,r.jsx)(n.br,{}),"\n","Use ",(0,r.jsx)(n.code,{children:"admin"})," for both the username and password. When asked for a password change, you may skip it. Then, navigate to Dashboards > Nethermind Dashboard."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Prometheus"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9090",children:"localhost:9090"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Pushgateway"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9091",children:"localhost:9091"}),(0,r.jsx)(n.br,{}),"\n","To specify another endpoint for the Pushgateway, use the ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#metrics-pushgatewayurl",children:(0,r.jsx)(n.code,{children:"Metrics.PushGatewayUrl"})})," configuration option."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"step-3-run-nethermind",children:"Step 3: Run Nethermind"}),"\n",(0,r.jsxs)(n.p,{children:["To enable metrics in Nethermind, set the ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#metrics-enabled",children:(0,r.jsx)(n.code,{children:"Metrics.Enabled"})})," configuration option to ",(0,r.jsx)(n.code,{children:"true"}),". For more options, see the ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsxs)(n.p,{children:["See ",(0,r.jsx)(n.a,{href:"/get-started/running-node/",children:"Running a node"})," for more information on how to run Nethermind."]})}),"\n",(0,r.jsx)(n.p,{children:"Run Nethermind as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --Metrics.Enabled true \\\n --Metrics.PushGatewayUrl http://localhost:9091\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Alternatively, you may add the ",(0,r.jsx)(n.code,{children:"nethermind"})," service to the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," file in the repository root to run everything altogether:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n links:\n - pushgateway\n depends_on:\n - pushgateway\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n command: -c mainnet --Metrics.Enabled true --Metrics.PushGatewayUrl http://pushgateway:9091\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n networks:\n - metrics\n"})}),"\n",(0,r.jsx)(n.p,{children:"In this case, you may want to configure your consensus client similarly."})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var r=t(6540);const s={},i=r.createContext(s);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3011],{3409:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>i,metadata:()=>o,toc:()=>h});var r=t(4848),s=t(8453);const i={title:"Grafana and Prometheus",sidebar_position:0},a=void 0,o={id:"monitoring/metrics/grafana-and-prometheus",title:"Grafana and Prometheus",description:"This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.",source:"@site/versioned_docs/version-1.29.0/monitoring/metrics/grafana-and-prometheus.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/grafana-and-prometheus",permalink:"/monitoring/metrics/grafana-and-prometheus",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/monitoring/metrics/grafana-and-prometheus.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Grafana and Prometheus",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Metrics",permalink:"/monitoring/metrics/"},next:{title:"dotnet-counters",permalink:"/monitoring/metrics/dotnet-counters"}},c={},h=[{value:"Step 1: Set up Grafana and Prometheus",id:"step-1-set-up-grafana-and-prometheus",level:2},{value:"Step 2: Run the stack",id:"step-2-run-the-stack",level:2},{value:"Step 3: Run Nethermind",id:"step-3-run-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["This guide will walk you through setting up a local metrics infrastructure using ",(0,r.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,r.jsx)(n.a,{href:"https://prometheus.io",children:"Prometheus"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"step-1-set-up-grafana-and-prometheus",children:"Step 1: Set up Grafana and Prometheus"}),"\n",(0,r.jsxs)(n.p,{children:["To simplify the process, we will use the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/metrics-infrastructure",children:"metrics-infrastructure"})," repository, which contains the necessary configuration files to run Grafana and Prometheus in a Docker container. However, you can also set up Grafana and Prometheus manually the way it fits your specific needs."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/NethermindEth/metrics-infrastructure.git\n"})}),"\n",(0,r.jsx)(n.h2,{id:"step-2-run-the-stack",children:"Step 2: Run the stack"}),"\n",(0,r.jsx)(n.p,{children:"After cloning the repository, navigate to its root directory and run the containers using Docker Compose as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker compose up\n"})}),"\n",(0,r.jsx)(n.p,{children:"Once the stack is running, you can access the following services:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Grafana"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:3000",children:"localhost:3000"}),(0,r.jsx)(n.br,{}),"\n","Use ",(0,r.jsx)(n.code,{children:"admin"})," for both the username and password. When asked for a password change, you may skip it. Then, navigate to Dashboards > Nethermind Dashboard."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Prometheus"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9090",children:"localhost:9090"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Pushgateway"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9091",children:"localhost:9091"}),(0,r.jsx)(n.br,{}),"\n","To specify another endpoint for the Pushgateway, use the ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#metrics-pushgatewayurl",children:(0,r.jsx)(n.code,{children:"Metrics.PushGatewayUrl"})})," configuration option."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"step-3-run-nethermind",children:"Step 3: Run Nethermind"}),"\n",(0,r.jsxs)(n.p,{children:["To enable metrics in Nethermind, set the ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#metrics-enabled",children:(0,r.jsx)(n.code,{children:"Metrics.Enabled"})})," configuration option to ",(0,r.jsx)(n.code,{children:"true"}),". For more options, see the ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsxs)(n.p,{children:["See ",(0,r.jsx)(n.a,{href:"/get-started/running-node/",children:"Running a node"})," for more information on how to run Nethermind."]})}),"\n",(0,r.jsx)(n.p,{children:"Run Nethermind as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind \\\n -c mainnet \\\n -dd path/to/data/dir \\\n --Metrics.Enabled true \\\n --Metrics.PushGatewayUrl http://localhost:9091\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Alternatively, you may add the ",(0,r.jsx)(n.code,{children:"nethermind"})," service to the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," file in the repository root to run everything altogether:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n links:\n - pushgateway\n depends_on:\n - pushgateway\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n command: -c mainnet --Metrics.Enabled true --Metrics.PushGatewayUrl http://pushgateway:9091\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n networks:\n - metrics\n"})}),"\n",(0,r.jsx)(n.p,{children:"In this case, you may want to configure your consensus client similarly."})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var r=t(6540);const s={},i=r.createContext(s);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e3779d30.ddbe07ef.js b/assets/js/e3779d30.f30ee103.js similarity index 99% rename from assets/js/e3779d30.ddbe07ef.js rename to assets/js/e3779d30.f30ee103.js index 291d99eb9..92d70eea9 100644 --- a/assets/js/e3779d30.ddbe07ef.js +++ b/assets/js/e3779d30.f30ee103.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9027],{7783:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>x,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>t,toc:()=>a});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"eth namespace",sidebar_label:"eth",sidebar_position:3},h=void 0,t={id:"interacting/json-rpc-ns/eth",title:"eth namespace",description:"eth_blobBaseFee",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/eth.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/eth",permalink:"/1.26.0/interacting/json-rpc-ns/eth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/eth.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:3,frontMatter:{title:"eth namespace",sidebar_label:"eth",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"debug",permalink:"/1.26.0/interacting/json-rpc-ns/debug"},next:{title:"net",permalink:"/1.26.0/interacting/json-rpc-ns/net"}},x={},a=[{value:"eth_blobBaseFee",id:"eth_blobbasefee",level:3},{value:"eth_blockNumber",id:"eth_blocknumber",level:3},{value:"eth_call",id:"eth_call",level:3},{value:"eth_chainId",id:"eth_chainid",level:3},{value:"eth_createAccessList",id:"eth_createaccesslist",level:3},{value:"eth_estimateGas",id:"eth_estimategas",level:3},{value:"eth_feeHistory",id:"eth_feehistory",level:3},{value:"eth_gasPrice",id:"eth_gasprice",level:3},{value:"eth_getAccount",id:"eth_getaccount",level:3},{value:"eth_getBalance",id:"eth_getbalance",level:3},{value:"eth_getBlockByHash",id:"eth_getblockbyhash",level:3},{value:"eth_getBlockByNumber",id:"eth_getblockbynumber",level:3},{value:"eth_getBlockReceipts",id:"eth_getblockreceipts",level:3},{value:"eth_getBlockTransactionCountByHash",id:"eth_getblocktransactioncountbyhash",level:3},{value:"eth_getBlockTransactionCountByNumber",id:"eth_getblocktransactioncountbynumber",level:3},{value:"eth_getCode",id:"eth_getcode",level:3},{value:"eth_getFilterChanges",id:"eth_getfilterchanges",level:3},{value:"eth_getFilterLogs",id:"eth_getfilterlogs",level:3},{value:"eth_getLogs",id:"eth_getlogs",level:3},{value:"eth_getProof",id:"eth_getproof",level:3},{value:"eth_getStorageAt",id:"eth_getstorageat",level:3},{value:"eth_getTransactionByBlockHashAndIndex",id:"eth_gettransactionbyblockhashandindex",level:3},{value:"eth_getTransactionByBlockNumberAndIndex",id:"eth_gettransactionbyblocknumberandindex",level:3},{value:"eth_getTransactionByHash",id:"eth_gettransactionbyhash",level:3},{value:"eth_getTransactionCount",id:"eth_gettransactioncount",level:3},{value:"eth_getTransactionReceipt",id:"eth_gettransactionreceipt",level:3},{value:"eth_getUncleByBlockHashAndIndex",id:"eth_getunclebyblockhashandindex",level:3},{value:"eth_getUncleByBlockNumberAndIndex",id:"eth_getunclebyblocknumberandindex",level:3},{value:"eth_getUncleCountByBlockHash",id:"eth_getunclecountbyblockhash",level:3},{value:"eth_getUncleCountByBlockNumber",id:"eth_getunclecountbyblocknumber",level:3},{value:"eth_newBlockFilter",id:"eth_newblockfilter",level:3},{value:"eth_newFilter",id:"eth_newfilter",level:3},{value:"eth_newPendingTransactionFilter",id:"eth_newpendingtransactionfilter",level:3},{value:"eth_pendingTransactions",id:"eth_pendingtransactions",level:3},{value:"eth_protocolVersion",id:"eth_protocolversion",level:3},{value:"eth_sendRawTransaction",id:"eth_sendrawtransaction",level:3},{value:"eth_sendTransaction",id:"eth_sendtransaction",level:3},{value:"eth_subscribe",id:"eth_subscribe",level:3},{value:"Subscription topics",id:"subscription-topics",level:4},{value:"newHeads",id:"newheads",level:5},{value:"logs",id:"logs",level:5},{value:"newPendingTransactions",id:"newpendingtransactions",level:5},{value:"droppedPendingTransactions",id:"droppedpendingtransactions",level:5},{value:"syncing",id:"syncing",level:5},{value:"eth_syncing",id:"eth_syncing",level:3},{value:"eth_uninstallFilter",id:"eth_uninstallfilter",level:3},{value:"eth_unsubscribe",id:"eth_unsubscribe",level:3}];function j(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h3:"h3",h4:"h4",h5:"h5",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"eth_blobbasefee",children:"eth_blobBaseFee"}),"\n",(0,r.jsx)(n.p,{children:"Returns the base fee per blob gas in wei"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blobBaseFee",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_blocknumber",children:"eth_blockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns current block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blockNumber",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_call",children:"eth_call"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_call",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_chainid",children:"eth_chainId"}),"\n",(0,r.jsx)(n.p,{children:"Returns ChainID"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_chainId",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_createaccesslist",children:"eth_createAccessList"}),"\n",(0,r.jsxs)(n.p,{children:["Creates an ",(0,r.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-2930",children:"EIP2930"})," type AccessList for the given transaction"]}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"optimize"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_createAccessList",\n "params": [transactionCall, blockParameter, optimize]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_estimategas",children:"eth_estimateGas"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call and returns gas used (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_estimateGas",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_feehistory",children:"eth_feeHistory"}),"\n",(0,r.jsx)(n.p,{children:"Returns block fee history."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockCount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"newestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"rewardPercentiles"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_feeHistory",\n "params": [blockCount, newestBlock, rewardPercentiles]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerBlobGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oldestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"reward"}),": array of array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gasprice",children:"eth_gasPrice"}),"\n",(0,r.jsx)(n.p,{children:"Returns miner's gas price"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_gasPrice",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getaccount",children:"eth_getAccount"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves Accounts via Address and Blocknumber"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getAccount",\n "params": [accountAddress, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getbalance",children:"eth_getBalance"}),"\n",(0,r.jsx)(n.p,{children:"Returns account balance"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBalance",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbyhash",children:"eth_getBlockByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByHash",\n "params": [blockHash, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbynumber",children:"eth_getBlockByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByNumber",\n "params": [blockParameter, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockreceipts",children:"eth_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbyhash",children:"eth_getBlockTransactionCountByHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbynumber",children:"eth_getBlockTransactionCountByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getcode",children:"eth_getCode"}),"\n",(0,r.jsx)(n.p,{children:"Returns account code at given address and block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getCode",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterchanges",children:"eth_getFilterChanges"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterChanges",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterlogs",children:"eth_getFilterLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterLogs",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getlogs",children:"eth_getLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads logs"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getLogs",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getproof",children:"eth_getProof"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"https://github.com/ethereum/EIPs/issues/1186",children:"https://github.com/ethereum/EIPs/issues/1186"})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"hashRate"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getProof",\n "params": [accountAddress, hashRate, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageProofs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hasValue"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"span"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getstorageat",children:"eth_getStorageAt"}),"\n",(0,r.jsx)(n.p,{children:"Returns storage data at address. storage_index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getStorageAt",\n "params": [address, positionIndex, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblockhashandindex",children:"eth_getTransactionByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block hash and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockHashAndIndex",\n "params": [blockHash, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblocknumberandindex",children:"eth_getTransactionByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block number and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyhash",children:"eth_getTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactioncount",children:"eth_getTransactionCount"}),"\n",(0,r.jsx)(n.p,{children:"Returns account nonce (number of trnsactions from the account since genesis) at the given block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionCount",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionreceipt",children:"eth_getTransactionReceipt"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction receipt by tx hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionReceipt",\n "params": [txHashData]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblockhashandindex",children:"eth_getUncleByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block hash and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockHashAndIndex",\n "params": [blockHashData, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblocknumberandindex",children:"eth_getUncleByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block number and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblockhash",children:"eth_getUncleCountByBlockHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblocknumber",children:"eth_getUncleCountByBlockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newblockfilter",children:"eth_newBlockFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newBlockFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newfilter",children:"eth_newFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newFilter",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newpendingtransactionfilter",children:"eth_newPendingTransactionFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newPendingTransactionFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_pendingtransactions",children:"eth_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns the pending transactions list"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_pendingTransactions",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_protocolversion",children:"eth_protocolVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns ETH protocol version"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_protocolVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendrawtransaction",children:"eth_sendRawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a raw transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transaction"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendRawTransaction",\n "params": [transaction]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendtransaction",children:"eth_sendTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rpcTx"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendTransaction",\n "params": [rpcTx]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_subscribe",children:"eth_subscribe"}),"\n",(0,r.jsx)(n.p,{children:"Starts a subscription to a particular event over WebSockets. A JSON-RPC notification with event payload and subscription id is sent to a client for every event matching the subscription topic."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"subscriptionName"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_subscribe",\n "params": [subscriptionName, args]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": "0x..." // subscription id\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]}),(0,r.jsxs)(c.A,{value:"notif",label:"Notification",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "method": "eth_subscription",\n "params": {\n "subscription": "0x...", // subscription id\n "result": payload\n }\n}\n'})}),(0,r.jsxs)(n.p,{children:["See specific subcription topic below for ",(0,r.jsx)(n.code,{children:"payload"})," details."]})]})]}),"\n",(0,r.jsx)(n.h4,{id:"subscription-topics",children:"Subscription topics"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newheads",children:"newHeads"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming block headers. Fires a notification each time a new header is appended to the chain, including chain reorganizations."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"logs",children:"logs"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to incoming logs filtered by the given options. In case of a chain reorganization, previously sent logs on the old chain will be re-sent with the ",(0,r.jsx)(n.code,{children:"removed"})," field set to ",(0,r.jsx)(n.code,{children:"true"}),"."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newpendingtransactions",children:"newPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming pending transactions. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"droppedpendingtransactions",children:"droppedPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to transactions evicted from the transaction pool. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"syncing",children:"syncing"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to syncing events. Returns ",(0,r.jsx)(n.code,{children:"false"})," (once) if the node is synced or an object with statistics (once) when the node starts syncing."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),":"]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["if synced: ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:["if syncing: ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_syncing",children:"eth_syncing"}),"\n",(0,r.jsx)(n.p,{children:"Returns syncing status"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_syncing",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"syncMode"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_uninstallfilter",children:"eth_uninstallFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_uninstallFilter",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_unsubscribe",children:"eth_unsubscribe"}),"\n",(0,r.jsx)(n.p,{children:"Unsubscribes from a subscription."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subscriptionId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_unsubscribe",\n "params": [subscriptionId]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})," (",(0,r.jsx)(n.code,{children:"true"})," if unsubscribed successfully; otherwise, ",(0,r.jsx)(n.code,{children:"false"}),")"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(j,{...e})}):j(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),t=s(1682),x=s(679);function a(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function j(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return a(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,t.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=j(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[t,a]=g({queryString:s,groupId:i}),[m,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,x.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=t??m;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),a(e),u(e)}),[a,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:t}=(0,l.a_)(),x=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(t(n),c(i))},a=e=>{let n=null;switch(e.key){case"Enter":x(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:a,onClick:x,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,u.A)();return(0,b.jsx)(y,{...e,children:a(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9027],{7783:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>x,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>t,toc:()=>a});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"eth namespace",sidebar_label:"eth",sidebar_position:3},h=void 0,t={id:"interacting/json-rpc-ns/eth",title:"eth namespace",description:"eth_blobBaseFee",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/eth.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/eth",permalink:"/1.26.0/interacting/json-rpc-ns/eth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/eth.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:3,frontMatter:{title:"eth namespace",sidebar_label:"eth",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"debug",permalink:"/1.26.0/interacting/json-rpc-ns/debug"},next:{title:"net",permalink:"/1.26.0/interacting/json-rpc-ns/net"}},x={},a=[{value:"eth_blobBaseFee",id:"eth_blobbasefee",level:3},{value:"eth_blockNumber",id:"eth_blocknumber",level:3},{value:"eth_call",id:"eth_call",level:3},{value:"eth_chainId",id:"eth_chainid",level:3},{value:"eth_createAccessList",id:"eth_createaccesslist",level:3},{value:"eth_estimateGas",id:"eth_estimategas",level:3},{value:"eth_feeHistory",id:"eth_feehistory",level:3},{value:"eth_gasPrice",id:"eth_gasprice",level:3},{value:"eth_getAccount",id:"eth_getaccount",level:3},{value:"eth_getBalance",id:"eth_getbalance",level:3},{value:"eth_getBlockByHash",id:"eth_getblockbyhash",level:3},{value:"eth_getBlockByNumber",id:"eth_getblockbynumber",level:3},{value:"eth_getBlockReceipts",id:"eth_getblockreceipts",level:3},{value:"eth_getBlockTransactionCountByHash",id:"eth_getblocktransactioncountbyhash",level:3},{value:"eth_getBlockTransactionCountByNumber",id:"eth_getblocktransactioncountbynumber",level:3},{value:"eth_getCode",id:"eth_getcode",level:3},{value:"eth_getFilterChanges",id:"eth_getfilterchanges",level:3},{value:"eth_getFilterLogs",id:"eth_getfilterlogs",level:3},{value:"eth_getLogs",id:"eth_getlogs",level:3},{value:"eth_getProof",id:"eth_getproof",level:3},{value:"eth_getStorageAt",id:"eth_getstorageat",level:3},{value:"eth_getTransactionByBlockHashAndIndex",id:"eth_gettransactionbyblockhashandindex",level:3},{value:"eth_getTransactionByBlockNumberAndIndex",id:"eth_gettransactionbyblocknumberandindex",level:3},{value:"eth_getTransactionByHash",id:"eth_gettransactionbyhash",level:3},{value:"eth_getTransactionCount",id:"eth_gettransactioncount",level:3},{value:"eth_getTransactionReceipt",id:"eth_gettransactionreceipt",level:3},{value:"eth_getUncleByBlockHashAndIndex",id:"eth_getunclebyblockhashandindex",level:3},{value:"eth_getUncleByBlockNumberAndIndex",id:"eth_getunclebyblocknumberandindex",level:3},{value:"eth_getUncleCountByBlockHash",id:"eth_getunclecountbyblockhash",level:3},{value:"eth_getUncleCountByBlockNumber",id:"eth_getunclecountbyblocknumber",level:3},{value:"eth_newBlockFilter",id:"eth_newblockfilter",level:3},{value:"eth_newFilter",id:"eth_newfilter",level:3},{value:"eth_newPendingTransactionFilter",id:"eth_newpendingtransactionfilter",level:3},{value:"eth_pendingTransactions",id:"eth_pendingtransactions",level:3},{value:"eth_protocolVersion",id:"eth_protocolversion",level:3},{value:"eth_sendRawTransaction",id:"eth_sendrawtransaction",level:3},{value:"eth_sendTransaction",id:"eth_sendtransaction",level:3},{value:"eth_subscribe",id:"eth_subscribe",level:3},{value:"Subscription topics",id:"subscription-topics",level:4},{value:"newHeads",id:"newheads",level:5},{value:"logs",id:"logs",level:5},{value:"newPendingTransactions",id:"newpendingtransactions",level:5},{value:"droppedPendingTransactions",id:"droppedpendingtransactions",level:5},{value:"syncing",id:"syncing",level:5},{value:"eth_syncing",id:"eth_syncing",level:3},{value:"eth_uninstallFilter",id:"eth_uninstallfilter",level:3},{value:"eth_unsubscribe",id:"eth_unsubscribe",level:3}];function j(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h3:"h3",h4:"h4",h5:"h5",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"eth_blobbasefee",children:"eth_blobBaseFee"}),"\n",(0,r.jsx)(n.p,{children:"Returns the base fee per blob gas in wei"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blobBaseFee",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_blocknumber",children:"eth_blockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns current block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_blockNumber",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_call",children:"eth_call"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_call",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_chainid",children:"eth_chainId"}),"\n",(0,r.jsx)(n.p,{children:"Returns ChainID"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_chainId",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_createaccesslist",children:"eth_createAccessList"}),"\n",(0,r.jsxs)(n.p,{children:["Creates an ",(0,r.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-2930",children:"EIP2930"})," type AccessList for the given transaction"]}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"optimize"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_createAccessList",\n "params": [transactionCall, blockParameter, optimize]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_estimategas",children:"eth_estimateGas"}),"\n",(0,r.jsx)(n.p,{children:"Executes a tx call and returns gas used (does not create a transaction)"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"transactionCall"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_estimateGas",\n "params": [transactionCall, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_feehistory",children:"eth_feeHistory"}),"\n",(0,r.jsx)(n.p,{children:"Returns block fee history."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockCount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"newestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"rewardPercentiles"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_feeHistory",\n "params": [blockCount, newestBlock, rewardPercentiles]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerBlobGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsedRatio"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oldestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"reward"}),": array of array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gasprice",children:"eth_gasPrice"}),"\n",(0,r.jsx)(n.p,{children:"Returns miner's gas price"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_gasPrice",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getaccount",children:"eth_getAccount"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves Accounts via Address and Blocknumber"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getAccount",\n "params": [accountAddress, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytesAsSpan"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getbalance",children:"eth_getBalance"}),"\n",(0,r.jsx)(n.p,{children:"Returns account balance"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBalance",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbyhash",children:"eth_getBlockByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByHash",\n "params": [blockHash, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockbynumber",children:"eth_getBlockByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a block by number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"returnFullTransactionObjects"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockByNumber",\n "params": [blockParameter, returnFullTransactionObjects]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblockreceipts",children:"eth_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbyhash",children:"eth_getBlockTransactionCountByHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getblocktransactioncountbynumber",children:"eth_getBlockTransactionCountByNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of transactions in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getBlockTransactionCountByNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getcode",children:"eth_getCode"}),"\n",(0,r.jsx)(n.p,{children:"Returns account code at given address and block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getCode",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterchanges",children:"eth_getFilterChanges"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterChanges",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getfilterlogs",children:"eth_getFilterLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads filter changes"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getFilterLogs",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getlogs",children:"eth_getLogs"}),"\n",(0,r.jsx)(n.p,{children:"Reads logs"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getLogs",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getproof",children:"eth_getProof"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"https://github.com/ethereum/EIPs/issues/1186",children:"https://github.com/ethereum/EIPs/issues/1186"})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"accountAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"hashRate"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getProof",\n "params": [accountAddress, hashRate, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"codeHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageProofs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"proof"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hasValue"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"span"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isEmpty"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"item"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"length"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getstorageat",children:"eth_getStorageAt"}),"\n",(0,r.jsx)(n.p,{children:"Returns storage data at address. storage_index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getStorageAt",\n "params": [address, positionIndex, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblockhashandindex",children:"eth_getTransactionByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block hash and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockHashAndIndex",\n "params": [blockHash, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyblocknumberandindex",children:"eth_getTransactionByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by block number and index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionbyhash",children:"eth_getTransactionByHash"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction by hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionByHash",\n "params": [transactionHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactioncount",children:"eth_getTransactionCount"}),"\n",(0,r.jsx)(n.p,{children:"Returns account nonce (number of trnsactions from the account since genesis) at the given block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionCount",\n "params": [address, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_gettransactionreceipt",children:"eth_getTransactionReceipt"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves a transaction receipt by tx hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getTransactionReceipt",\n "params": [txHashData]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblockhashandindex",children:"eth_getUncleByBlockHashAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block hash and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockHashData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockHashAndIndex",\n "params": [blockHashData, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclebyblocknumberandindex",children:"eth_getUncleByBlockNumberAndIndex"}),"\n",(0,r.jsx)(n.p,{children:"Retrieves an uncle block header by block number and uncle index"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"positionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleByBlockNumberAndIndex",\n "params": [blockParameter, positionIndex]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInGwei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amountInWei"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblockhash",children:"eth_getUncleCountByBlockHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block hash"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockHash",\n "params": [blockHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_getunclecountbyblocknumber",children:"eth_getUncleCountByBlockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns number of uncles in the block by block number"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_getUncleCountByBlockNumber",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newblockfilter",children:"eth_newBlockFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newBlockFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newfilter",children:"eth_newFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newFilter",\n "params": [filter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_newpendingtransactionfilter",children:"eth_newPendingTransactionFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_newPendingTransactionFilter",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_pendingtransactions",children:"eth_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns the pending transactions list"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_pendingTransactions",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_protocolversion",children:"eth_protocolVersion"}),"\n",(0,r.jsx)(n.p,{children:"Returns ETH protocol version"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_protocolVersion",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendrawtransaction",children:"eth_sendRawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a raw transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transaction"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendRawTransaction",\n "params": [transaction]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_sendtransaction",children:"eth_sendTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Send a transaction to the tx pool and broadcasting"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rpcTx"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_sendTransaction",\n "params": [rpcTx]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_subscribe",children:"eth_subscribe"}),"\n",(0,r.jsx)(n.p,{children:"Starts a subscription to a particular event over WebSockets. A JSON-RPC notification with event payload and subscription id is sent to a client for every event matching the subscription topic."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"subscriptionName"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"filter"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_subscribe",\n "params": [subscriptionName, args]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": "0x..." // subscription id\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]}),(0,r.jsxs)(c.A,{value:"notif",label:"Notification",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "method": "eth_subscription",\n "params": {\n "subscription": "0x...", // subscription id\n "result": payload\n }\n}\n'})}),(0,r.jsxs)(n.p,{children:["See specific subcription topic below for ",(0,r.jsx)(n.code,{children:"payload"})," details."]})]})]}),"\n",(0,r.jsx)(n.h4,{id:"subscription-topics",children:"Subscription topics"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newheads",children:"newHeads"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming block headers. Fires a notification each time a new header is appended to the chain, including chain reorganizations."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"extraData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasLimit"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"miner"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mixHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"number"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"parentHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"signature"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"size"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"step"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"timestamp"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactions"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"uncles"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"amount"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"index"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"validatorIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"logs",children:"logs"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to incoming logs filtered by the given options. In case of a chain reorganization, previously sent logs on the old chain will be re-sent with the ",(0,r.jsx)(n.code,{children:"removed"})," field set to ",(0,r.jsx)(n.code,{children:"true"}),"."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionLogIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"newpendingtransactions",children:"newPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to incoming pending transactions. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"droppedpendingtransactions",children:"droppedPendingTransactions"})}),(0,r.jsxs)("p",{children:[(0,r.jsx)(n.p,{children:"Subscribes to transactions evicted from the transaction pool. Returns the transaction hash."}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h5,{id:"syncing",children:"syncing"})}),(0,r.jsxs)("p",{children:[(0,r.jsxs)(n.p,{children:["Subscribes to syncing events. Returns ",(0,r.jsx)(n.code,{children:"false"})," (once) if the node is synced or an object with statistics (once) when the node starts syncing."]}),(0,r.jsxs)(n.p,{children:["Notification ",(0,r.jsx)(n.code,{children:"payload"}),":"]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["if synced: ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:["if syncing: ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_syncing",children:"eth_syncing"}),"\n",(0,r.jsx)(n.p,{children:"Returns syncing status"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_syncing",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"currentBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"highestBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSyncing"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"startingBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"syncMode"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_uninstallfilter",children:"eth_uninstallFilter"}),"\n",(0,r.jsx)(n.p,{children:"Creates an update filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"filterId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_uninstallFilter",\n "params": [filterId]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"eth_unsubscribe",children:"eth_unsubscribe"}),"\n",(0,r.jsx)(n.p,{children:"Unsubscribes from a subscription."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["This method is enabled by adding ",(0,r.jsx)(n.code,{children:"subscribe"})," to ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#jsonrpc",children:(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})}),"."]})}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subscriptionId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"wscat -c ws://localhost:8545\n"})}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "eth_unsubscribe",\n "params": [subscriptionId]\n}\n'})})]}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})," (",(0,r.jsx)(n.code,{children:"true"})," if unsubscribed successfully; otherwise, ",(0,r.jsx)(n.code,{children:"false"}),")"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(j,{...e})}):j(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),t=s(1682),x=s(679);function a(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function j(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return a(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,t.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=j(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[t,a]=g({queryString:s,groupId:i}),[m,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,x.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=t??m;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),a(e),u(e)}),[a,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:t}=(0,l.a_)(),x=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(t(n),c(i))},a=e=>{let n=null;switch(e.key){case"Enter":x(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:a,onClick:x,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,u.A)();return(0,b.jsx)(y,{...e,children:a(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e396bf53.7471f173.js b/assets/js/e396bf53.c36274ff.js similarity index 99% rename from assets/js/e396bf53.7471f173.js rename to assets/js/e396bf53.c36274ff.js index 955bfa72d..f23fe0dcd 100644 --- a/assets/js/e396bf53.7471f173.js +++ b/assets/js/e396bf53.c36274ff.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2982],{3356:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=s(4848),l=s(8453),i=s(1470),t=s(9365);const a={title:"admin namespace",sidebar_label:"admin",sidebar_position:0},d=void 0,c={id:"interacting/json-rpc-ns/admin",title:"admin namespace",description:"admin_addPeer",source:"@site/docs/interacting/json-rpc-ns/admin.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/admin",permalink:"/next/interacting/json-rpc-ns/admin",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/admin.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"admin namespace",sidebar_label:"admin",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"JSON-RPC server",permalink:"/next/interacting/json-rpc-server"},next:{title:"clique",permalink:"/next/interacting/json-rpc-ns/clique"}},o={},u=[{value:"admin_addPeer",id:"admin_addpeer",level:3},{value:"admin_nodeInfo",id:"admin_nodeinfo",level:3},{value:"admin_peers",id:"admin_peers",level:3},{value:"admin_prune",id:"admin_prune",level:3},{value:"admin_removePeer",id:"admin_removepeer",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"admin_addpeer",children:"admin_addPeer"}),"\n",(0,r.jsx)(n.p,{children:"Adds given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"addToStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_addPeer",\n "params": [enode, addToStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Added node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_nodeinfo",children:"admin_nodeInfo"}),"\n",(0,r.jsx)(n.p,{children:"Displays relevant information about this node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_nodeInfo",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Information about this node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ip"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listenAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ports"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"discovery"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listener"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"genesisHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"newtorkId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_peers",children:"admin_peers"}),"\n",(0,r.jsxs)(n.p,{children:["Displays a list of connected peers including information about them (",(0,r.jsx)(n.code,{children:"clientId"}),", ",(0,r.jsx)(n.code,{children:"host"}),", ",(0,r.jsx)(n.code,{children:"port"}),", ",(0,r.jsx)(n.code,{children:"address"}),", ",(0,r.jsx)(n.code,{children:"isBootnode"}),", ",(0,r.jsx)(n.code,{children:"isStatic"}),", ",(0,r.jsx)(n.code,{children:"enode"}),")."]}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeDetails"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_peers",\n "params": [includeDetails]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"List of connected peers including information"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ethDetails"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"host"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isBootnode"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isStatic"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isTrusted"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"lastSignal"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"port"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_prune",children:"admin_prune"}),"\n",(0,r.jsx)(n.p,{children:"Runs full pruning if enabled."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_prune",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"integer"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_removepeer",children:"admin_removePeer"}),"\n",(0,r.jsx)(n.p,{children:"Removes given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"removeFromStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_removePeer",\n "params": [enode, removeFromStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Removed node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var i=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),l=s(4164),i=s(3104),t=s(6347),a=s(205),d=s(7485),c=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function x(e){let{queryString:n=!1,groupId:s}=e;const l=(0,t.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(l.location.search);n.set(i,e),l.replace({...l.location,search:n.toString()})}),[i,l])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,i=h(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[c,u]=x({queryString:s,groupId:l}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,i]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:l}),b=(()=>{const e=c??m;return j({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{b&&d(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),p(e)}),[u,p,i]),tabValues:i}}var p=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:a}=e;const d=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),l=a[s].value;l!==r&&(c(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:a.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:u,onClick:o,...i,className:(0,l.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function _(e){const n=m(e);return(0,g.jsxs)("div",{className:(0,l.A)("tabs-container",b.tabList),children:[(0,g.jsx)(f,{...n,...e}),(0,g.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,g.jsx)(_,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const l={},i=r.createContext(l);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2982],{3356:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=s(4848),l=s(8453),i=s(1470),t=s(9365);const a={title:"admin namespace",sidebar_label:"admin",sidebar_position:0},d=void 0,c={id:"interacting/json-rpc-ns/admin",title:"admin namespace",description:"admin_addPeer",source:"@site/docs/interacting/json-rpc-ns/admin.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/admin",permalink:"/next/interacting/json-rpc-ns/admin",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/interacting/json-rpc-ns/admin.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"admin namespace",sidebar_label:"admin",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"JSON-RPC server",permalink:"/next/interacting/json-rpc-server"},next:{title:"clique",permalink:"/next/interacting/json-rpc-ns/clique"}},o={},u=[{value:"admin_addPeer",id:"admin_addpeer",level:3},{value:"admin_nodeInfo",id:"admin_nodeinfo",level:3},{value:"admin_peers",id:"admin_peers",level:3},{value:"admin_prune",id:"admin_prune",level:3},{value:"admin_removePeer",id:"admin_removepeer",level:3}];function h(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"admin_addpeer",children:"admin_addPeer"}),"\n",(0,r.jsx)(n.p,{children:"Adds given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"addToStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_addPeer",\n "params": [enode, addToStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Added node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_nodeinfo",children:"admin_nodeInfo"}),"\n",(0,r.jsx)(n.p,{children:"Displays relevant information about this node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_nodeInfo",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Information about this node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ip"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listenAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ports"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"discovery"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"listener"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"genesisHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"newtorkId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_peers",children:"admin_peers"}),"\n",(0,r.jsxs)(n.p,{children:["Displays a list of connected peers including information about them (",(0,r.jsx)(n.code,{children:"clientId"}),", ",(0,r.jsx)(n.code,{children:"host"}),", ",(0,r.jsx)(n.code,{children:"port"}),", ",(0,r.jsx)(n.code,{children:"address"}),", ",(0,r.jsx)(n.code,{children:"isBootnode"}),", ",(0,r.jsx)(n.code,{children:"isStatic"}),", ",(0,r.jsx)(n.code,{children:"enode"}),")."]}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeDetails"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_peers",\n "params": [includeDetails]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"List of connected peers including information"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientId"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"clientType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ethDetails"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"host"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isBootnode"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isStatic"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isTrusted"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"lastSignal"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"port"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_prune",children:"admin_prune"}),"\n",(0,r.jsx)(n.p,{children:"Runs full pruning if enabled."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_prune",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"integer"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"admin_removepeer",children:"admin_removePeer"}),"\n",(0,r.jsx)(n.p,{children:"Removes given node."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"enode"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"removeFromStaticNodes"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "admin_removePeer",\n "params": [enode, removeFromStaticNodes]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Removed node"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const l={tabItem:"tabItem_Ymn6"};var i=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(l.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),l=s(4164),i=s(3104),t=s(6347),a=s(205),d=s(7485),c=s(1682),o=s(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:l}}=e;return{value:n,label:s,attributes:r,default:l}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function x(e){let{queryString:n=!1,groupId:s}=e;const l=(0,t.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(l.location.search);n.set(i,e),l.replace({...l.location,search:n.toString()})}),[i,l])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,i=h(e),[t,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[c,u]=x({queryString:s,groupId:l}),[m,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[l,i]=(0,o.Dv)(s);return[l,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:l}),b=(()=>{const e=c??m;return j({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{b&&d(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),p(e)}),[u,p,i]),tabValues:i}}var p=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:a}=e;const d=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),l=a[s].value;l!==r&&(c(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":s},n),children:a.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:u,onClick:o,...i,className:(0,l.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function _(e){const n=m(e);return(0,g.jsxs)("div",{className:(0,l.A)("tabs-container",b.tabList),children:[(0,g.jsx)(f,{...n,...e}),(0,g.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,g.jsx)(_,{...e,children:u(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const l={},i=r.createContext(l);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e445b067.266bda9f.js b/assets/js/e445b067.bbf155be.js similarity index 99% rename from assets/js/e445b067.266bda9f.js rename to assets/js/e445b067.bbf155be.js index b0e43d430..e3cde5e7f 100644 --- a/assets/js/e445b067.266bda9f.js +++ b/assets/js/e445b067.bbf155be.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[630],{4724:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>h,contentTitle:()=>a,default:()=>u,frontMatter:()=>d,metadata:()=>o,toc:()=>t});var i=l(4848),s=l(8453),r=l(1470),c=l(9365);const d={title:"Configuration",sidebar_position:1},a=void 0,o={id:"fundamentals/configuration",title:"Configuration",description:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:",source:"@site/docs/fundamentals/configuration.md",sourceDirName:"fundamentals",slug:"/fundamentals/configuration",permalink:"/next/fundamentals/configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/configuration.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Configuration",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Migrating from Geth",permalink:"/next/get-started/migrating-from-geth"},next:{title:"Sync",permalink:"/next/fundamentals/sync"}},h={},t=[{value:"Basic command line options",id:"basic-command-line-options",level:2},{value:"-d, --baseDbPath <path>",id:"basedbpath",level:4},{value:"-c, --config <value>",id:"config",level:4},{value:"-cd, --configsDirectory <path>",id:"configs-directory",level:4},{value:"-dd, --datadir <path>",id:"datadir",level:4},{value:"-?, -h, --help",id:"help",level:4},{value:"-l, --log <level>",id:"log",level:4},{value:"-lcs, --loggerConfigSource <path>",id:"loggerconfigsource",level:4},{value:"-pd, --pluginsDirectory <path>",id:"pluginsdirectory",level:4},{value:"-v, --version",id:"version",level:4},{value:"Options by namespaces",id:"options-by-namespaces",level:2},{value:"Aura",id:"aura",level:3},{value:"Aura.AllowAuRaPrivateChains",id:"aura-allowauraprivatechains",level:4},{value:"Aura.ForceSealing",id:"aura-forcesealing",level:4},{value:"Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract",id:"aura-minimum2mlngasperblockwhenusingblockgaslimitcontract",level:4},{value:"Aura.TxPriorityConfigFilePath",id:"aura-txpriorityconfigfilepath",level:4},{value:"Aura.TxPriorityContractAddress",id:"aura-txprioritycontractaddress",level:4},{value:"Blocks",id:"blocks",level:3},{value:"Blocks.BlockProductionTimeoutMs",id:"blocks-blockproductiontimeoutms",level:4},{value:"Blocks.ExtraData",id:"blocks-extradata",level:4},{value:"Blocks.GenesisTimeoutMs",id:"blocks-genesistimeoutms",level:4},{value:"Blocks.MinGasPrice",id:"blocks-mingasprice",level:4},{value:"Blocks.PreWarmStateOnBlockProcessing",id:"blocks-prewarmstateonblockprocessing",level:4},{value:"Blocks.RandomizedBlocks",id:"blocks-randomizedblocks",level:4},{value:"Blocks.SecondsPerSlot",id:"blocks-secondsperslot",level:4},{value:"Blocks.TargetBlockGasLimit",id:"blocks-targetblockgaslimit",level:4},{value:"Bloom",id:"bloom",level:3},{value:"Bloom.Index",id:"bloom-index",level:4},{value:"Bloom.IndexLevelBucketSizes",id:"bloom-indexlevelbucketsizes",level:4},{value:"Bloom.Migration",id:"bloom-migration",level:4},{value:"Bloom.MigrationStatistics",id:"bloom-migrationstatistics",level:4},{value:"CensorshipDetector",id:"censorshipdetector",level:3},{value:"CensorshipDetector.AddressesForCensorshipDetection",id:"censorshipdetector-addressesforcensorshipdetection",level:4},{value:"CensorshipDetector.BlockCensorshipThreshold",id:"censorshipdetector-blockcensorshipthreshold",level:4},{value:"CensorshipDetector.Enabled",id:"censorshipdetector-enabled",level:4},{value:"EthStats",id:"ethstats",level:3},{value:"EthStats.Contact",id:"ethstats-contact",level:4},{value:"EthStats.Enabled",id:"ethstats-enabled",level:4},{value:"EthStats.Name",id:"ethstats-name",level:4},{value:"EthStats.Secret",id:"ethstats-secret",level:4},{value:"EthStats.SendInterval",id:"ethstats-sendinterval",level:4},{value:"EthStats.Server",id:"ethstats-server",level:4},{value:"HealthChecks",id:"healthchecks",level:3},{value:"HealthChecks.Enabled",id:"healthchecks-enabled",level:4},{value:"HealthChecks.LowStorageCheckAwaitOnStartup",id:"healthchecks-lowstoragecheckawaitonstartup",level:4},{value:"HealthChecks.LowStorageSpaceShutdownThreshold",id:"healthchecks-lowstoragespaceshutdownthreshold",level:4},{value:"HealthChecks.LowStorageSpaceWarningThreshold",id:"healthchecks-lowstoragespacewarningthreshold",level:4},{value:"HealthChecks.MaxIntervalClRequestTime",id:"healthchecks-maxintervalclrequesttime",level:4},{value:"HealthChecks.MaxIntervalWithoutProcessedBlock",id:"healthchecks-maxintervalwithoutprocessedblock",level:4},{value:"HealthChecks.MaxIntervalWithoutProducedBlock",id:"healthchecks-maxintervalwithoutproducedblock",level:4},{value:"HealthChecks.PollingInterval",id:"healthchecks-pollinginterval",level:4},{value:"HealthChecks.Slug",id:"healthchecks-slug",level:4},{value:"HealthChecks.UIEnabled",id:"healthchecks-uienabled",level:4},{value:"HealthChecks.WebhooksEnabled",id:"healthchecks-webhooksenabled",level:4},{value:"HealthChecks.WebhooksPayload",id:"healthchecks-webhookspayload",level:4},{value:"HealthChecks.WebhooksRestorePayload",id:"healthchecks-webhooksrestorepayload",level:4},{value:"HealthChecks.WebhooksUri",id:"healthchecks-webhooksuri",level:4},{value:"Hive",id:"hive",level:3},{value:"Hive.BlocksDir",id:"hive-blocksdir",level:4},{value:"Hive.ChainFile",id:"hive-chainfile",level:4},{value:"Hive.Enabled",id:"hive-enabled",level:4},{value:"Hive.GenesisFilePath",id:"hive-genesisfilepath",level:4},{value:"Hive.KeysDir",id:"hive-keysdir",level:4},{value:"Init",id:"init",level:3},{value:"Init.AutoDump",id:"init-autodump",level:4},{value:"Init.BadBlocksStored",id:"init-badblocksstored",level:4},{value:"Init.BaseDbPath",id:"init-basedbpath",level:4},{value:"Init.ChainSpecPath",id:"init-chainspecpath",level:4},{value:"Init.DiagnosticMode",id:"init-diagnosticmode",level:4},{value:"Init.DiscoveryEnabled",id:"init-discoveryenabled",level:4},{value:"Init.EnableUnsecuredDevWallet",id:"init-enableunsecureddevwallet",level:4},{value:"Init.GenesisHash",id:"init-genesishash",level:4},{value:"Init.HiveChainSpecPath",id:"init-hivechainspecpath",level:4},{value:"Init.IsMining",id:"init-ismining",level:4},{value:"Init.KeepDevWalletInMemory",id:"init-keepdevwalletinmemory",level:4},{value:"Init.KzgSetupPath",id:"init-kzgsetuppath",level:4},{value:"Init.LogDirectory",id:"init-logdirectory",level:4},{value:"Init.LogFileName",id:"init-logfilename",level:4},{value:"Init.LogRules",id:"init-logrules",level:4},{value:"Init.MemoryHint",id:"init-memoryhint",level:4},{value:"Init.PeerManagerEnabled",id:"init-peermanagerenabled",level:4},{value:"Init.ProcessingEnabled",id:"init-processingenabled",level:4},{value:"Init.RpcDbUrl",id:"init-rpcdburl",level:4},{value:"Init.StaticNodesPath",id:"init-staticnodespath",level:4},{value:"Init.WebSocketsEnabled",id:"init-websocketsenabled",level:4},{value:"JsonRpc",id:"jsonrpc",level:3},{value:"JsonRpc.AdditionalRpcUrls",id:"jsonrpc-additionalrpcurls",level:4},{value:"JsonRpc.BufferResponses",id:"jsonrpc-bufferresponses",level:4},{value:"JsonRpc.CallsFilterFilePath",id:"jsonrpc-callsfilterfilepath",level:4},{value:"JsonRpc.Enabled",id:"jsonrpc-enabled",level:4},{value:"JsonRpc.EnabledModules",id:"jsonrpc-enabledmodules",level:4},{value:"JsonRpc.EngineEnabledModules",id:"jsonrpc-engineenabledmodules",level:4},{value:"JsonRpc.EngineHost",id:"jsonrpc-enginehost",level:4},{value:"JsonRpc.EnginePort",id:"jsonrpc-engineport",level:4},{value:"JsonRpc.EstimateErrorMargin",id:"jsonrpc-estimateerrormargin",level:4},{value:"JsonRpc.EthModuleConcurrentInstances",id:"jsonrpc-ethmoduleconcurrentinstances",level:4},{value:"JsonRpc.GasCap",id:"jsonrpc-gascap",level:4},{value:"JsonRpc.Host",id:"jsonrpc-host",level:4},{value:"JsonRpc.IpcUnixDomainSocketPath",id:"jsonrpc-ipcunixdomainsocketpath",level:4},{value:"JsonRpc.JwtSecretFile",id:"jsonrpc-jwtsecretfile",level:4},{value:"JsonRpc.MaxBatchResponseBodySize",id:"jsonrpc-maxbatchresponsebodysize",level:4},{value:"JsonRpc.MaxBatchSize",id:"jsonrpc-maxbatchsize",level:4},{value:"JsonRpc.MaxLoggedRequestParametersCharacters",id:"jsonrpc-maxloggedrequestparameterscharacters",level:4},{value:"JsonRpc.MaxLogsPerResponse",id:"jsonrpc-maxlogsperresponse",level:4},{value:"JsonRpc.MaxRequestBodySize",id:"jsonrpc-maxrequestbodysize",level:4},{value:"JsonRpc.MaxSimulateBlocksCap",id:"jsonrpc-maxsimulateblockscap",level:4},{value:"JsonRpc.MethodsLoggingFiltering",id:"jsonrpc-methodsloggingfiltering",level:4},{value:"JsonRpc.Port",id:"jsonrpc-port",level:4},{value:"JsonRpc.ReportIntervalSeconds",id:"jsonrpc-reportintervalseconds",level:4},{value:"JsonRpc.RequestQueueLimit",id:"jsonrpc-requestqueuelimit",level:4},{value:"JsonRpc.RpcRecorderBaseFilePath",id:"jsonrpc-rpcrecorderbasefilepath",level:4},{value:"JsonRpc.RpcRecorderState",id:"jsonrpc-rpcrecorderstate",level:4},{value:"JsonRpc.Timeout",id:"jsonrpc-timeout",level:4},{value:"JsonRpc.WebSocketsPort",id:"jsonrpc-websocketsport",level:4},{value:"KeyStore",id:"keystore",level:3},{value:"KeyStore.BlockAuthorAccount",id:"keystore-blockauthoraccount",level:4},{value:"KeyStore.Cipher",id:"keystore-cipher",level:4},{value:"KeyStore.EnodeAccount",id:"keystore-enodeaccount",level:4},{value:"KeyStore.EnodeKeyFile",id:"keystore-enodekeyfile",level:4},{value:"KeyStore.IVSize",id:"keystore-ivsize",level:4},{value:"KeyStore.Kdf",id:"keystore-kdf",level:4},{value:"KeyStore.KdfparamsDklen",id:"keystore-kdfparamsdklen",level:4},{value:"KeyStore.KdfparamsN",id:"keystore-kdfparamsn",level:4},{value:"KeyStore.KdfparamsP",id:"keystore-kdfparamsp",level:4},{value:"KeyStore.KdfparamsR",id:"keystore-kdfparamsr",level:4},{value:"KeyStore.KdfparamsSaltLen",id:"keystore-kdfparamssaltlen",level:4},{value:"KeyStore.KeyStoreDirectory",id:"keystore-keystoredirectory",level:4},{value:"KeyStore.KeyStoreEncoding",id:"keystore-keystoreencoding",level:4},{value:"KeyStore.PasswordFiles",id:"keystore-passwordfiles",level:4},{value:"KeyStore.Passwords",id:"keystore-passwords",level:4},{value:"KeyStore.SymmetricEncrypterBlockSize",id:"keystore-symmetricencrypterblocksize",level:4},{value:"KeyStore.SymmetricEncrypterKeySize",id:"keystore-symmetricencrypterkeysize",level:4},{value:"KeyStore.TestNodeKey",id:"keystore-testnodekey",level:4},{value:"KeyStore.UnlockAccounts",id:"keystore-unlockaccounts",level:4},{value:"Merge",id:"merge",level:3},{value:"Merge.BuilderRelayUrl",id:"merge-builderrelayurl",level:4},{value:"Merge.CollectionsPerDecommit",id:"merge-collectionsperdecommit",level:4},{value:"Merge.CompactMemory",id:"merge-compactmemory",level:4},{value:"Merge.Enabled",id:"merge-enabled",level:4},{value:"Merge.FinalTotalDifficulty",id:"merge-finaltotaldifficulty",level:4},{value:"Merge.PrioritizeBlockLatency",id:"merge-prioritizeblocklatency",level:4},{value:"Merge.SweepMemory",id:"merge-sweepmemory",level:4},{value:"Merge.TerminalBlockHash",id:"merge-terminalblockhash",level:4},{value:"Merge.TerminalBlockNumber",id:"merge-terminalblocknumber",level:4},{value:"Merge.TerminalTotalDifficulty",id:"merge-terminaltotaldifficulty",level:4},{value:"Metrics",id:"metrics",level:3},{value:"Metrics.CountersEnabled",id:"metrics-countersenabled",level:4},{value:"Metrics.Enabled",id:"metrics-enabled",level:4},{value:"Metrics.EnableDbSizeMetrics",id:"metrics-enabledbsizemetrics",level:4},{value:"Metrics.ExposeHost",id:"metrics-exposehost",level:4},{value:"Metrics.ExposePort",id:"metrics-exposeport",level:4},{value:"Metrics.IntervalSeconds",id:"metrics-intervalseconds",level:4},{value:"Metrics.NodeName",id:"metrics-nodename",level:4},{value:"Metrics.PushGatewayUrl",id:"metrics-pushgatewayurl",level:4},{value:"Mining",id:"mining",level:3},{value:"Mining.Enabled",id:"mining-enabled",level:4},{value:"Mining.Signer",id:"mining-signer",level:4},{value:"Network",id:"network",level:3},{value:"Network.Bootnodes",id:"network-bootnodes",level:4},{value:"Network.DiagTracerEnabled",id:"network-diagtracerenabled",level:4},{value:"Network.DiscoveryDns",id:"network-discoverydns",level:4},{value:"Network.DiscoveryPort",id:"network-discoveryport",level:4},{value:"Network.EnableUPnP",id:"network-enableupnp",level:4},{value:"Network.ExternalIp",id:"network-externalip",level:4},{value:"Network.LocalIp",id:"network-localip",level:4},{value:"Network.MaxActivePeers",id:"network-maxactivepeers",level:4},{value:"Network.MaxNettyArenaCount",id:"network-maxnettyarenacount",level:4},{value:"Network.NettyArenaOrder",id:"network-nettyarenaorder",level:4},{value:"Network.OnlyStaticPeers",id:"network-onlystaticpeers",level:4},{value:"Network.P2PPort",id:"network-p2pport",level:4},{value:"Network.PriorityPeersMaxCount",id:"network-prioritypeersmaxcount",level:4},{value:"Network.StaticPeers",id:"network-staticpeers",level:4},{value:"Optimism",id:"optimism",level:3},{value:"Optimism.SequencerUrl",id:"optimism-sequencerurl",level:4},{value:"Pruning",id:"pruning",level:3},{value:"Pruning.AvailableSpaceCheckEnabled",id:"pruning-availablespacecheckenabled",level:4},{value:"Pruning.CacheMb",id:"pruning-cachemb",level:4},{value:"Pruning.FullPruningCompletionBehavior",id:"pruning-fullpruningcompletionbehavior",level:4},{value:"Pruning.FullPruningDisableLowPriorityWrites",id:"pruning-fullpruningdisablelowprioritywrites",level:4},{value:"Pruning.FullPruningMaxDegreeOfParallelism",id:"pruning-fullpruningmaxdegreeofparallelism",level:4},{value:"Pruning.FullPruningMemoryBudgetMb",id:"pruning-fullpruningmemorybudgetmb",level:4},{value:"Pruning.FullPruningMinimumDelayHours",id:"pruning-fullpruningminimumdelayhours",level:4},{value:"Pruning.FullPruningThresholdMb",id:"pruning-fullpruningthresholdmb",level:4},{value:"Pruning.FullPruningTrigger",id:"pruning-fullpruningtrigger",level:4},{value:"Pruning.Mode",id:"pruning-mode",level:4},{value:"Pruning.PersistenceInterval",id:"pruning-persistenceinterval",level:4},{value:"Pruning.PruningBoundary",id:"pruning-pruningboundary",level:4},{value:"Pruning.TrackedPastKeyCountMemoryRatio",id:"pruning-trackedpastkeycountmemoryratio",level:4},{value:"Receipt",id:"receipt",level:3},{value:"Receipt.CompactReceiptStore",id:"receipt-compactreceiptstore",level:4},{value:"Receipt.CompactTxIndex",id:"receipt-compacttxindex",level:4},{value:"Receipt.ReceiptsMigration",id:"receipt-receiptsmigration",level:4},{value:"Receipt.StoreReceipts",id:"receipt-storereceipts",level:4},{value:"Receipt.TxLookupLimit",id:"receipt-txlookuplimit",level:4},{value:"Seq",id:"seq",level:3},{value:"Seq.ApiKey",id:"seq-apikey",level:4},{value:"Seq.MinLevel",id:"seq-minlevel",level:4},{value:"Seq.ServerUrl",id:"seq-serverurl",level:4},{value:"Shutter",id:"shutter",level:3},{value:"Shutter.BootnodeP2PAddresses",id:"shutter-bootnodep2paddresses",level:4},{value:"Shutter.Enabled",id:"shutter-enabled",level:4},{value:"Shutter.InstanceID",id:"shutter-instanceid",level:4},{value:"Shutter.KeyBroadcastContractAddress",id:"shutter-keybroadcastcontractaddress",level:4},{value:"Shutter.KeyperSetManagerContractAddress",id:"shutter-keypersetmanagercontractaddress",level:4},{value:"Shutter.P2PPort",id:"shutter-p2pport",level:4},{value:"Shutter.SequencerContractAddress",id:"shutter-sequencercontractaddress",level:4},{value:"Shutter.ValidatorInfoFile",id:"shutter-validatorinfofile",level:4},{value:"Shutter.ValidatorRegistryContractAddress",id:"shutter-validatorregistrycontractaddress",level:4},{value:"Snapshot",id:"snapshot",level:3},{value:"Snapshot.Checksum",id:"snapshot-checksum",level:4},{value:"Snapshot.DownloadUrl",id:"snapshot-downloadurl",level:4},{value:"Snapshot.Enabled",id:"snapshot-enabled",level:4},{value:"Snapshot.SnapshotDirectory",id:"snapshot-snapshotdirectory",level:4},{value:"Snapshot.SnapshotFileName",id:"snapshot-snapshotfilename",level:4},{value:"Sync",id:"sync",level:3},{value:"Sync.AncientBodiesBarrier",id:"sync-ancientbodiesbarrier",level:4},{value:"Sync.AncientReceiptsBarrier",id:"sync-ancientreceiptsbarrier",level:4},{value:"Sync.BlocksDbTuneDbMode",id:"sync-blocksdbtunedbmode",level:4},{value:"Sync.DownloadBodiesInFastSync",id:"sync-downloadbodiesinfastsync",level:4},{value:"Sync.DownloadHeadersInFastSync",id:"sync-downloadheadersinfastsync",level:4},{value:"Sync.DownloadReceiptsInFastSync",id:"sync-downloadreceiptsinfastsync",level:4},{value:"Sync.ExitOnSynced",id:"sync-exitonsynced",level:4},{value:"Sync.ExitOnSyncedWaitTimeSec",id:"sync-exitonsyncedwaittimesec",level:4},{value:"Sync.FastSync",id:"sync-fastsync",level:4},{value:"Sync.FastSyncCatchUpHeightDelta",id:"sync-fastsynccatchupheightdelta",level:4},{value:"Sync.FixReceipts",id:"sync-fixreceipts",level:4},{value:"Sync.FixTotalDifficulty",id:"sync-fixtotaldifficulty",level:4},{value:"Sync.FixTotalDifficultyLastBlock",id:"sync-fixtotaldifficultylastblock",level:4},{value:"Sync.FixTotalDifficultyStartingBlock",id:"sync-fixtotaldifficultystartingblock",level:4},{value:"Sync.MaxAttemptsToUpdatePivot",id:"sync-maxattemptstoupdatepivot",level:4},{value:"Sync.MaxProcessingThreads",id:"sync-maxprocessingthreads",level:4},{value:"Sync.NetworkingEnabled",id:"sync-networkingenabled",level:4},{value:"Sync.NonValidatorNode",id:"sync-nonvalidatornode",level:4},{value:"Sync.PivotHash",id:"sync-pivothash",level:4},{value:"Sync.PivotNumber",id:"sync-pivotnumber",level:4},{value:"Sync.PivotTotalDifficulty",id:"sync-pivottotaldifficulty",level:4},{value:"Sync.SnapSync",id:"sync-snapsync",level:4},{value:"Sync.SnapSyncAccountRangePartitionCount",id:"sync-snapsyncaccountrangepartitioncount",level:4},{value:"Sync.StrictMode",id:"sync-strictmode",level:4},{value:"Sync.SynchronizationEnabled",id:"sync-synchronizationenabled",level:4},{value:"Sync.TuneDbMode",id:"sync-tunedbmode",level:4},{value:"Sync.UseGethLimitsInFastBlocks",id:"sync-usegethlimitsinfastblocks",level:4},{value:"TraceStore",id:"tracestore",level:3},{value:"TraceStore.BlocksToKeep",id:"tracestore-blockstokeep",level:4},{value:"TraceStore.DeserializationParallelization",id:"tracestore-deserializationparallelization",level:4},{value:"TraceStore.Enabled",id:"tracestore-enabled",level:4},{value:"TraceStore.TraceTypes",id:"tracestore-tracetypes",level:4},{value:"TxPool",id:"txpool",level:3},{value:"TxPool.BlobCacheSize",id:"txpool-blobcachesize",level:4},{value:"TxPool.BlobsSupport",id:"txpool-blobssupport",level:4},{value:"TxPool.GasLimit",id:"txpool-gaslimit",level:4},{value:"TxPool.HashCacheSize",id:"txpool-hashcachesize",level:4},{value:"TxPool.InMemoryBlobPoolSize",id:"txpool-inmemoryblobpoolsize",level:4},{value:"TxPool.MaxPendingBlobTxsPerSender",id:"txpool-maxpendingblobtxspersender",level:4},{value:"TxPool.MaxPendingTxsPerSender",id:"txpool-maxpendingtxspersender",level:4},{value:"TxPool.MinBaseFeeThreshold",id:"txpool-minbasefeethreshold",level:4},{value:"TxPool.PeerNotificationThreshold",id:"txpool-peernotificationthreshold",level:4},{value:"TxPool.PersistentBlobStorageSize",id:"txpool-persistentblobstoragesize",level:4},{value:"TxPool.ReportMinutes",id:"txpool-reportminutes",level:4},{value:"TxPool.Size",id:"txpool-size",level:4},{value:"Wallet",id:"wallet",level:3},{value:"Wallet.DevAccounts",id:"wallet-devaccounts",level:4},{value:"Environment variables",id:"environment-variables",level:2},{value:"Configuration file",id:"configuration-file",level:2}];function x(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components},{Details:l}=n;return l||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#basic-command-line-options",children:"Command line options"})," (aka arguments or flags)"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#environment-variables",children:"Environment variables"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#configuration-file",children:"Configuration file"})}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsx)(n.p,{children:"Given the above priority list, an option defined in a more priority way overrides the same option defined elsewhere if any."})}),"\n",(0,i.jsx)(n.p,{children:"The full list of configuration options can be displayed by running:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,i.jsx)(n.p,{children:"Below is the list of the basic command line options followed by an exhaustive list of configuration options by namespace."}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"The configuration options are case-sensitive and can be defined only once unless stated otherwise."})}),"\n",(0,i.jsx)(n.h2,{id:"basic-command-line-options",children:"Basic command line options"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"basedbpath",children:(0,i.jsx)(n.code,{children:"-d, --baseDbPath "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the Nethermind database directory. Defaults to ",(0,i.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"config",children:(0,i.jsx)(n.code,{children:"-c, --config "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the ",(0,i.jsx)(n.a,{href:"#configuration-file",children:"configuration file"})," or the name (without extension) of any of the configuration files in the configuration directory. Defaults to ",(0,i.jsx)(n.code,{children:"mainnet"}),"."]}),"\n",(0,i.jsxs)(l,{children:[(0,i.jsx)("summary",{children:"Available configurations"}),(0,i.jsxs)("p",{children:[(0,i.jsxs)(n.p,{children:["Nethermind provides the following pre-built configurations named as the networks they are for. Their respective versions for archive nodes are suffixed ",(0,i.jsx)(n.code,{children:"_archive"}),"."]}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"base-mainnet"})," ",(0,i.jsx)(n.code,{children:"base-mainnet_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"base-sepolia"})," ",(0,i.jsx)(n.code,{children:"base-sepolia_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"chiado"})," ",(0,i.jsx)(n.code,{children:"chiado_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"energyweb"})," ",(0,i.jsx)(n.code,{children:"energyweb_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"gnosis"})," ",(0,i.jsx)(n.code,{children:"gnosis_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"holesky"})," ",(0,i.jsx)(n.code,{children:"holesky_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mainnet"})," ",(0,i.jsx)(n.code,{children:"mainnet_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"op-mainnet"})," ",(0,i.jsx)(n.code,{children:"op-mainnet_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"op-sepolia"})," ",(0,i.jsx)(n.code,{children:"op-sepolia_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"sepolia"})," ",(0,i.jsx)(n.code,{children:"sepolia_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"volta"})," ",(0,i.jsx)(n.code,{children:"volta_archive"})]}),"\n"]})]})]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"configs-directory",children:(0,i.jsx)(n.code,{children:"-cd, --configsDirectory "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the configuration files directory. Defaults to ",(0,i.jsx)(n.code,{children:"configs"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"datadir",children:(0,i.jsx)(n.code,{children:"-dd, --datadir "})}),"\n",(0,i.jsx)(n.p,{children:"The path to the Nethermind data directory. Defaults to Nethermind's current directory."}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.p,{children:["The absolute paths set by ",(0,i.jsx)(n.a,{href:"#init-basedbpath",children:(0,i.jsx)(n.code,{children:"Init.BaseDbPath"})}),", ",(0,i.jsx)(n.a,{href:"#init-logdirectory",children:(0,i.jsx)(n.code,{children:"Init.LogDirectory"})}),", or ",(0,i.jsx)(n.a,{href:"#keystore-keystoredirectory",children:(0,i.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})})," options in a configuration file are not overridden by ",(0,i.jsx)(n.code,{children:"--datadir"}),"."]})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"help",children:(0,i.jsx)(n.code,{children:"-?, -h, --help"})}),"\n",(0,i.jsx)(n.p,{children:"Displays the full list of available command line options."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"log",children:(0,i.jsx)(n.code,{children:"-l, --log "})}),"\n",(0,i.jsxs)(n.p,{children:["Log level (severity). Allowed values: ",(0,i.jsx)(n.code,{children:"TRACE"})," ",(0,i.jsx)(n.code,{children:"DEBUG"})," ",(0,i.jsx)(n.code,{children:"INFO"})," ",(0,i.jsx)(n.code,{children:"WARN"})," ",(0,i.jsx)(n.code,{children:"ERROR"})," ",(0,i.jsx)(n.code,{children:"OFF"}),". Defaults to ",(0,i.jsx)(n.code,{children:"INFO"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loggerconfigsource",children:(0,i.jsx)(n.code,{children:"-lcs, --loggerConfigSource "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the NLog configuration file. Defaults to ",(0,i.jsx)(n.code,{children:"NLog.config"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pluginsdirectory",children:(0,i.jsx)(n.code,{children:"-pd, --pluginsDirectory "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the Nethermind plugins directory. Defaults to ",(0,i.jsx)(n.code,{children:"plugins"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"version",children:(0,i.jsx)(n.code,{children:"-v, --version"})}),"\n",(0,i.jsx)(n.p,{children:"Displays the Nethermind version info."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"options-by-namespaces",children:"Options by namespaces"}),"\n",(0,i.jsx)(n.h3,{id:"aura",children:"Aura"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-allowauraprivatechains",children:(0,i.jsx)(n.code,{children:"Aura.AllowAuRaPrivateChains"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.AllowAuRaPrivateChains \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_ALLOWAURAPRIVATECHAINS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "AllowAuRaPrivateChains": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to allow private Aura-based chains only. Do not use with existing Aura-based chains. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-forcesealing",children:(0,i.jsx)(n.code,{children:"Aura.ForceSealing"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.ForceSealing \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_FORCESEALING=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "ForceSealing": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to seal empty blocks if mining. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-minimum2mlngasperblockwhenusingblockgaslimitcontract",children:(0,i.jsx)(n.code,{children:"Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_MINIMUM2MLNGASPERBLOCKWHENUSINGBLOCKGASLIMITCONTRACT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use 2M gas if the contract returns less than that when using ",(0,i.jsx)(n.code,{children:"BlockGasLimitContractTransitions"}),". Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-txpriorityconfigfilepath",children:(0,i.jsx)(n.code,{children:"Aura.TxPriorityConfigFilePath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.TxPriorityConfigFilePath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONFIGFILEPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "TxPriorityConfigFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the transaction priority rules file to use when selecting transactions from the transaction pool. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-txprioritycontractaddress",children:(0,i.jsx)(n.code,{children:"Aura.TxPriorityContractAddress"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.TxPriorityContractAddress \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONTRACTADDRESS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "TxPriorityContractAddress": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The address of the transaction priority contract to use when selecting transactions from the transaction pool. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"blocks",children:"Blocks"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-blockproductiontimeoutms",children:(0,i.jsx)(n.code,{children:"Blocks.BlockProductionTimeoutMs"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.BlockProductionTimeoutMs \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_BLOCKPRODUCTIONTIMEOUTMS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "BlockProductionTimeoutMs": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Block Production timeout, in milliseconds. Defaults to ",(0,i.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-extradata",children:(0,i.jsx)(n.code,{children:"Blocks.ExtraData"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.ExtraData \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_EXTRADATA=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "ExtraData": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block header extra data up to 32 bytes in length. Defaults to ",(0,i.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-genesistimeoutms",children:(0,i.jsx)(n.code,{children:"Blocks.GenesisTimeoutMs"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.GenesisTimeoutMs \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_GENESISTIMEOUTMS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "GenesisTimeoutMs": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Genesis block load timeout, in milliseconds. Defaults to ",(0,i.jsx)(n.code,{children:"40000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-mingasprice",children:(0,i.jsx)(n.code,{children:"Blocks.MinGasPrice"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.MinGasPrice \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_MINGASPRICE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "MinGasPrice": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The minimum gas premium (or the gas price before the London hard fork) for transactions accepted by the block producer. Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-prewarmstateonblockprocessing",children:(0,i.jsx)(n.code,{children:"Blocks.PreWarmStateOnBlockProcessing"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.PreWarmStateOnBlockProcessing \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_PREWARMSTATEONBLOCKPROCESSING=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "PreWarmStateOnBlockProcessing": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to pre-warm the state when processing blocks. This can lead to an up to 2x speed-up in the main loop block processing. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"True"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-randomizedblocks",children:(0,i.jsx)(n.code,{children:"Blocks.RandomizedBlocks"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.RandomizedBlocks \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_RANDOMIZEDBLOCKS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "RandomizedBlocks": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to change the difficulty of the block randomly within the constraints. Used in NethDev only. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-secondsperslot",children:(0,i.jsx)(n.code,{children:"Blocks.SecondsPerSlot"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.SecondsPerSlot \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_SECONDSPERSLOT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "SecondsPerSlot": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block time slot, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"12"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-targetblockgaslimit",children:(0,i.jsx)(n.code,{children:"Blocks.TargetBlockGasLimit"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.TargetBlockGasLimit \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_TARGETBLOCKGASLIMIT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "TargetBlockGasLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block gas limit that the block producer should try to reach in the fastest possible way based on the protocol rules. If not specified, then the block producer should follow others. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"bloom",children:"Bloom"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-index",children:(0,i.jsx)(n.code,{children:"Bloom.Index"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.Index \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEX=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "Index": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use the Bloom index. The Bloom index speeds up the RPC log searches. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-indexlevelbucketsizes",children:(0,i.jsx)(n.code,{children:"Bloom.IndexLevelBucketSizes"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.IndexLevelBucketSizes \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEXLEVELBUCKETSIZES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "IndexLevelBucketSizes": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of multipliers for index levels. Can be tweaked per chain to boost performance. Defaults to ",(0,i.jsx)(n.code,{children:"[4, 8, 8]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-migration",children:(0,i.jsx)(n.code,{children:"Bloom.Migration"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.Migration \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATION=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "Migration": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to migrate the previously downloaded blocks to the Bloom index. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-migrationstatistics",children:(0,i.jsx)(n.code,{children:"Bloom.MigrationStatistics"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.MigrationStatistics \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATIONSTATISTICS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "MigrationStatistics": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether the migration statistics should be calculated and output. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"censorshipdetector",children:"CensorshipDetector"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"censorshipdetector-addressesforcensorshipdetection",children:(0,i.jsx)(n.code,{children:"CensorshipDetector.AddressesForCensorshipDetection"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--CensorshipDetector.AddressesForCensorshipDetection \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_CENSORSHIPDETECTORCONFIG_ADDRESSESFORCENSORSHIPDETECTION=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "CensorshipDetector": {\n "AddressesForCensorshipDetection": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The addresses for which censorship is being detected. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"censorshipdetector-blockcensorshipthreshold",children:(0,i.jsx)(n.code,{children:"CensorshipDetector.BlockCensorshipThreshold"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--CensorshipDetector.BlockCensorshipThreshold \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_CENSORSHIPDETECTORCONFIG_BLOCKCENSORSHIPTHRESHOLD=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "CensorshipDetector": {\n "BlockCensorshipThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Number of consecutive blocks with detected potential censorship to report censorship attempt Defaults to ",(0,i.jsx)(n.code,{children:"2"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"censorshipdetector-enabled",children:(0,i.jsx)(n.code,{children:"CensorshipDetector.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--CensorshipDetector.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_CENSORSHIPDETECTORCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "CensorshipDetector": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Enabling censorship detection feature Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"ethstats",children:"EthStats"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-contact",children:(0,i.jsx)(n.code,{children:"EthStats.Contact"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Contact \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_CONTACT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Contact": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The node owner contact details displayed on Ethstats. Defaults to ",(0,i.jsx)(n.code,{children:"hello@nethermind.io"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-enabled",children:(0,i.jsx)(n.code,{children:"EthStats.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use Ethstats publishing. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-name",children:(0,i.jsx)(n.code,{children:"EthStats.Name"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Name \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_NAME=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Name": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The node name displayed on Ethstats. Defaults to ",(0,i.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-secret",children:(0,i.jsx)(n.code,{children:"EthStats.Secret"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Secret \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SECRET=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Secret": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Ethstats secret. Defaults to ",(0,i.jsx)(n.code,{children:"secret"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-sendinterval",children:(0,i.jsx)(n.code,{children:"EthStats.SendInterval"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.SendInterval \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SENDINTERVAL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "SendInterval": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The stats update interval, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"15"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-server",children:(0,i.jsx)(n.code,{children:"EthStats.Server"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Server \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SERVER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Server": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Ethstats server URL. Defaults to ",(0,i.jsx)(n.code,{children:"ws://localhost:3000/api"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"healthchecks",children:"HealthChecks"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-enabled",children:(0,i.jsx)(n.code,{children:"HealthChecks.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the health check. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-lowstoragecheckawaitonstartup",children:(0,i.jsx)(n.code,{children:"HealthChecks.LowStorageCheckAwaitOnStartup"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.LowStorageCheckAwaitOnStartup \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGECHECKAWAITONSTARTUP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "LowStorageCheckAwaitOnStartup": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to check for low disk space on startup and suspend until enough space is available. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-lowstoragespaceshutdownthreshold",children:(0,i.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceShutdownThreshold"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACESHUTDOWNTHRESHOLD=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "LowStorageSpaceShutdownThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The percentage of available disk space below which Nethermind shuts down. ",(0,i.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-lowstoragespacewarningthreshold",children:(0,i.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceWarningThreshold"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACEWARNINGTHRESHOLD=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "LowStorageSpaceWarningThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The percentage of available disk space below which a warning is displayed. ",(0,i.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-maxintervalclrequesttime",children:(0,i.jsx)(n.code,{children:"HealthChecks.MaxIntervalClRequestTime"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.MaxIntervalClRequestTime \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALCLREQUESTTIME=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "MaxIntervalClRequestTime": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max request interval, in seconds, in which the consensus client is assumed healthy. Defaults to ",(0,i.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-maxintervalwithoutprocessedblock",children:(0,i.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProcessedBlock"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProcessedBlock \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPROCESSEDBLOCK=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "MaxIntervalWithoutProcessedBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max interval, in seconds, in which the block processing is assumed healthy. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-maxintervalwithoutproducedblock",children:(0,i.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProducedBlock"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProducedBlock \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPRODUCEDBLOCK=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "MaxIntervalWithoutProducedBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max interval, in seconds, in which the block production is assumed healthy. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-pollinginterval",children:(0,i.jsx)(n.code,{children:"HealthChecks.PollingInterval"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.PollingInterval \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_POLLINGINTERVAL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "PollingInterval": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The health check updates polling interval, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-slug",children:(0,i.jsx)(n.code,{children:"HealthChecks.Slug"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.Slug \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_SLUG=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "Slug": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL slug the health checks service is exposed at. Defaults to ",(0,i.jsx)(n.code,{children:"/health"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-uienabled",children:(0,i.jsx)(n.code,{children:"HealthChecks.UIEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.UIEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_UIENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "UIEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the health checks UI. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhooksenabled",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable web hooks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhookspayload",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksPayload"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksPayload \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSPAYLOAD=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksPayload": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on failure.\nDefaults to:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#FFCC00",\n "pretext": "Health Check Status :warning:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "Description",\n "value": "[[DESCRIPTIONS]]",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhooksrestorepayload",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksRestorePayload"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksRestorePayload \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSRESTOREPAYLOAD=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksRestorePayload": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on recovery.\nDefaults to:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#36a64f",\n "pretext": "Health Check Status :+1:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "description",\n "value": "The HealthCheck `[[LIVENESS]]` is recovered. Everything is up and running.",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhooksuri",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksUri"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksUri \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSURI=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksUri": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The web hook URL. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"hive",children:"Hive"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-blocksdir",children:(0,i.jsx)(n.code,{children:"Hive.BlocksDir"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.BlocksDir \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_BLOCKSDIR=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "BlocksDir": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the directory with additional blocks. Defaults to ",(0,i.jsx)(n.code,{children:"/blocks"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-chainfile",children:(0,i.jsx)(n.code,{children:"Hive.ChainFile"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.ChainFile \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_CHAINFILE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "ChainFile": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the test chain spec file. Defaults to ",(0,i.jsx)(n.code,{children:"/chain.rlp"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-enabled",children:(0,i.jsx)(n.code,{children:"Hive.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable Hive for debugging. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-genesisfilepath",children:(0,i.jsx)(n.code,{children:"Hive.GenesisFilePath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.GenesisFilePath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_GENESISFILEPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "GenesisFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the genesis block file. Defaults to ",(0,i.jsx)(n.code,{children:"/genesis.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-keysdir",children:(0,i.jsx)(n.code,{children:"Hive.KeysDir"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.KeysDir \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_KEYSDIR=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "KeysDir": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,i.jsx)(n.code,{children:"/keys"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"init",children:"Init"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-autodump",children:(0,i.jsx)(n.code,{children:"Init.AutoDump"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.AutoDump \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_AUTODUMP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "AutoDump": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Auto-dump on bad blocks for diagnostics. ",(0,i.jsx)(n.code,{children:"Default"})," combines ",(0,i.jsx)(n.code,{children:"Receipts"})," and ",(0,i.jsx)(n.code,{children:"Rlp"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Receipts"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Parity"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Geth"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Rlp"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"RlpLog"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Default"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Default"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-badblocksstored",children:(0,i.jsx)(n.code,{children:"Init.BadBlocksStored"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.BadBlocksStored \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BADBLOCKSSTORED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "BadBlocksStored": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The maximum number of bad blocks observed on the network that will be stored on disk. Defaults to ",(0,i.jsx)(n.code,{children:"100"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-basedbpath",children:(0,i.jsx)(n.code,{children:"Init.BaseDbPath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.BaseDbPath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BASEDBPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "BaseDbPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The base path for all Nethermind databases. Defaults to ",(0,i.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-chainspecpath",children:(0,i.jsx)(n.code,{children:"Init.ChainSpecPath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.ChainSpecPath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_CHAINSPECPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "ChainSpecPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the chain spec file. Defaults to ",(0,i.jsx)(n.code,{children:"chainspec/foundation.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-diagnosticmode",children:(0,i.jsx)(n.code,{children:"Init.DiagnosticMode"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.DiagnosticMode \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DIAGNOSTICMODE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "DiagnosticMode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The diagnostic mode."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"MemDb"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"RpcDb"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ReadOnlyDb"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VerifyRewards"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VerifySupply"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VerifyTrie"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-discoveryenabled",children:(0,i.jsx)(n.code,{children:"Init.DiscoveryEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.DiscoveryEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DISCOVERYENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "DiscoveryEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the node discovery. If disabled, Nethermind doesn't look for other nodes beyond the bootnodes specified. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-enableunsecureddevwallet",children:(0,i.jsx)(n.code,{children:"Init.EnableUnsecuredDevWallet"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.EnableUnsecuredDevWallet \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ENABLEUNSECUREDDEVWALLET=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "EnableUnsecuredDevWallet": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the in-app wallet/keystore. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-genesishash",children:(0,i.jsx)(n.code,{children:"Init.GenesisHash"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.GenesisHash \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_GENESISHASH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "GenesisHash": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The hash of the genesis block. If not specified, the genesis block validity is not checked which is useful in the case of ad hoc test/private networks. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-hivechainspecpath",children:(0,i.jsx)(n.code,{children:"Init.HiveChainSpecPath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.HiveChainSpecPath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_HIVECHAINSPECPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "HiveChainSpecPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the chain spec file for Hive tests. Defaults to ",(0,i.jsx)(n.code,{children:"chainspec/test.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-ismining",children:(0,i.jsx)(n.code,{children:"Init.IsMining"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.IsMining \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ISMINING=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "IsMining": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to seal/mine new blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-keepdevwalletinmemory",children:(0,i.jsx)(n.code,{children:"Init.KeepDevWalletInMemory"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.KeepDevWalletInMemory \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KEEPDEVWALLETINMEMORY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "KeepDevWalletInMemory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to create session-only accounts and delete them on shutdown. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-kzgsetuppath",children:(0,i.jsx)(n.code,{children:"Init.KzgSetupPath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.KzgSetupPath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KZGSETUPPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "KzgSetupPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to KZG trusted setup file. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-logdirectory",children:(0,i.jsx)(n.code,{children:"Init.LogDirectory"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.LogDirectory \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGDIRECTORY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "LogDirectory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the Nethermind logs directory. Defaults to ",(0,i.jsx)(n.code,{children:"logs"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-logfilename",children:(0,i.jsx)(n.code,{children:"Init.LogFileName"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.LogFileName \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGFILENAME=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "LogFileName": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The name of the log file. Defaults to ",(0,i.jsx)(n.code,{children:"log.txt"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-logrules",children:(0,i.jsx)(n.code,{children:"Init.LogRules"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.LogRules \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGRULES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "LogRules": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The logs format as ",(0,i.jsx)(n.code,{children:"LogPath:LogLevel;*"})," Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-memoryhint",children:(0,i.jsx)(n.code,{children:"Init.MemoryHint"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.MemoryHint \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_MEMORYHINT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "MemoryHint": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The hint on the max memory limit, in bytes, to configure the database and networking memory allocations. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-peermanagerenabled",children:(0,i.jsx)(n.code,{children:"Init.PeerManagerEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.PeerManagerEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PEERMANAGERENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "PeerManagerEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to connect to newly discovered peers. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-processingenabled",children:(0,i.jsx)(n.code,{children:"Init.ProcessingEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.ProcessingEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PROCESSINGENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "ProcessingEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download/process new blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-rpcdburl",children:(0,i.jsx)(n.code,{children:"Init.RpcDbUrl"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.RpcDbUrl \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_RPCDBURL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "RpcDbUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of the remote node used as a database source when ",(0,i.jsx)(n.code,{children:"DiagnosticMode"})," is set to ",(0,i.jsx)(n.code,{children:"RpcDb"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-staticnodespath",children:(0,i.jsx)(n.code,{children:"Init.StaticNodesPath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.StaticNodesPath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_STATICNODESPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "StaticNodesPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the static nodes file. Defaults to ",(0,i.jsx)(n.code,{children:"Data/static-nodes.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-websocketsenabled",children:(0,i.jsx)(n.code,{children:"Init.WebSocketsEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.WebSocketsEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_WEBSOCKETSENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "WebSocketsEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable WebSocket service for the default JSON-RPC port on startup. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"jsonrpc",children:"JsonRpc"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-additionalrpcurls",children:(0,i.jsx)(n.code,{children:"JsonRpc.AdditionalRpcUrls"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ADDITIONALRPCURLS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "AdditionalRpcUrls": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list. For instance, ",(0,i.jsx)(n.code,{children:"[http://localhost:8546|http;ws|eth;web3]"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-bufferresponses",children:(0,i.jsx)(n.code,{children:"JsonRpc.BufferResponses"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.BufferResponses \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_BUFFERRESPONSES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "BufferResponses": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to buffer responses before sending them. This allows using of ",(0,i.jsx)(n.code,{children:"Content-Length"})," instead of ",(0,i.jsx)(n.code,{children:"Transfer-Encoding: chunked"}),". Note that it may degrade performance on large responses. The max buffered response length is 2GB. Chunked responses can be larger. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-callsfilterfilepath",children:(0,i.jsx)(n.code,{children:"JsonRpc.CallsFilterFilePath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.CallsFilterFilePath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_CALLSFILTERFILEPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "CallsFilterFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to a file with the list of new-line-separated JSON-RPC calls. If specified, only the calls from that file are allowed. Defaults to ",(0,i.jsx)(n.code,{children:"Data/jsonrpc.filter"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-enabled",children:(0,i.jsx)(n.code,{children:"JsonRpc.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the JSON-RPC service. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-enabledmodules",children:(0,i.jsx)(n.code,{children:"JsonRpc.EnabledModules"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnabledModules \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLEDMODULES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EnabledModules": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of JSON-RPC namespaces to enable. For instance, ",(0,i.jsx)(n.code,{children:"[debug,eth]"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Built-in namespaces:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"admin"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"client"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"debug"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"engine"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"evm"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"health"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"net"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"parity"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"personal"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"proof"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"rpc"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"subscribe"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"trace"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"txpool"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"web3"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"[Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health,Rpc]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-engineenabledmodules",children:(0,i.jsx)(n.code,{children:"JsonRpc.EngineEnabledModules"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EngineEnabledModules \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EngineEnabledModules": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list for Engine API. Defaults to ",(0,i.jsx)(n.code,{children:"[Net,Eth,Subscribe,Web3]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-enginehost",children:(0,i.jsx)(n.code,{children:"JsonRpc.EngineHost"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EngineHost \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEHOST=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EngineHost": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Engine API host. Defaults to ",(0,i.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-engineport",children:(0,i.jsx)(n.code,{children:"JsonRpc.EnginePort"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEPORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EnginePort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Engine API port. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-estimateerrormargin",children:(0,i.jsx)(n.code,{children:"JsonRpc.EstimateErrorMargin"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EstimateErrorMargin \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ESTIMATEERRORMARGIN=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EstimateErrorMargin": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The error margin used in the ",(0,i.jsx)(n.code,{children:"eth_estimateGas"})," JSON-RPC method, in basis points. Defaults to ",(0,i.jsx)(n.code,{children:"150"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-ethmoduleconcurrentinstances",children:(0,i.jsx)(n.code,{children:"JsonRpc.EthModuleConcurrentInstances"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EthModuleConcurrentInstances \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ETHMODULECONCURRENTINSTANCES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EthModuleConcurrentInstances": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The number of concurrent instances for non-sharable calls:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_call"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"This limits the load on the CPU and I/O to reasonable levels. If the limit is exceeded, HTTP 503 is returned along with the JSON-RPC error. Defaults to the number of logical processors."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-gascap",children:(0,i.jsx)(n.code,{children:"JsonRpc.GasCap"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.GasCap \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_GASCAP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "GasCap": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The gas limit for ",(0,i.jsx)(n.code,{children:"eth_call"})," and ",(0,i.jsx)(n.code,{children:"eth_estimateGas"}),". Defaults to ",(0,i.jsx)(n.code,{children:"100000000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-host",children:(0,i.jsx)(n.code,{children:"JsonRpc.Host"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Host \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_HOST=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Host": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The JSON-RPC service host. Defaults to ",(0,i.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-ipcunixdomainsocketpath",children:(0,i.jsx)(n.code,{children:"JsonRpc.IpcUnixDomainSocketPath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_IPCUNIXDOMAINSOCKETPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "IpcUnixDomainSocketPath": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The path to connect a UNIX domain socket over."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-jwtsecretfile",children:(0,i.jsx)(n.code,{children:"JsonRpc.JwtSecretFile"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "JwtSecretFile": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the JWT secret file required for the Engine API authentication. Defaults to ",(0,i.jsx)(n.code,{children:"keystore/jwt-secret"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxbatchresponsebodysize",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxBatchResponseBodySize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxBatchResponseBodySize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHRESPONSEBODYSIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxBatchResponseBodySize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max batch size limit for batched JSON-RPC calls. Defaults to ",(0,i.jsx)(n.code,{children:"33554432"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxbatchsize",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxBatchSize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxBatchSize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHSIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxBatchSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of JSON-RPC requests in a batch. Defaults to ",(0,i.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxloggedrequestparameterscharacters",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxLoggedRequestParametersCharacters"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxLoggedRequestParametersCharacters \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGGEDREQUESTPARAMETERSCHARACTERS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxLoggedRequestParametersCharacters": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of characters of a JSON-RPC request parameter printing to the log. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxlogsperresponse",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxLogsPerResponse"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxLogsPerResponse \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGSPERRESPONSE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxLogsPerResponse": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of logs per response for the ",(0,i.jsx)(n.code,{children:"eth_getLogs"})," JSON-RPC method. ",(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxrequestbodysize",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxRequestBodySize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxRequestBodySize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXREQUESTBODYSIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxRequestBodySize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max length of HTTP request body, in bytes. Defaults to ",(0,i.jsx)(n.code,{children:"30000000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxsimulateblockscap",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxSimulateBlocksCap"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxSimulateBlocksCap \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXSIMULATEBLOCKSCAP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxSimulateBlocksCap": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max block count limit for the ",(0,i.jsx)(n.code,{children:"eth_simulate"})," JSON-RPC method. Defaults to ",(0,i.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-methodsloggingfiltering",children:(0,i.jsx)(n.code,{children:"JsonRpc.MethodsLoggingFiltering"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MethodsLoggingFiltering \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_METHODSLOGGINGFILTERING=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MethodsLoggingFiltering": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of the method names not to log. Defaults to ",(0,i.jsx)(n.code,{children:"[engine_newPayloadV1,engine_newPayloadV2,engine_newPayloadV3,engine_forkchoiceUpdatedV1,engine_forkchoiceUpdatedV2]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-port",children:(0,i.jsx)(n.code,{children:"JsonRpc.Port"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_PORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Port": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The JSON-RPC service HTTP port. Defaults to ",(0,i.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-reportintervalseconds",children:(0,i.jsx)(n.code,{children:"JsonRpc.ReportIntervalSeconds"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.ReportIntervalSeconds \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REPORTINTERVALSECONDS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "ReportIntervalSeconds": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The interval, in seconds, between the JSON-RPC stats report log. Defaults to ",(0,i.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-requestqueuelimit",children:(0,i.jsx)(n.code,{children:"JsonRpc.RequestQueueLimit"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.RequestQueueLimit \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REQUESTQUEUELIMIT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "RequestQueueLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The max number of concurrent requests in the queue for:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_call"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"500"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-rpcrecorderbasefilepath",children:(0,i.jsx)(n.code,{children:"JsonRpc.RpcRecorderBaseFilePath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.RpcRecorderBaseFilePath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERBASEFILEPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "RpcRecorderBaseFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the base file for diagnostic recording. Defaults to ",(0,i.jsx)(n.code,{children:"logs/rpc.{counter}.txt"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-rpcrecorderstate",children:(0,i.jsx)(n.code,{children:"JsonRpc.RpcRecorderState"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.RpcRecorderState \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERSTATE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "RpcRecorderState": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The diagnostic recording mode."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Request"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Response"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-timeout",children:(0,i.jsx)(n.code,{children:"JsonRpc.Timeout"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Timeout \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_TIMEOUT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Timeout": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The request timeout, in milliseconds. Defaults to ",(0,i.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-websocketsport",children:(0,i.jsx)(n.code,{children:"JsonRpc.WebSocketsPort"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_WEBSOCKETSPORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "WebSocketsPort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The JSON-RPC service WebSockets port. Defaults to ",(0,i.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"keystore",children:"KeyStore"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-blockauthoraccount",children:(0,i.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.BlockAuthorAccount \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_BLOCKAUTHORACCOUNT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "BlockAuthorAccount": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"An account to use as the block author (coinbase)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-cipher",children:(0,i.jsx)(n.code,{children:"KeyStore.Cipher"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.Cipher \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_CIPHER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "Cipher": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"aes-128-ctr"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-enodeaccount",children:(0,i.jsx)(n.code,{children:"KeyStore.EnodeAccount"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.EnodeAccount \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEACCOUNT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "EnodeAccount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An account to use for networking (enode). If neither this nor the ",(0,i.jsx)(n.code,{children:"EnodeKeyFile"})," option is specified, the key is autogenerated in ",(0,i.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-enodekeyfile",children:(0,i.jsx)(n.code,{children:"KeyStore.EnodeKeyFile"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.EnodeKeyFile \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEKEYFILE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "EnodeKeyFile": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the key file to use by for networking (enode). If neither this nor the ",(0,i.jsx)(n.code,{children:"EnodeAccount"})," is specified, the key is autogenerated in ",(0,i.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-ivsize",children:(0,i.jsx)(n.code,{children:"KeyStore.IVSize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.IVSize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_IVSIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "IVSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdf",children:(0,i.jsx)(n.code,{children:"KeyStore.Kdf"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.Kdf \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDF=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "Kdf": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"scrypt"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsdklen",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsDklen"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsDklen \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSDKLEN=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsDklen": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsn",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsN"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsN \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSN=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsN": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"262144"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsp",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsP"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsP \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsP": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsr",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsR"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsR \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSR=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsR": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamssaltlen",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsSaltLen"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsSaltLen \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSSALTLEN=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsSaltLen": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-keystoredirectory",children:(0,i.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KeyStoreDirectory \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREDIRECTORY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KeyStoreDirectory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,i.jsx)(n.code,{children:"keystore"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-keystoreencoding",children:(0,i.jsx)(n.code,{children:"KeyStore.KeyStoreEncoding"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KeyStoreEncoding \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREENCODING=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KeyStoreEncoding": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"UTF-8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-passwordfiles",children:(0,i.jsx)(n.code,{children:"KeyStore.PasswordFiles"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.PasswordFiles \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDFILES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "PasswordFiles": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of password files paths used to unlock the accounts set with ",(0,i.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-passwords",children:(0,i.jsx)(n.code,{children:"KeyStore.Passwords"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.Passwords \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "Passwords": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of passwords used to unlock the accounts set with ",(0,i.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-symmetricencrypterblocksize",children:(0,i.jsx)(n.code,{children:"KeyStore.SymmetricEncrypterBlockSize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterBlockSize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERBLOCKSIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "SymmetricEncrypterBlockSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-symmetricencrypterkeysize",children:(0,i.jsx)(n.code,{children:"KeyStore.SymmetricEncrypterKeySize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterKeySize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERKEYSIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "SymmetricEncrypterKeySize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-testnodekey",children:(0,i.jsx)(n.code,{children:"KeyStore.TestNodeKey"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.TestNodeKey \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_TESTNODEKEY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "TestNodeKey": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"A plaintext private key to use for testing purposes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-unlockaccounts",children:(0,i.jsx)(n.code,{children:"KeyStore.UnlockAccounts"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.UnlockAccounts \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_UNLOCKACCOUNTS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "UnlockAccounts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of accounts to unlock on startup using passwords either in ",(0,i.jsx)(n.code,{children:"PasswordFiles"})," and ",(0,i.jsx)(n.code,{children:"Passwords"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"merge",children:"Merge"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-builderrelayurl",children:(0,i.jsx)(n.code,{children:"Merge.BuilderRelayUrl"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.BuilderRelayUrl \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_BUILDERRELAYURL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "BuilderRelayUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of a builder relay. If specified, blocks are sent to the relay. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-collectionsperdecommit",children:(0,i.jsx)(n.code,{children:"Merge.CollectionsPerDecommit"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.CollectionsPerDecommit \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COLLECTIONSPERDECOMMIT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "CollectionsPerDecommit": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Request the garbage collector (GC) to release the process memory."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"-1"})," to disable"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"0"})," to release every time"]}),"\n",(0,i.jsx)(n.li,{children:"A positive number to release memory after that many Engine API calls"}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"25"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-compactmemory",children:(0,i.jsx)(n.code,{children:"Merge.CompactMemory"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.CompactMemory \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COMPACTMEMORY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "CompactMemory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The memory compaction mode. When set to ",(0,i.jsx)(n.code,{children:"Full"}),", compacts the large object heap (LOH) if ",(0,i.jsx)(n.code,{children:"SweepMemory"})," is set to ",(0,i.jsx)(n.code,{children:"Gen2"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"No"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Yes"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Full"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Yes"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-enabled",children:(0,i.jsx)(n.code,{children:"Merge.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the Merge hard fork. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-finaltotaldifficulty",children:(0,i.jsx)(n.code,{children:"Merge.FinalTotalDifficulty"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.FinalTotalDifficulty \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_FINALTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "FinalTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The total difficulty of the last PoW block. Must be greater than or equal to the terminal total difficulty (TTD). Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-prioritizeblocklatency",children:(0,i.jsx)(n.code,{children:"Merge.PrioritizeBlockLatency"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.PrioritizeBlockLatency \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_PRIORITIZEBLOCKLATENCY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "PrioritizeBlockLatency": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to reduce block latency by disabling garbage collection during Engine API calls. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-sweepmemory",children:(0,i.jsx)(n.code,{children:"Merge.SweepMemory"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.SweepMemory \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_SWEEPMEMORY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "SweepMemory": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The garbage collection (GC) mode between Engine API calls."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"NoGC"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Gen0"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Gen1"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Gen2"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Gen1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-terminalblockhash",children:(0,i.jsx)(n.code,{children:"Merge.TerminalBlockHash"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.TerminalBlockHash \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKHASH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "TerminalBlockHash": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The terminal PoW block hash used for the transition. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-terminalblocknumber",children:(0,i.jsx)(n.code,{children:"Merge.TerminalBlockNumber"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.TerminalBlockNumber \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKNUMBER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "TerminalBlockNumber": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The terminal PoW block number used for the transition."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-terminaltotaldifficulty",children:(0,i.jsx)(n.code,{children:"Merge.TerminalTotalDifficulty"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.TerminalTotalDifficulty \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "TerminalTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The terminal total difficulty (TTD) used for the transition. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"metrics",children:"Metrics"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-countersenabled",children:(0,i.jsx)(n.code,{children:"Metrics.CountersEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.CountersEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_COUNTERSENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "CountersEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to publish metrics using .NET diagnostics that can be collected with dotnet-counters. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-enabled",children:(0,i.jsx)(n.code,{children:"Metrics.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to publish various metrics to Prometheus Pushgateway at a given interval. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-enabledbsizemetrics",children:(0,i.jsx)(n.code,{children:"Metrics.EnableDbSizeMetrics"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.EnableDbSizeMetrics \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLEDBSIZEMETRICS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "EnableDbSizeMetrics": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to publish database size metrics. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-exposehost",children:(0,i.jsx)(n.code,{children:"Metrics.ExposeHost"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.ExposeHost \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEHOST=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "ExposeHost": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The IP address to expose Prometheus metrics at. The value of ",(0,i.jsx)(n.code,{children:"+"})," means listening on all available hostnames. Setting this to ",(0,i.jsx)(n.code,{children:"localhost"})," prevents remote access. Defaults to ",(0,i.jsx)(n.code,{children:"+"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-exposeport",children:(0,i.jsx)(n.code,{children:"Metrics.ExposePort"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.ExposePort \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEPORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "ExposePort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The port to expose Prometheus metrics at. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-intervalseconds",children:(0,i.jsx)(n.code,{children:"Metrics.IntervalSeconds"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.IntervalSeconds \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_INTERVALSECONDS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "IntervalSeconds": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The frequency of pushing metrics to Prometheus, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-nodename",children:(0,i.jsx)(n.code,{children:"Metrics.NodeName"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.NodeName \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_NODENAME=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "NodeName": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The name to display on the Grafana dashboard. Defaults to ",(0,i.jsx)(n.code,{children:'"Nethermind"'}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-pushgatewayurl",children:(0,i.jsx)(n.code,{children:"Metrics.PushGatewayUrl"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.PushGatewayUrl \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_PUSHGATEWAYURL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "PushGatewayUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The Prometheus Pushgateway instance URL."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"mining",children:"Mining"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mining-enabled",children:(0,i.jsx)(n.code,{children:"Mining.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Mining.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Mining": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to produce blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mining-signer",children:(0,i.jsx)(n.code,{children:"Mining.Signer"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Mining.Signer \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_SIGNER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Mining": {\n "Signer": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of an external signer like ",(0,i.jsx)(n.a,{href:"https://github.com/ethereum/go-ethereum/blob/master/cmd/clef/tutorial.md",children:"Clef"}),". Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"network",children:"Network"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-bootnodes",children:(0,i.jsx)(n.code,{children:"Network.Bootnodes"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.Bootnodes \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_BOOTNODES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "Bootnodes": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"A comma-separated enode list to be used as boot nodes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-diagtracerenabled",children:(0,i.jsx)(n.code,{children:"Network.DiagTracerEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.DiagTracerEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DIAGTRACERENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "DiagTracerEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable a verbose diagnostic tracing. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-discoverydns",children:(0,i.jsx)(n.code,{children:"Network.DiscoveryDns"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryDns \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYDNS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "DiscoveryDns": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Use tree is available through a DNS name. For the default of ",(0,i.jsx)(n.code,{children:".ethdisco.net"}),", leave unspecified. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-discoveryport",children:(0,i.jsx)(n.code,{children:"Network.DiscoveryPort"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYPORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "DiscoveryPort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The UDP port number for incoming discovery connections. It's recommended to keep it the same as the TCP port (",(0,i.jsx)(n.code,{children:"P2PPort"}),") because other values have not been tested yet. Defaults to ",(0,i.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-enableupnp",children:(0,i.jsx)(n.code,{children:"Network.EnableUPnP"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.EnableUPnP \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ENABLEUPNP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "EnableUPnP": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable automatic port forwarding via UPnP. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-externalip",children:(0,i.jsx)(n.code,{children:"Network.ExternalIp"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.ExternalIp \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_EXTERNALIP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "ExternalIp": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The external IP. Use only when the external IP cannot be resolved automatically. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-localip",children:(0,i.jsx)(n.code,{children:"Network.LocalIp"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.LocalIp \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_LOCALIP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "LocalIp": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The local IP. Use only when the local IP cannot be resolved automatically. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-maxactivepeers",children:(0,i.jsx)(n.code,{children:"Network.MaxActivePeers"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.MaxActivePeers \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "MaxActivePeers": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max allowed number of connected peers. Defaults to ",(0,i.jsx)(n.code,{children:"50"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-maxnettyarenacount",children:(0,i.jsx)(n.code,{children:"Network.MaxNettyArenaCount"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.MaxNettyArenaCount \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXNETTYARENACOUNT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "MaxNettyArenaCount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The maximum DotNetty arena count. Increasing this on a high-core CPU without increasing the memory budget may reduce chunk size so much that it causes a huge memory allocation. Defaults to ",(0,i.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-nettyarenaorder",children:(0,i.jsx)(n.code,{children:"Network.NettyArenaOrder"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.NettyArenaOrder \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_NETTYARENAORDER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "NettyArenaOrder": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The size of the DotNetty arena order. ",(0,i.jsx)(n.code,{children:"-1"})," to depend on the memory hint. Defaults to ",(0,i.jsx)(n.code,{children:"-1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-onlystaticpeers",children:(0,i.jsx)(n.code,{children:"Network.OnlyStaticPeers"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.OnlyStaticPeers \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ONLYSTATICPEERS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "OnlyStaticPeers": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use static peers only. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-p2pport",children:(0,i.jsx)(n.code,{children:"Network.P2PPort"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_P2PPORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "P2PPort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The TCP port for incoming P2P connections. Defaults to ",(0,i.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-prioritypeersmaxcount",children:(0,i.jsx)(n.code,{children:"Network.PriorityPeersMaxCount"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.PriorityPeersMaxCount \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_PRIORITYPEERSMAXCOUNT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "PriorityPeersMaxCount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of priority peers. Can be overridden by a plugin. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-staticpeers",children:(0,i.jsx)(n.code,{children:"Network.StaticPeers"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.StaticPeers \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_STATICPEERS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "StaticPeers": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["A list of peers to keep connection for. Static peers are affected by ",(0,i.jsx)(n.code,{children:"MaxActivePeers"}),". Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"optimism",children:"Optimism"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"optimism-sequencerurl",children:(0,i.jsx)(n.code,{children:"Optimism.SequencerUrl"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Optimism.SequencerUrl \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_OPTIMISMCONFIG_SEQUENCERURL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Optimism": {\n "SequencerUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The sequencer address. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"pruning",children:"Pruning"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-availablespacecheckenabled",children:(0,i.jsx)(n.code,{children:"Pruning.AvailableSpaceCheckEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.AvailableSpaceCheckEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_AVAILABLESPACECHECKENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "AvailableSpaceCheckEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enables available disk space check. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-cachemb",children:(0,i.jsx)(n.code,{children:"Pruning.CacheMb"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.CacheMb \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_CACHEMB=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "CacheMb": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The in-memory cache size, in MB. The bigger the cache size, the bigger the disk space savings. Defaults to ",(0,i.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningcompletionbehavior",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningCompletionBehavior \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGCOMPLETIONBEHAVIOR=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningCompletionBehavior": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The behavior after pruning completion:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"None"}),": Do nothing."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Shut Nethermind down if pruning has succeeded but leave it running if failed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"AlwaysShutdown"}),": Shut Nethermind down when pruning completes, regardless of its status."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ShutdownOnSuccess"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AlwaysShutdown"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningdisablelowprioritywrites",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningDisableLowPriorityWrites"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningDisableLowPriorityWrites \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGDISABLELOWPRIORITYWRITES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningDisableLowPriorityWrites": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to disable low-priority for pruning writes. Full pruning uses low-priority write operations to prevent blocking block processing. If block processing is not high-priority, set this option to ",(0,i.jsx)(n.code,{children:"true"})," for faster pruning. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningmaxdegreeofparallelism",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningMaxDegreeOfParallelism \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMAXDEGREEOFPARALLELISM=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningMaxDegreeOfParallelism": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The max number of parallel tasks that can be used by full pruning:"}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"-1"})," to use the number of logical processors"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"0"})," to use 25% of logical processors"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"1"})," to run on single thread"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"The recommended value depends on the type of the node:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the node needs to be responsive (serves for RPC or validator), then the recommended value is ",(0,i.jsx)(n.code,{children:"0"})," or ",(0,i.jsx)(n.code,{children:"-1"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["If the node doesn't have many other responsibilities but needs to be able to follow the chain reliably without any delays and produce live logs, the ",(0,i.jsx)(n.code,{children:"0"})," or ",(0,i.jsx)(n.code,{children:"1"})," is recommended."]}),"\n",(0,i.jsxs)(n.li,{children:["If the node doesn't have to be responsive, has very fast I/O (like NVMe) and the shortest pruning time is to be achieved, then ",(0,i.jsx)(n.code,{children:"-1"})," is recommended. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningmemorybudgetmb",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningMemoryBudgetMb \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMEMORYBUDGETMB=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningMemoryBudgetMb": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The memory budget, in MB, used for the trie visit. Increasing this value significantly reduces the IOPS requirement at the expense of memory usage. ",(0,i.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,i.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningminimumdelayhours",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningMinimumDelayHours"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningMinimumDelayHours \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMINIMUMDELAYHOURS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningMinimumDelayHours": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The minimum delay, in hours, between full pruning operations not to exhaust disk writes. Defaults to ",(0,i.jsx)(n.code,{children:"240"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningthresholdmb",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningThresholdMb \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTHRESHOLDMB=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningThresholdMb": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The threshold, in MB, to trigger full pruning. Depends on ",(0,i.jsx)(n.code,{children:"Mode"})," and ",(0,i.jsx)(n.code,{children:"FullPruningTrigger"}),". Defaults to ",(0,i.jsx)(n.code,{children:"256000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningtrigger",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningTrigger"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningTrigger \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTRIGGER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningTrigger": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The full pruning trigger:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Manual"}),": Triggered manually."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"StateDbSize"}),": Trigger when the state DB size is above the threshold."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"VolumeFreeSpace"}),": Trigger when the free disk space where the state DB is stored is below the threshold."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Manual"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"StateDbSize"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VolumeFreeSpace"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Manual"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-mode",children:(0,i.jsx)(n.code,{children:"Pruning.Mode"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.Mode \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_MODE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "Mode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The pruning mode:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"None"}),": No pruning (full archive)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Memory"}),": In-memory pruning"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Full"}),": Full pruning"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Hybrid"}),": Combined in-memory and full pruning"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Memory"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Full"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Hybrid"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Hybrid"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-persistenceinterval",children:(0,i.jsx)(n.code,{children:"Pruning.PersistenceInterval"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.PersistenceInterval \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PERSISTENCEINTERVAL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "PersistenceInterval": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block persistence frequency. If set to ",(0,i.jsx)(n.code,{children:"N"}),", it caches after each ",(0,i.jsx)(n.code,{children:"Nth"})," block even if not required by cache memory usage. Defaults to ",(0,i.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-pruningboundary",children:(0,i.jsx)(n.code,{children:"Pruning.PruningBoundary"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.PruningBoundary \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PRUNINGBOUNDARY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "PruningBoundary": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of past states before the state gets pruned. Used to determine how old of a state to keep from the head. Defaults to ",(0,i.jsx)(n.code,{children:"64"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-trackedpastkeycountmemoryratio",children:(0,i.jsx)(n.code,{children:"Pruning.TrackedPastKeyCountMemoryRatio"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.TrackedPastKeyCountMemoryRatio \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_TRACKEDPASTKEYCOUNTMEMORYRATIO=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "TrackedPastKeyCountMemoryRatio": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The ratio of memory out of ",(0,i.jsx)(n.code,{children:"Pruning.CacheMb"})," to allocate for the LRU cache, used to track past keys for live pruning. Defaults to ",(0,i.jsx)(n.code,{children:"0.1"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"receipt",children:"Receipt"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-compactreceiptstore",children:(0,i.jsx)(n.code,{children:"Receipt.CompactReceiptStore"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.CompactReceiptStore \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTRECEIPTSTORE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "CompactReceiptStore": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to compact receipts database size at the expense of RPC performance. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-compacttxindex",children:(0,i.jsx)(n.code,{children:"Receipt.CompactTxIndex"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.CompactTxIndex \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTTXINDEX=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "CompactTxIndex": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to compact receipts transaction index database size at the expense of RPC performance. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-receiptsmigration",children:(0,i.jsx)(n.code,{children:"Receipt.ReceiptsMigration"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.ReceiptsMigration \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_RECEIPTSMIGRATION=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "ReceiptsMigration": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to migrate the receipts database to the new schema. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-storereceipts",children:(0,i.jsx)(n.code,{children:"Receipt.StoreReceipts"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.StoreReceipts \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_STORERECEIPTS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "StoreReceipts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to store receipts after a new block is processed. This setting is independent from downloading receipts in fast sync mode. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-txlookuplimit",children:(0,i.jsx)(n.code,{children:"Receipt.TxLookupLimit"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.TxLookupLimit \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_TXLOOKUPLIMIT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "TxLookupLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of recent blocks to maintain transaction index for. ",(0,i.jsx)(n.code,{children:"0"})," to never remove indices, ",(0,i.jsx)(n.code,{children:"-1"})," to never index. Defaults to ",(0,i.jsx)(n.code,{children:"2350000"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"seq",children:"Seq"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"seq-apikey",children:(0,i.jsx)(n.code,{children:"Seq.ApiKey"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Seq.ApiKey \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_APIKEY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Seq": {\n "ApiKey": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The Seq API key."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"seq-minlevel",children:(0,i.jsx)(n.code,{children:"Seq.MinLevel"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Seq.MinLevel \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_MINLEVEL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Seq": {\n "MinLevel": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The min log level to sent to Seq. Defaults to ",(0,i.jsx)(n.code,{children:"Off"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"seq-serverurl",children:(0,i.jsx)(n.code,{children:"Seq.ServerUrl"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Seq.ServerUrl \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_SERVERURL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Seq": {\n "ServerUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Seq instance URL. Defaults to ",(0,i.jsx)(n.code,{children:"http://localhost:5341"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"shutter",children:"Shutter"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-bootnodep2paddresses",children:(0,i.jsx)(n.code,{children:"Shutter.BootnodeP2PAddresses"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.BootnodeP2PAddresses \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_BOOTNODEP2PADDRESSES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "BootnodeP2PAddresses": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The p2p addresses of the Shutter Keyper network bootnodes.\nDefaults to:"}),"\n",(0,i.jsx)(n.p,{children:"/ip4/139.59.130.109/tcp/23003/p2p/12D3KooWRZoofMsnpsjkgvfPQUyGXZQnn7EVnb4tw4ghNfwMnnsj,\n/ip4/167.71.169.248/tcp/23003/p2p/12D3KooWGH3VxoSQXZ6wUuCmsv5caGQnhwfGejbkXH6uS2r7sehA,\n/ip4/139.59.130.109/tcp/23003/p2p/12D3KooWNxTiw7CvD1fuyye5P8qPhKTTrRBW6wwZwMdqdTxjYF2H,\n/ip4/178.128.192.239/tcp/23003/p2p/12D3KooWCdpkipTiuzVMfkV7yLLgqbFeAL8WmEP78hCoBGBYLugN,\n/ip4/45.55.192.248/tcp/23003/p2p/12D3KooWMPuubKqksfMxvLwEBDScaopTdvPLr5J5SMmBEo2zkcMz,\n/ip4/178.128.126.237/tcp/23003/p2p/12D3KooWAg1pGUDAfFWSZftpN3JjBfLUCGLQcZApJHv2VntdMS9U"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-enabled",children:(0,i.jsx)(n.code,{children:"Shutter.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable Shutter. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-instanceid",children:(0,i.jsx)(n.code,{children:"Shutter.InstanceID"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.InstanceID \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_INSTANCEID=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "InstanceID": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Instance ID of Shutter keyper set. Defaults to ",(0,i.jsx)(n.code,{children:"1000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-keybroadcastcontractaddress",children:(0,i.jsx)(n.code,{children:"Shutter.KeyBroadcastContractAddress"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.KeyBroadcastContractAddress \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_KEYBROADCASTCONTRACTADDRESS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "KeyBroadcastContractAddress": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The address of the Shutter key broadcast contract. Defaults to ",(0,i.jsx)(n.code,{children:"0x626dB87f9a9aC47070016A50e802dd5974341301"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-keypersetmanagercontractaddress",children:(0,i.jsx)(n.code,{children:"Shutter.KeyperSetManagerContractAddress"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.KeyperSetManagerContractAddress \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_KEYPERSETMANAGERCONTRACTADDRESS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "KeyperSetManagerContractAddress": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The address of the Shutter keyper set manager contract. Defaults to ",(0,i.jsx)(n.code,{children:"0x7C2337f9bFce19d8970661DA50dE8DD7d3D34abb"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-p2pport",children:(0,i.jsx)(n.code,{children:"Shutter.P2PPort"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.P2PPort \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_P2PPORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "P2PPort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The port to connect to Shutter P2P network with. Defaults to ",(0,i.jsx)(n.code,{children:"23102"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-sequencercontractaddress",children:(0,i.jsx)(n.code,{children:"Shutter.SequencerContractAddress"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.SequencerContractAddress \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_SEQUENCERCONTRACTADDRESS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "SequencerContractAddress": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The address of the Shutter sequencer contract. Defaults to ",(0,i.jsx)(n.code,{children:"0xc5C4b277277A1A8401E0F039dfC49151bA64DC2E"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-validatorinfofile",children:(0,i.jsx)(n.code,{children:"Shutter.ValidatorInfoFile"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.ValidatorInfoFile \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_VALIDATORINFOFILE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "ValidatorInfoFile": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The filepath of the validator info json file. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-validatorregistrycontractaddress",children:(0,i.jsx)(n.code,{children:"Shutter.ValidatorRegistryContractAddress"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.ValidatorRegistryContractAddress \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_VALIDATORREGISTRYCONTRACTADDRESS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "ValidatorRegistryContractAddress": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The address of the Shutter validator registry contract. Defaults to ",(0,i.jsx)(n.code,{children:"0xefCC23E71f6bA9B22C4D28F7588141d44496A6D6"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"snapshot",children:"Snapshot"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-checksum",children:(0,i.jsx)(n.code,{children:"Snapshot.Checksum"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.Checksum \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_CHECKSUM=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "Checksum": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The SHA-256 checksum of the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-downloadurl",children:(0,i.jsx)(n.code,{children:"Snapshot.DownloadUrl"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.DownloadUrl \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_DOWNLOADURL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "DownloadUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-enabled",children:(0,i.jsx)(n.code,{children:"Snapshot.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the Snapshot plugin. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-snapshotdirectory",children:(0,i.jsx)(n.code,{children:"Snapshot.SnapshotDirectory"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.SnapshotDirectory \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTDIRECTORY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "SnapshotDirectory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the directory to store the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"snapshot"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-snapshotfilename",children:(0,i.jsx)(n.code,{children:"Snapshot.SnapshotFileName"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.SnapshotFileName \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTFILENAME=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "SnapshotFileName": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The name of the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"snapshot.zip"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"sync",children:"Sync"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-ancientbodiesbarrier",children:(0,i.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.AncientBodiesBarrier \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "AncientBodiesBarrier": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The earliest body downloaded with fast sync when ",(0,i.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, AncientBodiesBarrier } }\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-ancientreceiptsbarrier",children:(0,i.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.AncientReceiptsBarrier \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "AncientReceiptsBarrier": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The earliest receipt downloaded with fast sync when ",(0,i.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, max{ AncientBodiesBarrier, AncientReceiptsBarrier } } }\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-blocksdbtunedbmode",children:(0,i.jsx)(n.code,{children:"Sync.BlocksDbTuneDbMode"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.BlocksDbTuneDbMode \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_BLOCKSDBTUNEDBMODE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "BlocksDbTuneDbMode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Configure the blocks database for write optimizations during sync."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Default"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"EnableBlobFiles"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-downloadbodiesinfastsync",children:(0,i.jsx)(n.code,{children:"Sync.DownloadBodiesInFastSync"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNC=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "DownloadBodiesInFastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download the block bodies in the Fast sync mode. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-downloadheadersinfastsync",children:(0,i.jsx)(n.code,{children:"Sync.DownloadHeadersInFastSync"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.DownloadHeadersInFastSync \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADHEADERSINFASTSYNC=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "DownloadHeadersInFastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download the old block headers in the Fast sync mode. If ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind downloads only recent blocks headers. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-downloadreceiptsinfastsync",children:(0,i.jsx)(n.code,{children:"Sync.DownloadReceiptsInFastSync"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.DownloadReceiptsInFastSync \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNC=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "DownloadReceiptsInFastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download receipts in the Fast sync mode. This slows down the process by a few hours but allows to interact with dApps that perform extensive historical logs searches. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-exitonsynced",children:(0,i.jsx)(n.code,{children:"Sync.ExitOnSynced"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.ExitOnSynced \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "ExitOnSynced": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to shut down Nethermind once sync is finished. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-exitonsyncedwaittimesec",children:(0,i.jsx)(n.code,{children:"Sync.ExitOnSyncedWaitTimeSec"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.ExitOnSyncedWaitTimeSec \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCEDWAITTIMESEC=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "ExitOnSyncedWaitTimeSec": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The time, in seconds, to wait before shutting down Nethermind once sync is finished. Defaults to ",(0,i.jsx)(n.code,{children:"60"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fastsync",children:(0,i.jsx)(n.code,{children:"Sync.FastSync"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FastSync \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNC=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use the Fast sync mode (the eth/63 synchronization algorithm). Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fastsynccatchupheightdelta",children:(0,i.jsx)(n.code,{children:"Sync.FastSyncCatchUpHeightDelta"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FastSyncCatchUpHeightDelta \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNCCATCHUPHEIGHTDELTA=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FastSyncCatchUpHeightDelta": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["In Fast sync mode, the min height threshold limit up to which the Full sync, if already on, stays on when the chain is behind the network head. If the limit is exceeded, it switches back to Fast sync. For regular usage scenarios, setting this value lower than 32 is not recommended as this can cause issues with chain reorgs. Note that the last 2 blocks are always processed in Full sync, so setting it lower than 2 has no effect. Defaults to ",(0,i.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixreceipts",children:(0,i.jsx)(n.code,{children:"Sync.FixReceipts"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixReceipts \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXRECEIPTS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixReceipts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable receipts validation that checks for receipts that might be missing because of a bug. If needed, receipts are downloaded from the network. If ",(0,i.jsx)(n.code,{children:"true"}),", the pivot number must be same one used originally as it's used as a cut-off point. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixtotaldifficulty",children:(0,i.jsx)(n.code,{children:"Sync.FixTotalDifficulty"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixTotalDifficulty \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to recalculate the total difficulty from ",(0,i.jsx)(n.code,{children:"FixTotalDifficultyStartingBlock"})," to ",(0,i.jsx)(n.code,{children:"FixTotalDifficultyLastBlock"}),". Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixtotaldifficultylastblock",children:(0,i.jsx)(n.code,{children:"Sync.FixTotalDifficultyLastBlock"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixTotalDifficultyLastBlock \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYLASTBLOCK=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixTotalDifficultyLastBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The last block to recalculate the total difficulty for. If not specified, the best known block is used.\nDefaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixtotaldifficultystartingblock",children:(0,i.jsx)(n.code,{children:"Sync.FixTotalDifficultyStartingBlock"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixTotalDifficultyStartingBlock \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYSTARTINGBLOCK=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixTotalDifficultyStartingBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The first block to recalculate the total difficulty for. Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-maxattemptstoupdatepivot",children:(0,i.jsx)(n.code,{children:"Sync.MaxAttemptsToUpdatePivot"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.MaxAttemptsToUpdatePivot \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXATTEMPTSTOUPDATEPIVOT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "MaxAttemptsToUpdatePivot": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of attempts to update the pivot block based on the FCU message from the consensus client. Defaults to ",(0,i.jsx)(n.code,{children:"2147483647"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-maxprocessingthreads",children:(0,i.jsx)(n.code,{children:"Sync.MaxProcessingThreads"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.MaxProcessingThreads \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXPROCESSINGTHREADS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "MaxProcessingThreads": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of threads used for syncing. ",(0,i.jsx)(n.code,{children:"0"})," to use the number of logical processors. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-networkingenabled",children:(0,i.jsx)(n.code,{children:"Sync.NetworkingEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.NetworkingEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NETWORKINGENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "NetworkingEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to connect to peers and sync. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-nonvalidatornode",children:(0,i.jsx)(n.code,{children:"Sync.NonValidatorNode"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.NonValidatorNode \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NONVALIDATORNODE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "NonValidatorNode": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to operate as a non-validator. If ",(0,i.jsx)(n.code,{children:"true"}),", the ",(0,i.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," and ",(0,i.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," can be set to ",(0,i.jsx)(n.code,{children:"false"}),". Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-pivothash",children:(0,i.jsx)(n.code,{children:"Sync.PivotHash"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.PivotHash \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTHASH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "PivotHash": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The hash of the pivot block for the Fast sync mode. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-pivotnumber",children:(0,i.jsx)(n.code,{children:"Sync.PivotNumber"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.PivotNumber \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTNUMBER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "PivotNumber": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of the pivot block for the Fast sync mode. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-pivottotaldifficulty",children:(0,i.jsx)(n.code,{children:"Sync.PivotTotalDifficulty"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.PivotTotalDifficulty \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "PivotTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The total difficulty of the pivot block for the Fast sync mode. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-snapsync",children:(0,i.jsx)(n.code,{children:"Sync.SnapSync"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.SnapSync \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNC=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "SnapSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use the Snap sync mode. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-snapsyncaccountrangepartitioncount",children:(0,i.jsx)(n.code,{children:"Sync.SnapSyncAccountRangePartitionCount"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.SnapSyncAccountRangePartitionCount \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNCACCOUNTRANGEPARTITIONCOUNT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "SnapSyncAccountRangePartitionCount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of account range partitions to create. Increases the Snap sync request concurrency. Allowed values are between between 1 and 256. Defaults to ",(0,i.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-strictmode",children:(0,i.jsx)(n.code,{children:"Sync.StrictMode"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.StrictMode \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_STRICTMODE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "StrictMode": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to disable some optimizations and do a more extensive sync. Useful when sync state is corrupted. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-synchronizationenabled",children:(0,i.jsx)(n.code,{children:"Sync.SynchronizationEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.SynchronizationEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SYNCHRONIZATIONENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "SynchronizationEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download and process new blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-tunedbmode",children:(0,i.jsx)(n.code,{children:"Sync.TuneDbMode"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.TuneDbMode \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_TUNEDBMODE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "TuneDbMode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Configure the database for write optimizations during sync. Significantly reduces the total number of writes and sync time if you are not network limited."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Default"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"HeavyWrite"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-usegethlimitsinfastblocks",children:(0,i.jsx)(n.code,{children:"Sync.UseGethLimitsInFastBlocks"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.UseGethLimitsInFastBlocks \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "UseGethLimitsInFastBlocks": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to make smaller requests, in Fast Blocks mode, to avoid Geth from disconnecting. On the Geth-heavy networks (e.g., Mainnet), it's a desired behavior while on Nethermind- or OpenEthereum-heavy networks (Aura), it slows down the sync by a factor of ~4. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"tracestore",children:"TraceStore"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-blockstokeep",children:(0,i.jsx)(n.code,{children:"TraceStore.BlocksToKeep"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.BlocksToKeep \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_BLOCKSTOKEEP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "BlocksToKeep": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of blocks to store, counting from the head. If ",(0,i.jsx)(n.code,{children:"0"}),", all traces of the processed blocks are stored. Defaults to ",(0,i.jsx)(n.code,{children:"10000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-deserializationparallelization",children:(0,i.jsx)(n.code,{children:"TraceStore.DeserializationParallelization"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.DeserializationParallelization \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_DESERIALIZATIONPARALLELIZATION=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "DeserializationParallelization": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max parallelization when deserialization requests the ",(0,i.jsx)(n.code,{children:"trace_filter"})," method. ",(0,i.jsx)(n.code,{children:"0"})," to use the number of logical processors. If you experience a resource shortage, set to a low number. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-enabled",children:(0,i.jsx)(n.code,{children:"TraceStore.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the TraceStore plugin. If enabled, traces come from the database whenever possible. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-tracetypes",children:(0,i.jsx)(n.code,{children:"TraceStore.TraceTypes"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.TraceTypes \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_TRACETYPES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "TraceTypes": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The type of traces to store."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VmTrace"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"StateDiff"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Trace"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Rewards"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Trace, Rewards"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"txpool",children:"TxPool"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-blobcachesize",children:(0,i.jsx)(n.code,{children:"TxPool.BlobCacheSize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.BlobCacheSize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBCACHESIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "BlobCacheSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of full blob transactions cached in memory. The default value uses max 200MB for 6 blobs where one blob is 33MB (256 * 128KB) Defaults to ",(0,i.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-blobssupport",children:(0,i.jsx)(n.code,{children:"TxPool.BlobsSupport"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.BlobsSupport \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBSSUPPORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "BlobsSupport": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Blobs support mode:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Disabled"}),": No support for blob transactions"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"InMemory"}),": Blob transactions stored only in memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Storage"}),": Blob transactions stored in db"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"StorageWithReorgs"}),": Blob transactions stored in db with support for restoring reorganized blob transactions to blob pool"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Disabled"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"InMemory"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Storage"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"StorageWithReorgs"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"StorageWithReorgs"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-gaslimit",children:(0,i.jsx)(n.code,{children:"TxPool.GasLimit"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.GasLimit \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_GASLIMIT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "GasLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max transaction gas allowed. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-hashcachesize",children:(0,i.jsx)(n.code,{children:"TxPool.HashCacheSize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.HashCacheSize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_HASHCACHESIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "HashCacheSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of cached hashes of already known transactions. Set automatically by the memory hint. Defaults to ",(0,i.jsx)(n.code,{children:"524288"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-inmemoryblobpoolsize",children:(0,i.jsx)(n.code,{children:"TxPool.InMemoryBlobPoolSize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.InMemoryBlobPoolSize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_INMEMORYBLOBPOOLSIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "InMemoryBlobPoolSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of full blob transactions stored in memory. Used only if persistent storage is disabled. Defaults to ",(0,i.jsx)(n.code,{children:"512"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-maxpendingblobtxspersender",children:(0,i.jsx)(n.code,{children:"TxPool.MaxPendingBlobTxsPerSender"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.MaxPendingBlobTxsPerSender \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGBLOBTXSPERSENDER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "MaxPendingBlobTxsPerSender": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of pending blob transactions per single sender. ",(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-maxpendingtxspersender",children:(0,i.jsx)(n.code,{children:"TxPool.MaxPendingTxsPerSender"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.MaxPendingTxsPerSender \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGTXSPERSENDER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "MaxPendingTxsPerSender": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of pending transactions per single sender. ",(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-minbasefeethreshold",children:(0,i.jsx)(n.code,{children:"TxPool.MinBaseFeeThreshold"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.MinBaseFeeThreshold \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MINBASEFEETHRESHOLD=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "MinBaseFeeThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The minimal percentage of the current base fee that must be surpassed by the max fee (",(0,i.jsx)(n.code,{children:"max_fee_per_gas"}),") for the transaction to be broadcasted. Defaults to ",(0,i.jsx)(n.code,{children:"70"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-peernotificationthreshold",children:(0,i.jsx)(n.code,{children:"TxPool.PeerNotificationThreshold"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.PeerNotificationThreshold \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PEERNOTIFICATIONTHRESHOLD=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "PeerNotificationThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The average percentage of transaction hashes from persistent broadcast sent to a peer together with hashes of the last added transactions. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-persistentblobstoragesize",children:(0,i.jsx)(n.code,{children:"TxPool.PersistentBlobStorageSize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.PersistentBlobStorageSize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PERSISTENTBLOBSTORAGESIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "PersistentBlobStorageSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of full blob transactions stored in the database (increasing the number of transactions in the blob pool also results in higher memory usage). The default value uses max 13GB for 6 blobs where one blob is 2GB (16386 * 128KB). Defaults to ",(0,i.jsx)(n.code,{children:"16384"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-reportminutes",children:(0,i.jsx)(n.code,{children:"TxPool.ReportMinutes"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.ReportMinutes \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_REPORTMINUTES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "ReportMinutes": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The current transaction pool state reporting interval, in minutes. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-size",children:(0,i.jsx)(n.code,{children:"TxPool.Size"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.Size \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_SIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "Size": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of transactions held in the mempool (the more transactions in the mempool, the more memory used). Defaults to ",(0,i.jsx)(n.code,{children:"2048"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"wallet",children:"Wallet"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"wallet-devaccounts",children:(0,i.jsx)(n.code,{children:"Wallet.DevAccounts"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Wallet.DevAccounts \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_WALLETCONFIG_DEVACCOUNTS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Wallet": {\n "DevAccounts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of autogenerated developer accounts to work with. Developer accounts have private keys from ",(0,i.jsx)(n.code,{children:"00...01"})," to ",(0,i.jsx)(n.code,{children:"00...n"}),". Defaults to ",(0,i.jsx)(n.code,{children:"10"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"environment-variables",children:"Environment variables"}),"\n",(0,i.jsx)(n.p,{children:"To configure Nethermind using environment variables, the following naming convention is used in all uppercase:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-text",children:"NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}\n"})}),"\n",(0,i.jsxs)(n.p,{children:["For instance, the environment variable equivalent of the command line ",(0,i.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile"})," option is ",(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"}),". For the list of configuration namespaces and their options, see ",(0,i.jsx)(n.a,{href:"#options-by-namespaces",children:"Options by namespaces"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"configuration-file",children:"Configuration file"}),"\n",(0,i.jsxs)(n.p,{children:["The configuration file is a JSON file with ",(0,i.jsx)(n.code,{children:".cfg"})," extension. The bundled configuration files are located in the ",(0,i.jsx)(n.code,{children:"configs"})," directory and named after the network they are used for. For instance, see the Mainnet configuration file ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:(0,i.jsx)(n.code,{children:"mainnet.cfg"})}),"."]})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}},9365:(e,n,l)=>{l.d(n,{A:()=>c});l(6540);var i=l(4164);const s={tabItem:"tabItem_Ymn6"};var r=l(4848);function c(e){let{children:n,hidden:l,className:c}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(s.tabItem,c),hidden:l,children:n})}},1470:(e,n,l)=>{l.d(n,{A:()=>I});var i=l(6540),s=l(4164),r=l(3104),c=l(6347),d=l(205),a=l(7485),o=l(1682),h=l(679);function t(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:l}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:l,attributes:i,default:s}}=e;return{value:n,label:l,attributes:i,default:s}}))}(l);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,l])}function u(e){let{value:n,tabValues:l}=e;return l.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:l}=e;const s=(0,c.W6)(),r=function(e){let{queryString:n=!1,groupId:l}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!l)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return l??null}({queryString:n,groupId:l});return[(0,a.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(s.location.search);n.set(r,e),s.replace({...s.location,search:n.toString()})}),[r,s])]}function v(e){const{defaultValue:n,queryString:l=!1,groupId:s}=e,r=x(e),[c,a]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:l}=e;if(0===l.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!u({value:n,tabValues:l}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${l.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=l.find((e=>e.default))??l[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[o,t]=j({queryString:l,groupId:s}),[v,p]=function(e){let{groupId:n}=e;const l=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,r]=(0,h.Dv)(l);return[s,(0,i.useCallback)((e=>{l&&r.set(e)}),[l,r])]}({groupId:s}),g=(()=>{const e=o??v;return u({value:e,tabValues:r})?e:null})();(0,d.A)((()=>{g&&a(g)}),[g]);return{selectedValue:c,selectValue:(0,i.useCallback)((e=>{if(!u({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);a(e),t(e),p(e)}),[t,p,r]),tabValues:r}}var p=l(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=l(4848);function f(e){let{className:n,block:l,selectedValue:i,selectValue:c,tabValues:d}=e;const a=[],{blockElementScrollPositionUntilNextRender:o}=(0,r.a_)(),h=e=>{const n=e.currentTarget,l=a.indexOf(n),s=d[l].value;s!==i&&(o(n),c(s))},t=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const l=a.indexOf(e.currentTarget)+1;n=a[l]??a[0];break}case"ArrowLeft":{const l=a.indexOf(e.currentTarget)-1;n=a[l]??a[a.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":l},n),children:d.map((e=>{let{value:n,label:l,attributes:r}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>a.push(e),onKeyDown:t,onClick:h,...r,className:(0,s.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":i===n}),children:l??n},n)}))})}function E(e){let{lazy:n,children:l,selectedValue:r}=e;const c=(Array.isArray(l)?l:[l]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function m(e){const n=v(e);return(0,b.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(E,{...n,...e})]})}function I(e){const n=(0,p.A)();return(0,b.jsx)(m,{...e,children:t(e.children)},String(n))}},8453:(e,n,l)=>{l.d(n,{R:()=>c,x:()=>d});var i=l(6540);const s={},r=i.createContext(s);function c(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[630],{4724:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>h,contentTitle:()=>a,default:()=>u,frontMatter:()=>d,metadata:()=>o,toc:()=>t});var i=l(4848),s=l(8453),r=l(1470),c=l(9365);const d={title:"Configuration",sidebar_position:1},a=void 0,o={id:"fundamentals/configuration",title:"Configuration",description:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:",source:"@site/docs/fundamentals/configuration.md",sourceDirName:"fundamentals",slug:"/fundamentals/configuration",permalink:"/next/fundamentals/configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/configuration.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Configuration",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Migrating from Geth",permalink:"/next/get-started/migrating-from-geth"},next:{title:"Sync",permalink:"/next/fundamentals/sync"}},h={},t=[{value:"Basic command line options",id:"basic-command-line-options",level:2},{value:"-d, --baseDbPath <path>",id:"basedbpath",level:4},{value:"-c, --config <value>",id:"config",level:4},{value:"-cd, --configsDirectory <path>",id:"configs-directory",level:4},{value:"-dd, --datadir <path>",id:"datadir",level:4},{value:"-?, -h, --help",id:"help",level:4},{value:"-l, --log <level>",id:"log",level:4},{value:"-lcs, --loggerConfigSource <path>",id:"loggerconfigsource",level:4},{value:"-pd, --pluginsDirectory <path>",id:"pluginsdirectory",level:4},{value:"-v, --version",id:"version",level:4},{value:"Options by namespaces",id:"options-by-namespaces",level:2},{value:"Aura",id:"aura",level:3},{value:"Aura.AllowAuRaPrivateChains",id:"aura-allowauraprivatechains",level:4},{value:"Aura.ForceSealing",id:"aura-forcesealing",level:4},{value:"Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract",id:"aura-minimum2mlngasperblockwhenusingblockgaslimitcontract",level:4},{value:"Aura.TxPriorityConfigFilePath",id:"aura-txpriorityconfigfilepath",level:4},{value:"Aura.TxPriorityContractAddress",id:"aura-txprioritycontractaddress",level:4},{value:"Blocks",id:"blocks",level:3},{value:"Blocks.BlockProductionTimeoutMs",id:"blocks-blockproductiontimeoutms",level:4},{value:"Blocks.ExtraData",id:"blocks-extradata",level:4},{value:"Blocks.GenesisTimeoutMs",id:"blocks-genesistimeoutms",level:4},{value:"Blocks.MinGasPrice",id:"blocks-mingasprice",level:4},{value:"Blocks.PreWarmStateOnBlockProcessing",id:"blocks-prewarmstateonblockprocessing",level:4},{value:"Blocks.RandomizedBlocks",id:"blocks-randomizedblocks",level:4},{value:"Blocks.SecondsPerSlot",id:"blocks-secondsperslot",level:4},{value:"Blocks.TargetBlockGasLimit",id:"blocks-targetblockgaslimit",level:4},{value:"Bloom",id:"bloom",level:3},{value:"Bloom.Index",id:"bloom-index",level:4},{value:"Bloom.IndexLevelBucketSizes",id:"bloom-indexlevelbucketsizes",level:4},{value:"Bloom.Migration",id:"bloom-migration",level:4},{value:"Bloom.MigrationStatistics",id:"bloom-migrationstatistics",level:4},{value:"CensorshipDetector",id:"censorshipdetector",level:3},{value:"CensorshipDetector.AddressesForCensorshipDetection",id:"censorshipdetector-addressesforcensorshipdetection",level:4},{value:"CensorshipDetector.BlockCensorshipThreshold",id:"censorshipdetector-blockcensorshipthreshold",level:4},{value:"CensorshipDetector.Enabled",id:"censorshipdetector-enabled",level:4},{value:"EthStats",id:"ethstats",level:3},{value:"EthStats.Contact",id:"ethstats-contact",level:4},{value:"EthStats.Enabled",id:"ethstats-enabled",level:4},{value:"EthStats.Name",id:"ethstats-name",level:4},{value:"EthStats.Secret",id:"ethstats-secret",level:4},{value:"EthStats.SendInterval",id:"ethstats-sendinterval",level:4},{value:"EthStats.Server",id:"ethstats-server",level:4},{value:"HealthChecks",id:"healthchecks",level:3},{value:"HealthChecks.Enabled",id:"healthchecks-enabled",level:4},{value:"HealthChecks.LowStorageCheckAwaitOnStartup",id:"healthchecks-lowstoragecheckawaitonstartup",level:4},{value:"HealthChecks.LowStorageSpaceShutdownThreshold",id:"healthchecks-lowstoragespaceshutdownthreshold",level:4},{value:"HealthChecks.LowStorageSpaceWarningThreshold",id:"healthchecks-lowstoragespacewarningthreshold",level:4},{value:"HealthChecks.MaxIntervalClRequestTime",id:"healthchecks-maxintervalclrequesttime",level:4},{value:"HealthChecks.MaxIntervalWithoutProcessedBlock",id:"healthchecks-maxintervalwithoutprocessedblock",level:4},{value:"HealthChecks.MaxIntervalWithoutProducedBlock",id:"healthchecks-maxintervalwithoutproducedblock",level:4},{value:"HealthChecks.PollingInterval",id:"healthchecks-pollinginterval",level:4},{value:"HealthChecks.Slug",id:"healthchecks-slug",level:4},{value:"HealthChecks.UIEnabled",id:"healthchecks-uienabled",level:4},{value:"HealthChecks.WebhooksEnabled",id:"healthchecks-webhooksenabled",level:4},{value:"HealthChecks.WebhooksPayload",id:"healthchecks-webhookspayload",level:4},{value:"HealthChecks.WebhooksRestorePayload",id:"healthchecks-webhooksrestorepayload",level:4},{value:"HealthChecks.WebhooksUri",id:"healthchecks-webhooksuri",level:4},{value:"Hive",id:"hive",level:3},{value:"Hive.BlocksDir",id:"hive-blocksdir",level:4},{value:"Hive.ChainFile",id:"hive-chainfile",level:4},{value:"Hive.Enabled",id:"hive-enabled",level:4},{value:"Hive.GenesisFilePath",id:"hive-genesisfilepath",level:4},{value:"Hive.KeysDir",id:"hive-keysdir",level:4},{value:"Init",id:"init",level:3},{value:"Init.AutoDump",id:"init-autodump",level:4},{value:"Init.BadBlocksStored",id:"init-badblocksstored",level:4},{value:"Init.BaseDbPath",id:"init-basedbpath",level:4},{value:"Init.ChainSpecPath",id:"init-chainspecpath",level:4},{value:"Init.DiagnosticMode",id:"init-diagnosticmode",level:4},{value:"Init.DiscoveryEnabled",id:"init-discoveryenabled",level:4},{value:"Init.EnableUnsecuredDevWallet",id:"init-enableunsecureddevwallet",level:4},{value:"Init.GenesisHash",id:"init-genesishash",level:4},{value:"Init.HiveChainSpecPath",id:"init-hivechainspecpath",level:4},{value:"Init.IsMining",id:"init-ismining",level:4},{value:"Init.KeepDevWalletInMemory",id:"init-keepdevwalletinmemory",level:4},{value:"Init.KzgSetupPath",id:"init-kzgsetuppath",level:4},{value:"Init.LogDirectory",id:"init-logdirectory",level:4},{value:"Init.LogFileName",id:"init-logfilename",level:4},{value:"Init.LogRules",id:"init-logrules",level:4},{value:"Init.MemoryHint",id:"init-memoryhint",level:4},{value:"Init.PeerManagerEnabled",id:"init-peermanagerenabled",level:4},{value:"Init.ProcessingEnabled",id:"init-processingenabled",level:4},{value:"Init.RpcDbUrl",id:"init-rpcdburl",level:4},{value:"Init.StaticNodesPath",id:"init-staticnodespath",level:4},{value:"Init.WebSocketsEnabled",id:"init-websocketsenabled",level:4},{value:"JsonRpc",id:"jsonrpc",level:3},{value:"JsonRpc.AdditionalRpcUrls",id:"jsonrpc-additionalrpcurls",level:4},{value:"JsonRpc.BufferResponses",id:"jsonrpc-bufferresponses",level:4},{value:"JsonRpc.CallsFilterFilePath",id:"jsonrpc-callsfilterfilepath",level:4},{value:"JsonRpc.Enabled",id:"jsonrpc-enabled",level:4},{value:"JsonRpc.EnabledModules",id:"jsonrpc-enabledmodules",level:4},{value:"JsonRpc.EngineEnabledModules",id:"jsonrpc-engineenabledmodules",level:4},{value:"JsonRpc.EngineHost",id:"jsonrpc-enginehost",level:4},{value:"JsonRpc.EnginePort",id:"jsonrpc-engineport",level:4},{value:"JsonRpc.EstimateErrorMargin",id:"jsonrpc-estimateerrormargin",level:4},{value:"JsonRpc.EthModuleConcurrentInstances",id:"jsonrpc-ethmoduleconcurrentinstances",level:4},{value:"JsonRpc.GasCap",id:"jsonrpc-gascap",level:4},{value:"JsonRpc.Host",id:"jsonrpc-host",level:4},{value:"JsonRpc.IpcUnixDomainSocketPath",id:"jsonrpc-ipcunixdomainsocketpath",level:4},{value:"JsonRpc.JwtSecretFile",id:"jsonrpc-jwtsecretfile",level:4},{value:"JsonRpc.MaxBatchResponseBodySize",id:"jsonrpc-maxbatchresponsebodysize",level:4},{value:"JsonRpc.MaxBatchSize",id:"jsonrpc-maxbatchsize",level:4},{value:"JsonRpc.MaxLoggedRequestParametersCharacters",id:"jsonrpc-maxloggedrequestparameterscharacters",level:4},{value:"JsonRpc.MaxLogsPerResponse",id:"jsonrpc-maxlogsperresponse",level:4},{value:"JsonRpc.MaxRequestBodySize",id:"jsonrpc-maxrequestbodysize",level:4},{value:"JsonRpc.MaxSimulateBlocksCap",id:"jsonrpc-maxsimulateblockscap",level:4},{value:"JsonRpc.MethodsLoggingFiltering",id:"jsonrpc-methodsloggingfiltering",level:4},{value:"JsonRpc.Port",id:"jsonrpc-port",level:4},{value:"JsonRpc.ReportIntervalSeconds",id:"jsonrpc-reportintervalseconds",level:4},{value:"JsonRpc.RequestQueueLimit",id:"jsonrpc-requestqueuelimit",level:4},{value:"JsonRpc.RpcRecorderBaseFilePath",id:"jsonrpc-rpcrecorderbasefilepath",level:4},{value:"JsonRpc.RpcRecorderState",id:"jsonrpc-rpcrecorderstate",level:4},{value:"JsonRpc.Timeout",id:"jsonrpc-timeout",level:4},{value:"JsonRpc.WebSocketsPort",id:"jsonrpc-websocketsport",level:4},{value:"KeyStore",id:"keystore",level:3},{value:"KeyStore.BlockAuthorAccount",id:"keystore-blockauthoraccount",level:4},{value:"KeyStore.Cipher",id:"keystore-cipher",level:4},{value:"KeyStore.EnodeAccount",id:"keystore-enodeaccount",level:4},{value:"KeyStore.EnodeKeyFile",id:"keystore-enodekeyfile",level:4},{value:"KeyStore.IVSize",id:"keystore-ivsize",level:4},{value:"KeyStore.Kdf",id:"keystore-kdf",level:4},{value:"KeyStore.KdfparamsDklen",id:"keystore-kdfparamsdklen",level:4},{value:"KeyStore.KdfparamsN",id:"keystore-kdfparamsn",level:4},{value:"KeyStore.KdfparamsP",id:"keystore-kdfparamsp",level:4},{value:"KeyStore.KdfparamsR",id:"keystore-kdfparamsr",level:4},{value:"KeyStore.KdfparamsSaltLen",id:"keystore-kdfparamssaltlen",level:4},{value:"KeyStore.KeyStoreDirectory",id:"keystore-keystoredirectory",level:4},{value:"KeyStore.KeyStoreEncoding",id:"keystore-keystoreencoding",level:4},{value:"KeyStore.PasswordFiles",id:"keystore-passwordfiles",level:4},{value:"KeyStore.Passwords",id:"keystore-passwords",level:4},{value:"KeyStore.SymmetricEncrypterBlockSize",id:"keystore-symmetricencrypterblocksize",level:4},{value:"KeyStore.SymmetricEncrypterKeySize",id:"keystore-symmetricencrypterkeysize",level:4},{value:"KeyStore.TestNodeKey",id:"keystore-testnodekey",level:4},{value:"KeyStore.UnlockAccounts",id:"keystore-unlockaccounts",level:4},{value:"Merge",id:"merge",level:3},{value:"Merge.BuilderRelayUrl",id:"merge-builderrelayurl",level:4},{value:"Merge.CollectionsPerDecommit",id:"merge-collectionsperdecommit",level:4},{value:"Merge.CompactMemory",id:"merge-compactmemory",level:4},{value:"Merge.Enabled",id:"merge-enabled",level:4},{value:"Merge.FinalTotalDifficulty",id:"merge-finaltotaldifficulty",level:4},{value:"Merge.PrioritizeBlockLatency",id:"merge-prioritizeblocklatency",level:4},{value:"Merge.SweepMemory",id:"merge-sweepmemory",level:4},{value:"Merge.TerminalBlockHash",id:"merge-terminalblockhash",level:4},{value:"Merge.TerminalBlockNumber",id:"merge-terminalblocknumber",level:4},{value:"Merge.TerminalTotalDifficulty",id:"merge-terminaltotaldifficulty",level:4},{value:"Metrics",id:"metrics",level:3},{value:"Metrics.CountersEnabled",id:"metrics-countersenabled",level:4},{value:"Metrics.Enabled",id:"metrics-enabled",level:4},{value:"Metrics.EnableDbSizeMetrics",id:"metrics-enabledbsizemetrics",level:4},{value:"Metrics.ExposeHost",id:"metrics-exposehost",level:4},{value:"Metrics.ExposePort",id:"metrics-exposeport",level:4},{value:"Metrics.IntervalSeconds",id:"metrics-intervalseconds",level:4},{value:"Metrics.NodeName",id:"metrics-nodename",level:4},{value:"Metrics.PushGatewayUrl",id:"metrics-pushgatewayurl",level:4},{value:"Mining",id:"mining",level:3},{value:"Mining.Enabled",id:"mining-enabled",level:4},{value:"Mining.Signer",id:"mining-signer",level:4},{value:"Network",id:"network",level:3},{value:"Network.Bootnodes",id:"network-bootnodes",level:4},{value:"Network.DiagTracerEnabled",id:"network-diagtracerenabled",level:4},{value:"Network.DiscoveryDns",id:"network-discoverydns",level:4},{value:"Network.DiscoveryPort",id:"network-discoveryport",level:4},{value:"Network.EnableUPnP",id:"network-enableupnp",level:4},{value:"Network.ExternalIp",id:"network-externalip",level:4},{value:"Network.LocalIp",id:"network-localip",level:4},{value:"Network.MaxActivePeers",id:"network-maxactivepeers",level:4},{value:"Network.MaxNettyArenaCount",id:"network-maxnettyarenacount",level:4},{value:"Network.NettyArenaOrder",id:"network-nettyarenaorder",level:4},{value:"Network.OnlyStaticPeers",id:"network-onlystaticpeers",level:4},{value:"Network.P2PPort",id:"network-p2pport",level:4},{value:"Network.PriorityPeersMaxCount",id:"network-prioritypeersmaxcount",level:4},{value:"Network.StaticPeers",id:"network-staticpeers",level:4},{value:"Optimism",id:"optimism",level:3},{value:"Optimism.SequencerUrl",id:"optimism-sequencerurl",level:4},{value:"Pruning",id:"pruning",level:3},{value:"Pruning.AvailableSpaceCheckEnabled",id:"pruning-availablespacecheckenabled",level:4},{value:"Pruning.CacheMb",id:"pruning-cachemb",level:4},{value:"Pruning.FullPruningCompletionBehavior",id:"pruning-fullpruningcompletionbehavior",level:4},{value:"Pruning.FullPruningDisableLowPriorityWrites",id:"pruning-fullpruningdisablelowprioritywrites",level:4},{value:"Pruning.FullPruningMaxDegreeOfParallelism",id:"pruning-fullpruningmaxdegreeofparallelism",level:4},{value:"Pruning.FullPruningMemoryBudgetMb",id:"pruning-fullpruningmemorybudgetmb",level:4},{value:"Pruning.FullPruningMinimumDelayHours",id:"pruning-fullpruningminimumdelayhours",level:4},{value:"Pruning.FullPruningThresholdMb",id:"pruning-fullpruningthresholdmb",level:4},{value:"Pruning.FullPruningTrigger",id:"pruning-fullpruningtrigger",level:4},{value:"Pruning.Mode",id:"pruning-mode",level:4},{value:"Pruning.PersistenceInterval",id:"pruning-persistenceinterval",level:4},{value:"Pruning.PruningBoundary",id:"pruning-pruningboundary",level:4},{value:"Pruning.TrackedPastKeyCountMemoryRatio",id:"pruning-trackedpastkeycountmemoryratio",level:4},{value:"Receipt",id:"receipt",level:3},{value:"Receipt.CompactReceiptStore",id:"receipt-compactreceiptstore",level:4},{value:"Receipt.CompactTxIndex",id:"receipt-compacttxindex",level:4},{value:"Receipt.ReceiptsMigration",id:"receipt-receiptsmigration",level:4},{value:"Receipt.StoreReceipts",id:"receipt-storereceipts",level:4},{value:"Receipt.TxLookupLimit",id:"receipt-txlookuplimit",level:4},{value:"Seq",id:"seq",level:3},{value:"Seq.ApiKey",id:"seq-apikey",level:4},{value:"Seq.MinLevel",id:"seq-minlevel",level:4},{value:"Seq.ServerUrl",id:"seq-serverurl",level:4},{value:"Shutter",id:"shutter",level:3},{value:"Shutter.BootnodeP2PAddresses",id:"shutter-bootnodep2paddresses",level:4},{value:"Shutter.Enabled",id:"shutter-enabled",level:4},{value:"Shutter.InstanceID",id:"shutter-instanceid",level:4},{value:"Shutter.KeyBroadcastContractAddress",id:"shutter-keybroadcastcontractaddress",level:4},{value:"Shutter.KeyperSetManagerContractAddress",id:"shutter-keypersetmanagercontractaddress",level:4},{value:"Shutter.P2PPort",id:"shutter-p2pport",level:4},{value:"Shutter.SequencerContractAddress",id:"shutter-sequencercontractaddress",level:4},{value:"Shutter.ValidatorInfoFile",id:"shutter-validatorinfofile",level:4},{value:"Shutter.ValidatorRegistryContractAddress",id:"shutter-validatorregistrycontractaddress",level:4},{value:"Snapshot",id:"snapshot",level:3},{value:"Snapshot.Checksum",id:"snapshot-checksum",level:4},{value:"Snapshot.DownloadUrl",id:"snapshot-downloadurl",level:4},{value:"Snapshot.Enabled",id:"snapshot-enabled",level:4},{value:"Snapshot.SnapshotDirectory",id:"snapshot-snapshotdirectory",level:4},{value:"Snapshot.SnapshotFileName",id:"snapshot-snapshotfilename",level:4},{value:"Sync",id:"sync",level:3},{value:"Sync.AncientBodiesBarrier",id:"sync-ancientbodiesbarrier",level:4},{value:"Sync.AncientReceiptsBarrier",id:"sync-ancientreceiptsbarrier",level:4},{value:"Sync.BlocksDbTuneDbMode",id:"sync-blocksdbtunedbmode",level:4},{value:"Sync.DownloadBodiesInFastSync",id:"sync-downloadbodiesinfastsync",level:4},{value:"Sync.DownloadHeadersInFastSync",id:"sync-downloadheadersinfastsync",level:4},{value:"Sync.DownloadReceiptsInFastSync",id:"sync-downloadreceiptsinfastsync",level:4},{value:"Sync.ExitOnSynced",id:"sync-exitonsynced",level:4},{value:"Sync.ExitOnSyncedWaitTimeSec",id:"sync-exitonsyncedwaittimesec",level:4},{value:"Sync.FastSync",id:"sync-fastsync",level:4},{value:"Sync.FastSyncCatchUpHeightDelta",id:"sync-fastsynccatchupheightdelta",level:4},{value:"Sync.FixReceipts",id:"sync-fixreceipts",level:4},{value:"Sync.FixTotalDifficulty",id:"sync-fixtotaldifficulty",level:4},{value:"Sync.FixTotalDifficultyLastBlock",id:"sync-fixtotaldifficultylastblock",level:4},{value:"Sync.FixTotalDifficultyStartingBlock",id:"sync-fixtotaldifficultystartingblock",level:4},{value:"Sync.MaxAttemptsToUpdatePivot",id:"sync-maxattemptstoupdatepivot",level:4},{value:"Sync.MaxProcessingThreads",id:"sync-maxprocessingthreads",level:4},{value:"Sync.NetworkingEnabled",id:"sync-networkingenabled",level:4},{value:"Sync.NonValidatorNode",id:"sync-nonvalidatornode",level:4},{value:"Sync.PivotHash",id:"sync-pivothash",level:4},{value:"Sync.PivotNumber",id:"sync-pivotnumber",level:4},{value:"Sync.PivotTotalDifficulty",id:"sync-pivottotaldifficulty",level:4},{value:"Sync.SnapSync",id:"sync-snapsync",level:4},{value:"Sync.SnapSyncAccountRangePartitionCount",id:"sync-snapsyncaccountrangepartitioncount",level:4},{value:"Sync.StrictMode",id:"sync-strictmode",level:4},{value:"Sync.SynchronizationEnabled",id:"sync-synchronizationenabled",level:4},{value:"Sync.TuneDbMode",id:"sync-tunedbmode",level:4},{value:"Sync.UseGethLimitsInFastBlocks",id:"sync-usegethlimitsinfastblocks",level:4},{value:"TraceStore",id:"tracestore",level:3},{value:"TraceStore.BlocksToKeep",id:"tracestore-blockstokeep",level:4},{value:"TraceStore.DeserializationParallelization",id:"tracestore-deserializationparallelization",level:4},{value:"TraceStore.Enabled",id:"tracestore-enabled",level:4},{value:"TraceStore.TraceTypes",id:"tracestore-tracetypes",level:4},{value:"TxPool",id:"txpool",level:3},{value:"TxPool.BlobCacheSize",id:"txpool-blobcachesize",level:4},{value:"TxPool.BlobsSupport",id:"txpool-blobssupport",level:4},{value:"TxPool.GasLimit",id:"txpool-gaslimit",level:4},{value:"TxPool.HashCacheSize",id:"txpool-hashcachesize",level:4},{value:"TxPool.InMemoryBlobPoolSize",id:"txpool-inmemoryblobpoolsize",level:4},{value:"TxPool.MaxPendingBlobTxsPerSender",id:"txpool-maxpendingblobtxspersender",level:4},{value:"TxPool.MaxPendingTxsPerSender",id:"txpool-maxpendingtxspersender",level:4},{value:"TxPool.MinBaseFeeThreshold",id:"txpool-minbasefeethreshold",level:4},{value:"TxPool.PeerNotificationThreshold",id:"txpool-peernotificationthreshold",level:4},{value:"TxPool.PersistentBlobStorageSize",id:"txpool-persistentblobstoragesize",level:4},{value:"TxPool.ReportMinutes",id:"txpool-reportminutes",level:4},{value:"TxPool.Size",id:"txpool-size",level:4},{value:"Wallet",id:"wallet",level:3},{value:"Wallet.DevAccounts",id:"wallet-devaccounts",level:4},{value:"Environment variables",id:"environment-variables",level:2},{value:"Configuration file",id:"configuration-file",level:2}];function x(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components},{Details:l}=n;return l||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#basic-command-line-options",children:"Command line options"})," (aka arguments or flags)"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#environment-variables",children:"Environment variables"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#configuration-file",children:"Configuration file"})}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsx)(n.p,{children:"Given the above priority list, an option defined in a more priority way overrides the same option defined elsewhere if any."})}),"\n",(0,i.jsx)(n.p,{children:"The full list of configuration options can be displayed by running:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,i.jsx)(n.p,{children:"Below is the list of the basic command line options followed by an exhaustive list of configuration options by namespace."}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"The configuration options are case-sensitive and can be defined only once unless stated otherwise."})}),"\n",(0,i.jsx)(n.h2,{id:"basic-command-line-options",children:"Basic command line options"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"basedbpath",children:(0,i.jsx)(n.code,{children:"-d, --baseDbPath "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the Nethermind database directory. Defaults to ",(0,i.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"config",children:(0,i.jsx)(n.code,{children:"-c, --config "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the ",(0,i.jsx)(n.a,{href:"#configuration-file",children:"configuration file"})," or the name (without extension) of any of the configuration files in the configuration directory. Defaults to ",(0,i.jsx)(n.code,{children:"mainnet"}),"."]}),"\n",(0,i.jsxs)(l,{children:[(0,i.jsx)("summary",{children:"Available configurations"}),(0,i.jsxs)("p",{children:[(0,i.jsxs)(n.p,{children:["Nethermind provides the following pre-built configurations named as the networks they are for. Their respective versions for archive nodes are suffixed ",(0,i.jsx)(n.code,{children:"_archive"}),"."]}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"base-mainnet"})," ",(0,i.jsx)(n.code,{children:"base-mainnet_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"base-sepolia"})," ",(0,i.jsx)(n.code,{children:"base-sepolia_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"chiado"})," ",(0,i.jsx)(n.code,{children:"chiado_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"energyweb"})," ",(0,i.jsx)(n.code,{children:"energyweb_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"gnosis"})," ",(0,i.jsx)(n.code,{children:"gnosis_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"holesky"})," ",(0,i.jsx)(n.code,{children:"holesky_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mainnet"})," ",(0,i.jsx)(n.code,{children:"mainnet_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"op-mainnet"})," ",(0,i.jsx)(n.code,{children:"op-mainnet_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"op-sepolia"})," ",(0,i.jsx)(n.code,{children:"op-sepolia_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"sepolia"})," ",(0,i.jsx)(n.code,{children:"sepolia_archive"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"volta"})," ",(0,i.jsx)(n.code,{children:"volta_archive"})]}),"\n"]})]})]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"configs-directory",children:(0,i.jsx)(n.code,{children:"-cd, --configsDirectory "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the configuration files directory. Defaults to ",(0,i.jsx)(n.code,{children:"configs"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"datadir",children:(0,i.jsx)(n.code,{children:"-dd, --datadir "})}),"\n",(0,i.jsx)(n.p,{children:"The path to the Nethermind data directory. Defaults to Nethermind's current directory."}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.p,{children:["The absolute paths set by ",(0,i.jsx)(n.a,{href:"#init-basedbpath",children:(0,i.jsx)(n.code,{children:"Init.BaseDbPath"})}),", ",(0,i.jsx)(n.a,{href:"#init-logdirectory",children:(0,i.jsx)(n.code,{children:"Init.LogDirectory"})}),", or ",(0,i.jsx)(n.a,{href:"#keystore-keystoredirectory",children:(0,i.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})})," options in a configuration file are not overridden by ",(0,i.jsx)(n.code,{children:"--datadir"}),"."]})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"help",children:(0,i.jsx)(n.code,{children:"-?, -h, --help"})}),"\n",(0,i.jsx)(n.p,{children:"Displays the full list of available command line options."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"log",children:(0,i.jsx)(n.code,{children:"-l, --log "})}),"\n",(0,i.jsxs)(n.p,{children:["Log level (severity). Allowed values: ",(0,i.jsx)(n.code,{children:"TRACE"})," ",(0,i.jsx)(n.code,{children:"DEBUG"})," ",(0,i.jsx)(n.code,{children:"INFO"})," ",(0,i.jsx)(n.code,{children:"WARN"})," ",(0,i.jsx)(n.code,{children:"ERROR"})," ",(0,i.jsx)(n.code,{children:"OFF"}),". Defaults to ",(0,i.jsx)(n.code,{children:"INFO"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loggerconfigsource",children:(0,i.jsx)(n.code,{children:"-lcs, --loggerConfigSource "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the NLog configuration file. Defaults to ",(0,i.jsx)(n.code,{children:"NLog.config"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pluginsdirectory",children:(0,i.jsx)(n.code,{children:"-pd, --pluginsDirectory "})}),"\n",(0,i.jsxs)(n.p,{children:["The path to the Nethermind plugins directory. Defaults to ",(0,i.jsx)(n.code,{children:"plugins"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"version",children:(0,i.jsx)(n.code,{children:"-v, --version"})}),"\n",(0,i.jsx)(n.p,{children:"Displays the Nethermind version info."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"options-by-namespaces",children:"Options by namespaces"}),"\n",(0,i.jsx)(n.h3,{id:"aura",children:"Aura"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-allowauraprivatechains",children:(0,i.jsx)(n.code,{children:"Aura.AllowAuRaPrivateChains"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.AllowAuRaPrivateChains \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_ALLOWAURAPRIVATECHAINS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "AllowAuRaPrivateChains": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to allow private Aura-based chains only. Do not use with existing Aura-based chains. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-forcesealing",children:(0,i.jsx)(n.code,{children:"Aura.ForceSealing"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.ForceSealing \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_FORCESEALING=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "ForceSealing": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to seal empty blocks if mining. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-minimum2mlngasperblockwhenusingblockgaslimitcontract",children:(0,i.jsx)(n.code,{children:"Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_MINIMUM2MLNGASPERBLOCKWHENUSINGBLOCKGASLIMITCONTRACT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use 2M gas if the contract returns less than that when using ",(0,i.jsx)(n.code,{children:"BlockGasLimitContractTransitions"}),". Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-txpriorityconfigfilepath",children:(0,i.jsx)(n.code,{children:"Aura.TxPriorityConfigFilePath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.TxPriorityConfigFilePath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONFIGFILEPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "TxPriorityConfigFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the transaction priority rules file to use when selecting transactions from the transaction pool. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"aura-txprioritycontractaddress",children:(0,i.jsx)(n.code,{children:"Aura.TxPriorityContractAddress"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Aura.TxPriorityContractAddress \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONTRACTADDRESS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Aura": {\n "TxPriorityContractAddress": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The address of the transaction priority contract to use when selecting transactions from the transaction pool. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"blocks",children:"Blocks"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-blockproductiontimeoutms",children:(0,i.jsx)(n.code,{children:"Blocks.BlockProductionTimeoutMs"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.BlockProductionTimeoutMs \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_BLOCKPRODUCTIONTIMEOUTMS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "BlockProductionTimeoutMs": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Block Production timeout, in milliseconds. Defaults to ",(0,i.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-extradata",children:(0,i.jsx)(n.code,{children:"Blocks.ExtraData"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.ExtraData \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_EXTRADATA=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "ExtraData": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block header extra data up to 32 bytes in length. Defaults to ",(0,i.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-genesistimeoutms",children:(0,i.jsx)(n.code,{children:"Blocks.GenesisTimeoutMs"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.GenesisTimeoutMs \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_GENESISTIMEOUTMS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "GenesisTimeoutMs": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Genesis block load timeout, in milliseconds. Defaults to ",(0,i.jsx)(n.code,{children:"40000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-mingasprice",children:(0,i.jsx)(n.code,{children:"Blocks.MinGasPrice"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.MinGasPrice \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_MINGASPRICE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "MinGasPrice": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The minimum gas premium (or the gas price before the London hard fork) for transactions accepted by the block producer. Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-prewarmstateonblockprocessing",children:(0,i.jsx)(n.code,{children:"Blocks.PreWarmStateOnBlockProcessing"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.PreWarmStateOnBlockProcessing \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_PREWARMSTATEONBLOCKPROCESSING=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "PreWarmStateOnBlockProcessing": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to pre-warm the state when processing blocks. This can lead to an up to 2x speed-up in the main loop block processing. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"True"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-randomizedblocks",children:(0,i.jsx)(n.code,{children:"Blocks.RandomizedBlocks"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.RandomizedBlocks \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_RANDOMIZEDBLOCKS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "RandomizedBlocks": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to change the difficulty of the block randomly within the constraints. Used in NethDev only. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-secondsperslot",children:(0,i.jsx)(n.code,{children:"Blocks.SecondsPerSlot"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.SecondsPerSlot \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_SECONDSPERSLOT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "SecondsPerSlot": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block time slot, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"12"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks-targetblockgaslimit",children:(0,i.jsx)(n.code,{children:"Blocks.TargetBlockGasLimit"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Blocks.TargetBlockGasLimit \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_TARGETBLOCKGASLIMIT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Blocks": {\n "TargetBlockGasLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block gas limit that the block producer should try to reach in the fastest possible way based on the protocol rules. If not specified, then the block producer should follow others. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"bloom",children:"Bloom"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-index",children:(0,i.jsx)(n.code,{children:"Bloom.Index"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.Index \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEX=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "Index": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use the Bloom index. The Bloom index speeds up the RPC log searches. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-indexlevelbucketsizes",children:(0,i.jsx)(n.code,{children:"Bloom.IndexLevelBucketSizes"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.IndexLevelBucketSizes \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEXLEVELBUCKETSIZES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "IndexLevelBucketSizes": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of multipliers for index levels. Can be tweaked per chain to boost performance. Defaults to ",(0,i.jsx)(n.code,{children:"[4, 8, 8]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-migration",children:(0,i.jsx)(n.code,{children:"Bloom.Migration"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.Migration \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATION=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "Migration": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to migrate the previously downloaded blocks to the Bloom index. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bloom-migrationstatistics",children:(0,i.jsx)(n.code,{children:"Bloom.MigrationStatistics"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Bloom.MigrationStatistics \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATIONSTATISTICS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Bloom": {\n "MigrationStatistics": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether the migration statistics should be calculated and output. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"censorshipdetector",children:"CensorshipDetector"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"censorshipdetector-addressesforcensorshipdetection",children:(0,i.jsx)(n.code,{children:"CensorshipDetector.AddressesForCensorshipDetection"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--CensorshipDetector.AddressesForCensorshipDetection \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_CENSORSHIPDETECTORCONFIG_ADDRESSESFORCENSORSHIPDETECTION=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "CensorshipDetector": {\n "AddressesForCensorshipDetection": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The addresses for which censorship is being detected. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"censorshipdetector-blockcensorshipthreshold",children:(0,i.jsx)(n.code,{children:"CensorshipDetector.BlockCensorshipThreshold"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--CensorshipDetector.BlockCensorshipThreshold \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_CENSORSHIPDETECTORCONFIG_BLOCKCENSORSHIPTHRESHOLD=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "CensorshipDetector": {\n "BlockCensorshipThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Number of consecutive blocks with detected potential censorship to report censorship attempt Defaults to ",(0,i.jsx)(n.code,{children:"2"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"censorshipdetector-enabled",children:(0,i.jsx)(n.code,{children:"CensorshipDetector.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--CensorshipDetector.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_CENSORSHIPDETECTORCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "CensorshipDetector": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Enabling censorship detection feature Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"ethstats",children:"EthStats"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-contact",children:(0,i.jsx)(n.code,{children:"EthStats.Contact"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Contact \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_CONTACT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Contact": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The node owner contact details displayed on Ethstats. Defaults to ",(0,i.jsx)(n.code,{children:"hello@nethermind.io"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-enabled",children:(0,i.jsx)(n.code,{children:"EthStats.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use Ethstats publishing. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-name",children:(0,i.jsx)(n.code,{children:"EthStats.Name"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Name \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_NAME=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Name": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The node name displayed on Ethstats. Defaults to ",(0,i.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-secret",children:(0,i.jsx)(n.code,{children:"EthStats.Secret"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Secret \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SECRET=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Secret": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Ethstats secret. Defaults to ",(0,i.jsx)(n.code,{children:"secret"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-sendinterval",children:(0,i.jsx)(n.code,{children:"EthStats.SendInterval"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.SendInterval \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SENDINTERVAL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "SendInterval": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The stats update interval, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"15"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ethstats-server",children:(0,i.jsx)(n.code,{children:"EthStats.Server"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--EthStats.Server \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SERVER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "EthStats": {\n "Server": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Ethstats server URL. Defaults to ",(0,i.jsx)(n.code,{children:"ws://localhost:3000/api"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"healthchecks",children:"HealthChecks"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-enabled",children:(0,i.jsx)(n.code,{children:"HealthChecks.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the health check. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-lowstoragecheckawaitonstartup",children:(0,i.jsx)(n.code,{children:"HealthChecks.LowStorageCheckAwaitOnStartup"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.LowStorageCheckAwaitOnStartup \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGECHECKAWAITONSTARTUP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "LowStorageCheckAwaitOnStartup": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to check for low disk space on startup and suspend until enough space is available. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-lowstoragespaceshutdownthreshold",children:(0,i.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceShutdownThreshold"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACESHUTDOWNTHRESHOLD=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "LowStorageSpaceShutdownThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The percentage of available disk space below which Nethermind shuts down. ",(0,i.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-lowstoragespacewarningthreshold",children:(0,i.jsx)(n.code,{children:"HealthChecks.LowStorageSpaceWarningThreshold"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACEWARNINGTHRESHOLD=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "LowStorageSpaceWarningThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The percentage of available disk space below which a warning is displayed. ",(0,i.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-maxintervalclrequesttime",children:(0,i.jsx)(n.code,{children:"HealthChecks.MaxIntervalClRequestTime"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.MaxIntervalClRequestTime \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALCLREQUESTTIME=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "MaxIntervalClRequestTime": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max request interval, in seconds, in which the consensus client is assumed healthy. Defaults to ",(0,i.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-maxintervalwithoutprocessedblock",children:(0,i.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProcessedBlock"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProcessedBlock \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPROCESSEDBLOCK=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "MaxIntervalWithoutProcessedBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max interval, in seconds, in which the block processing is assumed healthy. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-maxintervalwithoutproducedblock",children:(0,i.jsx)(n.code,{children:"HealthChecks.MaxIntervalWithoutProducedBlock"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProducedBlock \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPRODUCEDBLOCK=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "MaxIntervalWithoutProducedBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max interval, in seconds, in which the block production is assumed healthy. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-pollinginterval",children:(0,i.jsx)(n.code,{children:"HealthChecks.PollingInterval"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.PollingInterval \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_POLLINGINTERVAL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "PollingInterval": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The health check updates polling interval, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-slug",children:(0,i.jsx)(n.code,{children:"HealthChecks.Slug"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.Slug \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_SLUG=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "Slug": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL slug the health checks service is exposed at. Defaults to ",(0,i.jsx)(n.code,{children:"/health"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-uienabled",children:(0,i.jsx)(n.code,{children:"HealthChecks.UIEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.UIEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_UIENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "UIEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the health checks UI. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhooksenabled",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable web hooks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhookspayload",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksPayload"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksPayload \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSPAYLOAD=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksPayload": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on failure.\nDefaults to:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#FFCC00",\n "pretext": "Health Check Status :warning:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "Description",\n "value": "[[DESCRIPTIONS]]",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhooksrestorepayload",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksRestorePayload"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksRestorePayload \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSRESTOREPAYLOAD=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksRestorePayload": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on recovery.\nDefaults to:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#36a64f",\n "pretext": "Health Check Status :+1:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "description",\n "value": "The HealthCheck `[[LIVENESS]]` is recovered. Everything is up and running.",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"healthchecks-webhooksuri",children:(0,i.jsx)(n.code,{children:"HealthChecks.WebhooksUri"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--HealthChecks.WebhooksUri \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSURI=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "HealthChecks": {\n "WebhooksUri": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The web hook URL. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"hive",children:"Hive"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-blocksdir",children:(0,i.jsx)(n.code,{children:"Hive.BlocksDir"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.BlocksDir \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_BLOCKSDIR=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "BlocksDir": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the directory with additional blocks. Defaults to ",(0,i.jsx)(n.code,{children:"/blocks"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-chainfile",children:(0,i.jsx)(n.code,{children:"Hive.ChainFile"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.ChainFile \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_CHAINFILE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "ChainFile": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the test chain spec file. Defaults to ",(0,i.jsx)(n.code,{children:"/chain.rlp"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-enabled",children:(0,i.jsx)(n.code,{children:"Hive.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable Hive for debugging. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-genesisfilepath",children:(0,i.jsx)(n.code,{children:"Hive.GenesisFilePath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.GenesisFilePath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_GENESISFILEPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "GenesisFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the genesis block file. Defaults to ",(0,i.jsx)(n.code,{children:"/genesis.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"hive-keysdir",children:(0,i.jsx)(n.code,{children:"Hive.KeysDir"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Hive.KeysDir \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_KEYSDIR=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Hive": {\n "KeysDir": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,i.jsx)(n.code,{children:"/keys"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"init",children:"Init"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-autodump",children:(0,i.jsx)(n.code,{children:"Init.AutoDump"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.AutoDump \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_AUTODUMP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "AutoDump": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Auto-dump on bad blocks for diagnostics. ",(0,i.jsx)(n.code,{children:"Default"})," combines ",(0,i.jsx)(n.code,{children:"Receipts"})," and ",(0,i.jsx)(n.code,{children:"Rlp"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Receipts"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Parity"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Geth"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Rlp"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"RlpLog"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Default"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Default"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-badblocksstored",children:(0,i.jsx)(n.code,{children:"Init.BadBlocksStored"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.BadBlocksStored \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BADBLOCKSSTORED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "BadBlocksStored": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The maximum number of bad blocks observed on the network that will be stored on disk. Defaults to ",(0,i.jsx)(n.code,{children:"100"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-basedbpath",children:(0,i.jsx)(n.code,{children:"Init.BaseDbPath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.BaseDbPath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BASEDBPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "BaseDbPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The base path for all Nethermind databases. Defaults to ",(0,i.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-chainspecpath",children:(0,i.jsx)(n.code,{children:"Init.ChainSpecPath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.ChainSpecPath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_CHAINSPECPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "ChainSpecPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the chain spec file. Defaults to ",(0,i.jsx)(n.code,{children:"chainspec/foundation.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-diagnosticmode",children:(0,i.jsx)(n.code,{children:"Init.DiagnosticMode"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.DiagnosticMode \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DIAGNOSTICMODE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "DiagnosticMode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The diagnostic mode."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"MemDb"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"RpcDb"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ReadOnlyDb"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VerifyRewards"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VerifySupply"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VerifyTrie"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-discoveryenabled",children:(0,i.jsx)(n.code,{children:"Init.DiscoveryEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.DiscoveryEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DISCOVERYENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "DiscoveryEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the node discovery. If disabled, Nethermind doesn't look for other nodes beyond the bootnodes specified. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-enableunsecureddevwallet",children:(0,i.jsx)(n.code,{children:"Init.EnableUnsecuredDevWallet"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.EnableUnsecuredDevWallet \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ENABLEUNSECUREDDEVWALLET=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "EnableUnsecuredDevWallet": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the in-app wallet/keystore. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-genesishash",children:(0,i.jsx)(n.code,{children:"Init.GenesisHash"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.GenesisHash \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_GENESISHASH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "GenesisHash": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The hash of the genesis block. If not specified, the genesis block validity is not checked which is useful in the case of ad hoc test/private networks. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-hivechainspecpath",children:(0,i.jsx)(n.code,{children:"Init.HiveChainSpecPath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.HiveChainSpecPath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_HIVECHAINSPECPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "HiveChainSpecPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the chain spec file for Hive tests. Defaults to ",(0,i.jsx)(n.code,{children:"chainspec/test.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-ismining",children:(0,i.jsx)(n.code,{children:"Init.IsMining"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.IsMining \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ISMINING=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "IsMining": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to seal/mine new blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-keepdevwalletinmemory",children:(0,i.jsx)(n.code,{children:"Init.KeepDevWalletInMemory"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.KeepDevWalletInMemory \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KEEPDEVWALLETINMEMORY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "KeepDevWalletInMemory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to create session-only accounts and delete them on shutdown. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-kzgsetuppath",children:(0,i.jsx)(n.code,{children:"Init.KzgSetupPath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.KzgSetupPath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KZGSETUPPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "KzgSetupPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to KZG trusted setup file. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-logdirectory",children:(0,i.jsx)(n.code,{children:"Init.LogDirectory"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.LogDirectory \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGDIRECTORY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "LogDirectory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the Nethermind logs directory. Defaults to ",(0,i.jsx)(n.code,{children:"logs"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-logfilename",children:(0,i.jsx)(n.code,{children:"Init.LogFileName"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.LogFileName \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGFILENAME=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "LogFileName": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The name of the log file. Defaults to ",(0,i.jsx)(n.code,{children:"log.txt"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-logrules",children:(0,i.jsx)(n.code,{children:"Init.LogRules"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.LogRules \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGRULES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "LogRules": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The logs format as ",(0,i.jsx)(n.code,{children:"LogPath:LogLevel;*"})," Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-memoryhint",children:(0,i.jsx)(n.code,{children:"Init.MemoryHint"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.MemoryHint \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_MEMORYHINT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "MemoryHint": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The hint on the max memory limit, in bytes, to configure the database and networking memory allocations. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-peermanagerenabled",children:(0,i.jsx)(n.code,{children:"Init.PeerManagerEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.PeerManagerEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PEERMANAGERENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "PeerManagerEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to connect to newly discovered peers. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-processingenabled",children:(0,i.jsx)(n.code,{children:"Init.ProcessingEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.ProcessingEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PROCESSINGENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "ProcessingEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download/process new blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-rpcdburl",children:(0,i.jsx)(n.code,{children:"Init.RpcDbUrl"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.RpcDbUrl \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_RPCDBURL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "RpcDbUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of the remote node used as a database source when ",(0,i.jsx)(n.code,{children:"DiagnosticMode"})," is set to ",(0,i.jsx)(n.code,{children:"RpcDb"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-staticnodespath",children:(0,i.jsx)(n.code,{children:"Init.StaticNodesPath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.StaticNodesPath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_STATICNODESPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "StaticNodesPath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the static nodes file. Defaults to ",(0,i.jsx)(n.code,{children:"Data/static-nodes.json"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"init-websocketsenabled",children:(0,i.jsx)(n.code,{children:"Init.WebSocketsEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Init.WebSocketsEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_WEBSOCKETSENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Init": {\n "WebSocketsEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable WebSocket service for the default JSON-RPC port on startup. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"jsonrpc",children:"JsonRpc"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-additionalrpcurls",children:(0,i.jsx)(n.code,{children:"JsonRpc.AdditionalRpcUrls"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ADDITIONALRPCURLS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "AdditionalRpcUrls": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list. For instance, ",(0,i.jsx)(n.code,{children:"[http://localhost:8546|http;ws|eth;web3]"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-bufferresponses",children:(0,i.jsx)(n.code,{children:"JsonRpc.BufferResponses"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.BufferResponses \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_BUFFERRESPONSES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "BufferResponses": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to buffer responses before sending them. This allows using of ",(0,i.jsx)(n.code,{children:"Content-Length"})," instead of ",(0,i.jsx)(n.code,{children:"Transfer-Encoding: chunked"}),". Note that it may degrade performance on large responses. The max buffered response length is 2GB. Chunked responses can be larger. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-callsfilterfilepath",children:(0,i.jsx)(n.code,{children:"JsonRpc.CallsFilterFilePath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.CallsFilterFilePath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_CALLSFILTERFILEPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "CallsFilterFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to a file with the list of new-line-separated JSON-RPC calls. If specified, only the calls from that file are allowed. Defaults to ",(0,i.jsx)(n.code,{children:"Data/jsonrpc.filter"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-enabled",children:(0,i.jsx)(n.code,{children:"JsonRpc.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the JSON-RPC service. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-enabledmodules",children:(0,i.jsx)(n.code,{children:"JsonRpc.EnabledModules"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnabledModules \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLEDMODULES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EnabledModules": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of JSON-RPC namespaces to enable. For instance, ",(0,i.jsx)(n.code,{children:"[debug,eth]"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Built-in namespaces:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"admin"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"client"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"debug"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"engine"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"evm"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"health"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"net"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"parity"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"personal"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"proof"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"rpc"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"subscribe"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"trace"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"txpool"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"web3"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"[Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health,Rpc]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-engineenabledmodules",children:(0,i.jsx)(n.code,{children:"JsonRpc.EngineEnabledModules"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EngineEnabledModules \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EngineEnabledModules": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list for Engine API. Defaults to ",(0,i.jsx)(n.code,{children:"[Net,Eth,Subscribe,Web3]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-enginehost",children:(0,i.jsx)(n.code,{children:"JsonRpc.EngineHost"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EngineHost \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEHOST=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EngineHost": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Engine API host. Defaults to ",(0,i.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-engineport",children:(0,i.jsx)(n.code,{children:"JsonRpc.EnginePort"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEPORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EnginePort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Engine API port. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-estimateerrormargin",children:(0,i.jsx)(n.code,{children:"JsonRpc.EstimateErrorMargin"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EstimateErrorMargin \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ESTIMATEERRORMARGIN=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EstimateErrorMargin": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The error margin used in the ",(0,i.jsx)(n.code,{children:"eth_estimateGas"})," JSON-RPC method, in basis points. Defaults to ",(0,i.jsx)(n.code,{children:"150"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-ethmoduleconcurrentinstances",children:(0,i.jsx)(n.code,{children:"JsonRpc.EthModuleConcurrentInstances"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EthModuleConcurrentInstances \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ETHMODULECONCURRENTINSTANCES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "EthModuleConcurrentInstances": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The number of concurrent instances for non-sharable calls:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_call"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"This limits the load on the CPU and I/O to reasonable levels. If the limit is exceeded, HTTP 503 is returned along with the JSON-RPC error. Defaults to the number of logical processors."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-gascap",children:(0,i.jsx)(n.code,{children:"JsonRpc.GasCap"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.GasCap \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_GASCAP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "GasCap": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The gas limit for ",(0,i.jsx)(n.code,{children:"eth_call"})," and ",(0,i.jsx)(n.code,{children:"eth_estimateGas"}),". Defaults to ",(0,i.jsx)(n.code,{children:"100000000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-host",children:(0,i.jsx)(n.code,{children:"JsonRpc.Host"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Host \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_HOST=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Host": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The JSON-RPC service host. Defaults to ",(0,i.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-ipcunixdomainsocketpath",children:(0,i.jsx)(n.code,{children:"JsonRpc.IpcUnixDomainSocketPath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_IPCUNIXDOMAINSOCKETPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "IpcUnixDomainSocketPath": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The path to connect a UNIX domain socket over."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-jwtsecretfile",children:(0,i.jsx)(n.code,{children:"JsonRpc.JwtSecretFile"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "JwtSecretFile": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the JWT secret file required for the Engine API authentication. Defaults to ",(0,i.jsx)(n.code,{children:"keystore/jwt-secret"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxbatchresponsebodysize",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxBatchResponseBodySize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxBatchResponseBodySize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHRESPONSEBODYSIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxBatchResponseBodySize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max batch size limit for batched JSON-RPC calls. Defaults to ",(0,i.jsx)(n.code,{children:"33554432"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxbatchsize",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxBatchSize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxBatchSize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHSIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxBatchSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of JSON-RPC requests in a batch. Defaults to ",(0,i.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxloggedrequestparameterscharacters",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxLoggedRequestParametersCharacters"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxLoggedRequestParametersCharacters \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGGEDREQUESTPARAMETERSCHARACTERS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxLoggedRequestParametersCharacters": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of characters of a JSON-RPC request parameter printing to the log. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxlogsperresponse",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxLogsPerResponse"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxLogsPerResponse \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGSPERRESPONSE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxLogsPerResponse": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of logs per response for the ",(0,i.jsx)(n.code,{children:"eth_getLogs"})," JSON-RPC method. ",(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxrequestbodysize",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxRequestBodySize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxRequestBodySize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXREQUESTBODYSIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxRequestBodySize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max length of HTTP request body, in bytes. Defaults to ",(0,i.jsx)(n.code,{children:"30000000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-maxsimulateblockscap",children:(0,i.jsx)(n.code,{children:"JsonRpc.MaxSimulateBlocksCap"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MaxSimulateBlocksCap \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXSIMULATEBLOCKSCAP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MaxSimulateBlocksCap": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max block count limit for the ",(0,i.jsx)(n.code,{children:"eth_simulate"})," JSON-RPC method. Defaults to ",(0,i.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-methodsloggingfiltering",children:(0,i.jsx)(n.code,{children:"JsonRpc.MethodsLoggingFiltering"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.MethodsLoggingFiltering \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_METHODSLOGGINGFILTERING=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "MethodsLoggingFiltering": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of the method names not to log. Defaults to ",(0,i.jsx)(n.code,{children:"[engine_newPayloadV1,engine_newPayloadV2,engine_newPayloadV3,engine_forkchoiceUpdatedV1,engine_forkchoiceUpdatedV2]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-port",children:(0,i.jsx)(n.code,{children:"JsonRpc.Port"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_PORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Port": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The JSON-RPC service HTTP port. Defaults to ",(0,i.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-reportintervalseconds",children:(0,i.jsx)(n.code,{children:"JsonRpc.ReportIntervalSeconds"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.ReportIntervalSeconds \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REPORTINTERVALSECONDS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "ReportIntervalSeconds": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The interval, in seconds, between the JSON-RPC stats report log. Defaults to ",(0,i.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-requestqueuelimit",children:(0,i.jsx)(n.code,{children:"JsonRpc.RequestQueueLimit"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.RequestQueueLimit \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REQUESTQUEUELIMIT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "RequestQueueLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The max number of concurrent requests in the queue for:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_call"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"500"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-rpcrecorderbasefilepath",children:(0,i.jsx)(n.code,{children:"JsonRpc.RpcRecorderBaseFilePath"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.RpcRecorderBaseFilePath \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERBASEFILEPATH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "RpcRecorderBaseFilePath": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the base file for diagnostic recording. Defaults to ",(0,i.jsx)(n.code,{children:"logs/rpc.{counter}.txt"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-rpcrecorderstate",children:(0,i.jsx)(n.code,{children:"JsonRpc.RpcRecorderState"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.RpcRecorderState \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERSTATE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "RpcRecorderState": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The diagnostic recording mode."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Request"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Response"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-timeout",children:(0,i.jsx)(n.code,{children:"JsonRpc.Timeout"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Timeout \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_TIMEOUT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "Timeout": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The request timeout, in milliseconds. Defaults to ",(0,i.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"jsonrpc-websocketsport",children:(0,i.jsx)(n.code,{children:"JsonRpc.WebSocketsPort"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_WEBSOCKETSPORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "JsonRpc": {\n "WebSocketsPort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The JSON-RPC service WebSockets port. Defaults to ",(0,i.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"keystore",children:"KeyStore"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-blockauthoraccount",children:(0,i.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.BlockAuthorAccount \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_BLOCKAUTHORACCOUNT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "BlockAuthorAccount": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"An account to use as the block author (coinbase)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-cipher",children:(0,i.jsx)(n.code,{children:"KeyStore.Cipher"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.Cipher \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_CIPHER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "Cipher": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"aes-128-ctr"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-enodeaccount",children:(0,i.jsx)(n.code,{children:"KeyStore.EnodeAccount"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.EnodeAccount \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEACCOUNT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "EnodeAccount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An account to use for networking (enode). If neither this nor the ",(0,i.jsx)(n.code,{children:"EnodeKeyFile"})," option is specified, the key is autogenerated in ",(0,i.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-enodekeyfile",children:(0,i.jsx)(n.code,{children:"KeyStore.EnodeKeyFile"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.EnodeKeyFile \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEKEYFILE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "EnodeKeyFile": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the key file to use by for networking (enode). If neither this nor the ",(0,i.jsx)(n.code,{children:"EnodeAccount"})," is specified, the key is autogenerated in ",(0,i.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-ivsize",children:(0,i.jsx)(n.code,{children:"KeyStore.IVSize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.IVSize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_IVSIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "IVSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdf",children:(0,i.jsx)(n.code,{children:"KeyStore.Kdf"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.Kdf \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDF=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "Kdf": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"scrypt"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsdklen",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsDklen"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsDklen \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSDKLEN=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsDklen": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsn",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsN"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsN \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSN=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsN": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"262144"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsp",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsP"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsP \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsP": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamsr",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsR"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsR \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSR=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsR": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-kdfparamssaltlen",children:(0,i.jsx)(n.code,{children:"KeyStore.KdfparamsSaltLen"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KdfparamsSaltLen \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSSALTLEN=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KdfparamsSaltLen": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-keystoredirectory",children:(0,i.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KeyStoreDirectory \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREDIRECTORY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KeyStoreDirectory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,i.jsx)(n.code,{children:"keystore"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-keystoreencoding",children:(0,i.jsx)(n.code,{children:"KeyStore.KeyStoreEncoding"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.KeyStoreEncoding \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREENCODING=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "KeyStoreEncoding": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"UTF-8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-passwordfiles",children:(0,i.jsx)(n.code,{children:"KeyStore.PasswordFiles"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.PasswordFiles \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDFILES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "PasswordFiles": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of password files paths used to unlock the accounts set with ",(0,i.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-passwords",children:(0,i.jsx)(n.code,{children:"KeyStore.Passwords"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.Passwords \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "Passwords": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of passwords used to unlock the accounts set with ",(0,i.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-symmetricencrypterblocksize",children:(0,i.jsx)(n.code,{children:"KeyStore.SymmetricEncrypterBlockSize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterBlockSize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERBLOCKSIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "SymmetricEncrypterBlockSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-symmetricencrypterkeysize",children:(0,i.jsx)(n.code,{children:"KeyStore.SymmetricEncrypterKeySize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterKeySize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERKEYSIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "SymmetricEncrypterKeySize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,i.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-testnodekey",children:(0,i.jsx)(n.code,{children:"KeyStore.TestNodeKey"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.TestNodeKey \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_TESTNODEKEY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "TestNodeKey": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"A plaintext private key to use for testing purposes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"keystore-unlockaccounts",children:(0,i.jsx)(n.code,{children:"KeyStore.UnlockAccounts"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--KeyStore.UnlockAccounts \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_UNLOCKACCOUNTS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "KeyStore": {\n "UnlockAccounts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["An array of accounts to unlock on startup using passwords either in ",(0,i.jsx)(n.code,{children:"PasswordFiles"})," and ",(0,i.jsx)(n.code,{children:"Passwords"}),". Defaults to ",(0,i.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"merge",children:"Merge"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-builderrelayurl",children:(0,i.jsx)(n.code,{children:"Merge.BuilderRelayUrl"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.BuilderRelayUrl \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_BUILDERRELAYURL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "BuilderRelayUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of a builder relay. If specified, blocks are sent to the relay. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-collectionsperdecommit",children:(0,i.jsx)(n.code,{children:"Merge.CollectionsPerDecommit"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.CollectionsPerDecommit \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COLLECTIONSPERDECOMMIT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "CollectionsPerDecommit": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Request the garbage collector (GC) to release the process memory."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"-1"})," to disable"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"0"})," to release every time"]}),"\n",(0,i.jsx)(n.li,{children:"A positive number to release memory after that many Engine API calls"}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"25"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-compactmemory",children:(0,i.jsx)(n.code,{children:"Merge.CompactMemory"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.CompactMemory \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COMPACTMEMORY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "CompactMemory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The memory compaction mode. When set to ",(0,i.jsx)(n.code,{children:"Full"}),", compacts the large object heap (LOH) if ",(0,i.jsx)(n.code,{children:"SweepMemory"})," is set to ",(0,i.jsx)(n.code,{children:"Gen2"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"No"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Yes"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Full"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Yes"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-enabled",children:(0,i.jsx)(n.code,{children:"Merge.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the Merge hard fork. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-finaltotaldifficulty",children:(0,i.jsx)(n.code,{children:"Merge.FinalTotalDifficulty"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.FinalTotalDifficulty \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_FINALTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "FinalTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The total difficulty of the last PoW block. Must be greater than or equal to the terminal total difficulty (TTD). Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-prioritizeblocklatency",children:(0,i.jsx)(n.code,{children:"Merge.PrioritizeBlockLatency"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.PrioritizeBlockLatency \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_PRIORITIZEBLOCKLATENCY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "PrioritizeBlockLatency": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to reduce block latency by disabling garbage collection during Engine API calls. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-sweepmemory",children:(0,i.jsx)(n.code,{children:"Merge.SweepMemory"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.SweepMemory \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_SWEEPMEMORY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "SweepMemory": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The garbage collection (GC) mode between Engine API calls."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"NoGC"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Gen0"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Gen1"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Gen2"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Gen1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-terminalblockhash",children:(0,i.jsx)(n.code,{children:"Merge.TerminalBlockHash"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.TerminalBlockHash \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKHASH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "TerminalBlockHash": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The terminal PoW block hash used for the transition. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-terminalblocknumber",children:(0,i.jsx)(n.code,{children:"Merge.TerminalBlockNumber"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.TerminalBlockNumber \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKNUMBER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "TerminalBlockNumber": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The terminal PoW block number used for the transition."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"merge-terminaltotaldifficulty",children:(0,i.jsx)(n.code,{children:"Merge.TerminalTotalDifficulty"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Merge.TerminalTotalDifficulty \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Merge": {\n "TerminalTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The terminal total difficulty (TTD) used for the transition. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"metrics",children:"Metrics"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-countersenabled",children:(0,i.jsx)(n.code,{children:"Metrics.CountersEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.CountersEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_COUNTERSENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "CountersEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to publish metrics using .NET diagnostics that can be collected with dotnet-counters. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-enabled",children:(0,i.jsx)(n.code,{children:"Metrics.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to publish various metrics to Prometheus Pushgateway at a given interval. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-enabledbsizemetrics",children:(0,i.jsx)(n.code,{children:"Metrics.EnableDbSizeMetrics"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.EnableDbSizeMetrics \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLEDBSIZEMETRICS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "EnableDbSizeMetrics": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to publish database size metrics. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-exposehost",children:(0,i.jsx)(n.code,{children:"Metrics.ExposeHost"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.ExposeHost \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEHOST=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "ExposeHost": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The IP address to expose Prometheus metrics at. The value of ",(0,i.jsx)(n.code,{children:"+"})," means listening on all available hostnames. Setting this to ",(0,i.jsx)(n.code,{children:"localhost"})," prevents remote access. Defaults to ",(0,i.jsx)(n.code,{children:"+"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-exposeport",children:(0,i.jsx)(n.code,{children:"Metrics.ExposePort"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.ExposePort \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEPORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "ExposePort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The port to expose Prometheus metrics at. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-intervalseconds",children:(0,i.jsx)(n.code,{children:"Metrics.IntervalSeconds"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.IntervalSeconds \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_INTERVALSECONDS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "IntervalSeconds": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The frequency of pushing metrics to Prometheus, in seconds. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-nodename",children:(0,i.jsx)(n.code,{children:"Metrics.NodeName"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.NodeName \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_NODENAME=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "NodeName": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The name to display on the Grafana dashboard. Defaults to ",(0,i.jsx)(n.code,{children:'"Nethermind"'}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"metrics-pushgatewayurl",children:(0,i.jsx)(n.code,{children:"Metrics.PushGatewayUrl"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Metrics.PushGatewayUrl \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_PUSHGATEWAYURL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Metrics": {\n "PushGatewayUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The Prometheus Pushgateway instance URL."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"mining",children:"Mining"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mining-enabled",children:(0,i.jsx)(n.code,{children:"Mining.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Mining.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Mining": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to produce blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mining-signer",children:(0,i.jsx)(n.code,{children:"Mining.Signer"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Mining.Signer \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_SIGNER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Mining": {\n "Signer": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of an external signer like ",(0,i.jsx)(n.a,{href:"https://github.com/ethereum/go-ethereum/blob/master/cmd/clef/tutorial.md",children:"Clef"}),". Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"network",children:"Network"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-bootnodes",children:(0,i.jsx)(n.code,{children:"Network.Bootnodes"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.Bootnodes \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_BOOTNODES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "Bootnodes": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"A comma-separated enode list to be used as boot nodes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-diagtracerenabled",children:(0,i.jsx)(n.code,{children:"Network.DiagTracerEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.DiagTracerEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DIAGTRACERENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "DiagTracerEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable a verbose diagnostic tracing. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-discoverydns",children:(0,i.jsx)(n.code,{children:"Network.DiscoveryDns"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryDns \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYDNS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "DiscoveryDns": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Use tree is available through a DNS name. For the default of ",(0,i.jsx)(n.code,{children:".ethdisco.net"}),", leave unspecified. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-discoveryport",children:(0,i.jsx)(n.code,{children:"Network.DiscoveryPort"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYPORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "DiscoveryPort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The UDP port number for incoming discovery connections. It's recommended to keep it the same as the TCP port (",(0,i.jsx)(n.code,{children:"P2PPort"}),") because other values have not been tested yet. Defaults to ",(0,i.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-enableupnp",children:(0,i.jsx)(n.code,{children:"Network.EnableUPnP"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.EnableUPnP \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ENABLEUPNP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "EnableUPnP": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable automatic port forwarding via UPnP. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-externalip",children:(0,i.jsx)(n.code,{children:"Network.ExternalIp"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.ExternalIp \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_EXTERNALIP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "ExternalIp": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The external IP. Use only when the external IP cannot be resolved automatically. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-localip",children:(0,i.jsx)(n.code,{children:"Network.LocalIp"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.LocalIp \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_LOCALIP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "LocalIp": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The local IP. Use only when the local IP cannot be resolved automatically. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-maxactivepeers",children:(0,i.jsx)(n.code,{children:"Network.MaxActivePeers"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.MaxActivePeers \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "MaxActivePeers": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max allowed number of connected peers. Defaults to ",(0,i.jsx)(n.code,{children:"50"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-maxnettyarenacount",children:(0,i.jsx)(n.code,{children:"Network.MaxNettyArenaCount"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.MaxNettyArenaCount \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXNETTYARENACOUNT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "MaxNettyArenaCount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The maximum DotNetty arena count. Increasing this on a high-core CPU without increasing the memory budget may reduce chunk size so much that it causes a huge memory allocation. Defaults to ",(0,i.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-nettyarenaorder",children:(0,i.jsx)(n.code,{children:"Network.NettyArenaOrder"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.NettyArenaOrder \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_NETTYARENAORDER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "NettyArenaOrder": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The size of the DotNetty arena order. ",(0,i.jsx)(n.code,{children:"-1"})," to depend on the memory hint. Defaults to ",(0,i.jsx)(n.code,{children:"-1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-onlystaticpeers",children:(0,i.jsx)(n.code,{children:"Network.OnlyStaticPeers"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.OnlyStaticPeers \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ONLYSTATICPEERS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "OnlyStaticPeers": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use static peers only. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-p2pport",children:(0,i.jsx)(n.code,{children:"Network.P2PPort"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_P2PPORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "P2PPort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The TCP port for incoming P2P connections. Defaults to ",(0,i.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-prioritypeersmaxcount",children:(0,i.jsx)(n.code,{children:"Network.PriorityPeersMaxCount"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.PriorityPeersMaxCount \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_PRIORITYPEERSMAXCOUNT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "PriorityPeersMaxCount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of priority peers. Can be overridden by a plugin. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"network-staticpeers",children:(0,i.jsx)(n.code,{children:"Network.StaticPeers"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Network.StaticPeers \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_STATICPEERS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Network": {\n "StaticPeers": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["A list of peers to keep connection for. Static peers are affected by ",(0,i.jsx)(n.code,{children:"MaxActivePeers"}),". Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"optimism",children:"Optimism"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"optimism-sequencerurl",children:(0,i.jsx)(n.code,{children:"Optimism.SequencerUrl"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Optimism.SequencerUrl \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_OPTIMISMCONFIG_SEQUENCERURL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Optimism": {\n "SequencerUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The sequencer address. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"pruning",children:"Pruning"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-availablespacecheckenabled",children:(0,i.jsx)(n.code,{children:"Pruning.AvailableSpaceCheckEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.AvailableSpaceCheckEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_AVAILABLESPACECHECKENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "AvailableSpaceCheckEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enables available disk space check. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-cachemb",children:(0,i.jsx)(n.code,{children:"Pruning.CacheMb"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.CacheMb \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_CACHEMB=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "CacheMb": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The in-memory cache size, in MB. The bigger the cache size, the bigger the disk space savings. Defaults to ",(0,i.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningcompletionbehavior",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningCompletionBehavior \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGCOMPLETIONBEHAVIOR=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningCompletionBehavior": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The behavior after pruning completion:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"None"}),": Do nothing."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Shut Nethermind down if pruning has succeeded but leave it running if failed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"AlwaysShutdown"}),": Shut Nethermind down when pruning completes, regardless of its status."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ShutdownOnSuccess"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AlwaysShutdown"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningdisablelowprioritywrites",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningDisableLowPriorityWrites"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningDisableLowPriorityWrites \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGDISABLELOWPRIORITYWRITES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningDisableLowPriorityWrites": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to disable low-priority for pruning writes. Full pruning uses low-priority write operations to prevent blocking block processing. If block processing is not high-priority, set this option to ",(0,i.jsx)(n.code,{children:"true"})," for faster pruning. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningmaxdegreeofparallelism",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningMaxDegreeOfParallelism \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMAXDEGREEOFPARALLELISM=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningMaxDegreeOfParallelism": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The max number of parallel tasks that can be used by full pruning:"}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"-1"})," to use the number of logical processors"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"0"})," to use 25% of logical processors"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"1"})," to run on single thread"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"The recommended value depends on the type of the node:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the node needs to be responsive (serves for RPC or validator), then the recommended value is ",(0,i.jsx)(n.code,{children:"0"})," or ",(0,i.jsx)(n.code,{children:"-1"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["If the node doesn't have many other responsibilities but needs to be able to follow the chain reliably without any delays and produce live logs, the ",(0,i.jsx)(n.code,{children:"0"})," or ",(0,i.jsx)(n.code,{children:"1"})," is recommended."]}),"\n",(0,i.jsxs)(n.li,{children:["If the node doesn't have to be responsive, has very fast I/O (like NVMe) and the shortest pruning time is to be achieved, then ",(0,i.jsx)(n.code,{children:"-1"})," is recommended. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningmemorybudgetmb",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningMemoryBudgetMb \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMEMORYBUDGETMB=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningMemoryBudgetMb": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The memory budget, in MB, used for the trie visit. Increasing this value significantly reduces the IOPS requirement at the expense of memory usage. ",(0,i.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,i.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningminimumdelayhours",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningMinimumDelayHours"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningMinimumDelayHours \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMINIMUMDELAYHOURS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningMinimumDelayHours": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The minimum delay, in hours, between full pruning operations not to exhaust disk writes. Defaults to ",(0,i.jsx)(n.code,{children:"240"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningthresholdmb",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningThresholdMb \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTHRESHOLDMB=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningThresholdMb": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The threshold, in MB, to trigger full pruning. Depends on ",(0,i.jsx)(n.code,{children:"Mode"})," and ",(0,i.jsx)(n.code,{children:"FullPruningTrigger"}),". Defaults to ",(0,i.jsx)(n.code,{children:"256000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-fullpruningtrigger",children:(0,i.jsx)(n.code,{children:"Pruning.FullPruningTrigger"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.FullPruningTrigger \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTRIGGER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "FullPruningTrigger": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The full pruning trigger:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Manual"}),": Triggered manually."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"StateDbSize"}),": Trigger when the state DB size is above the threshold."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"VolumeFreeSpace"}),": Trigger when the free disk space where the state DB is stored is below the threshold."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Manual"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"StateDbSize"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VolumeFreeSpace"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Manual"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-mode",children:(0,i.jsx)(n.code,{children:"Pruning.Mode"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.Mode \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_MODE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "Mode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The pruning mode:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"None"}),": No pruning (full archive)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Memory"}),": In-memory pruning"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Full"}),": Full pruning"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Hybrid"}),": Combined in-memory and full pruning"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Memory"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Full"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Hybrid"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Hybrid"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-persistenceinterval",children:(0,i.jsx)(n.code,{children:"Pruning.PersistenceInterval"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.PersistenceInterval \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PERSISTENCEINTERVAL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "PersistenceInterval": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The block persistence frequency. If set to ",(0,i.jsx)(n.code,{children:"N"}),", it caches after each ",(0,i.jsx)(n.code,{children:"Nth"})," block even if not required by cache memory usage. Defaults to ",(0,i.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-pruningboundary",children:(0,i.jsx)(n.code,{children:"Pruning.PruningBoundary"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.PruningBoundary \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PRUNINGBOUNDARY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "PruningBoundary": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of past states before the state gets pruned. Used to determine how old of a state to keep from the head. Defaults to ",(0,i.jsx)(n.code,{children:"64"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning-trackedpastkeycountmemoryratio",children:(0,i.jsx)(n.code,{children:"Pruning.TrackedPastKeyCountMemoryRatio"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Pruning.TrackedPastKeyCountMemoryRatio \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_TRACKEDPASTKEYCOUNTMEMORYRATIO=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Pruning": {\n "TrackedPastKeyCountMemoryRatio": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The ratio of memory out of ",(0,i.jsx)(n.code,{children:"Pruning.CacheMb"})," to allocate for the LRU cache, used to track past keys for live pruning. Defaults to ",(0,i.jsx)(n.code,{children:"0.1"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"receipt",children:"Receipt"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-compactreceiptstore",children:(0,i.jsx)(n.code,{children:"Receipt.CompactReceiptStore"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.CompactReceiptStore \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTRECEIPTSTORE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "CompactReceiptStore": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to compact receipts database size at the expense of RPC performance. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-compacttxindex",children:(0,i.jsx)(n.code,{children:"Receipt.CompactTxIndex"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.CompactTxIndex \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTTXINDEX=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "CompactTxIndex": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to compact receipts transaction index database size at the expense of RPC performance. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-receiptsmigration",children:(0,i.jsx)(n.code,{children:"Receipt.ReceiptsMigration"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.ReceiptsMigration \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_RECEIPTSMIGRATION=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "ReceiptsMigration": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to migrate the receipts database to the new schema. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-storereceipts",children:(0,i.jsx)(n.code,{children:"Receipt.StoreReceipts"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.StoreReceipts \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_STORERECEIPTS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "StoreReceipts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to store receipts after a new block is processed. This setting is independent from downloading receipts in fast sync mode. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"receipt-txlookuplimit",children:(0,i.jsx)(n.code,{children:"Receipt.TxLookupLimit"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Receipt.TxLookupLimit \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_TXLOOKUPLIMIT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Receipt": {\n "TxLookupLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of recent blocks to maintain transaction index for. ",(0,i.jsx)(n.code,{children:"0"})," to never remove indices, ",(0,i.jsx)(n.code,{children:"-1"})," to never index. Defaults to ",(0,i.jsx)(n.code,{children:"2350000"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"seq",children:"Seq"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"seq-apikey",children:(0,i.jsx)(n.code,{children:"Seq.ApiKey"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Seq.ApiKey \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_APIKEY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Seq": {\n "ApiKey": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The Seq API key."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"seq-minlevel",children:(0,i.jsx)(n.code,{children:"Seq.MinLevel"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Seq.MinLevel \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_MINLEVEL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Seq": {\n "MinLevel": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The min log level to sent to Seq. Defaults to ",(0,i.jsx)(n.code,{children:"Off"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"seq-serverurl",children:(0,i.jsx)(n.code,{children:"Seq.ServerUrl"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Seq.ServerUrl \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_SERVERURL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Seq": {\n "ServerUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The Seq instance URL. Defaults to ",(0,i.jsx)(n.code,{children:"http://localhost:5341"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"shutter",children:"Shutter"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-bootnodep2paddresses",children:(0,i.jsx)(n.code,{children:"Shutter.BootnodeP2PAddresses"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.BootnodeP2PAddresses \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_BOOTNODEP2PADDRESSES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "BootnodeP2PAddresses": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The p2p addresses of the Shutter Keyper network bootnodes.\nDefaults to:"}),"\n",(0,i.jsx)(n.p,{children:"/ip4/139.59.130.109/tcp/23003/p2p/12D3KooWRZoofMsnpsjkgvfPQUyGXZQnn7EVnb4tw4ghNfwMnnsj,\n/ip4/167.71.169.248/tcp/23003/p2p/12D3KooWGH3VxoSQXZ6wUuCmsv5caGQnhwfGejbkXH6uS2r7sehA,\n/ip4/139.59.130.109/tcp/23003/p2p/12D3KooWNxTiw7CvD1fuyye5P8qPhKTTrRBW6wwZwMdqdTxjYF2H,\n/ip4/178.128.192.239/tcp/23003/p2p/12D3KooWCdpkipTiuzVMfkV7yLLgqbFeAL8WmEP78hCoBGBYLugN,\n/ip4/45.55.192.248/tcp/23003/p2p/12D3KooWMPuubKqksfMxvLwEBDScaopTdvPLr5J5SMmBEo2zkcMz,\n/ip4/178.128.126.237/tcp/23003/p2p/12D3KooWAg1pGUDAfFWSZftpN3JjBfLUCGLQcZApJHv2VntdMS9U"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-enabled",children:(0,i.jsx)(n.code,{children:"Shutter.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable Shutter. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-instanceid",children:(0,i.jsx)(n.code,{children:"Shutter.InstanceID"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.InstanceID \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_INSTANCEID=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "InstanceID": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Instance ID of Shutter keyper set. Defaults to ",(0,i.jsx)(n.code,{children:"1000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-keybroadcastcontractaddress",children:(0,i.jsx)(n.code,{children:"Shutter.KeyBroadcastContractAddress"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.KeyBroadcastContractAddress \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_KEYBROADCASTCONTRACTADDRESS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "KeyBroadcastContractAddress": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The address of the Shutter key broadcast contract. Defaults to ",(0,i.jsx)(n.code,{children:"0x626dB87f9a9aC47070016A50e802dd5974341301"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-keypersetmanagercontractaddress",children:(0,i.jsx)(n.code,{children:"Shutter.KeyperSetManagerContractAddress"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.KeyperSetManagerContractAddress \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_KEYPERSETMANAGERCONTRACTADDRESS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "KeyperSetManagerContractAddress": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The address of the Shutter keyper set manager contract. Defaults to ",(0,i.jsx)(n.code,{children:"0x7C2337f9bFce19d8970661DA50dE8DD7d3D34abb"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-p2pport",children:(0,i.jsx)(n.code,{children:"Shutter.P2PPort"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.P2PPort \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_P2PPORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "P2PPort": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The port to connect to Shutter P2P network with. Defaults to ",(0,i.jsx)(n.code,{children:"23102"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-sequencercontractaddress",children:(0,i.jsx)(n.code,{children:"Shutter.SequencerContractAddress"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.SequencerContractAddress \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_SEQUENCERCONTRACTADDRESS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "SequencerContractAddress": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The address of the Shutter sequencer contract. Defaults to ",(0,i.jsx)(n.code,{children:"0xc5C4b277277A1A8401E0F039dfC49151bA64DC2E"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-validatorinfofile",children:(0,i.jsx)(n.code,{children:"Shutter.ValidatorInfoFile"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.ValidatorInfoFile \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_VALIDATORINFOFILE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "ValidatorInfoFile": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The filepath of the validator info json file. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter-validatorregistrycontractaddress",children:(0,i.jsx)(n.code,{children:"Shutter.ValidatorRegistryContractAddress"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Shutter.ValidatorRegistryContractAddress \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SHUTTERCONFIG_VALIDATORREGISTRYCONTRACTADDRESS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Shutter": {\n "ValidatorRegistryContractAddress": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The address of the Shutter validator registry contract. Defaults to ",(0,i.jsx)(n.code,{children:"0xefCC23E71f6bA9B22C4D28F7588141d44496A6D6"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"snapshot",children:"Snapshot"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-checksum",children:(0,i.jsx)(n.code,{children:"Snapshot.Checksum"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.Checksum \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_CHECKSUM=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "Checksum": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The SHA-256 checksum of the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-downloadurl",children:(0,i.jsx)(n.code,{children:"Snapshot.DownloadUrl"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.DownloadUrl \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_DOWNLOADURL=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "DownloadUrl": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The URL of the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-enabled",children:(0,i.jsx)(n.code,{children:"Snapshot.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the Snapshot plugin. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-snapshotdirectory",children:(0,i.jsx)(n.code,{children:"Snapshot.SnapshotDirectory"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.SnapshotDirectory \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTDIRECTORY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "SnapshotDirectory": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The path to the directory to store the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"snapshot"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot-snapshotfilename",children:(0,i.jsx)(n.code,{children:"Snapshot.SnapshotFileName"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Snapshot.SnapshotFileName \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTFILENAME=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Snapshot": {\n "SnapshotFileName": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The name of the snapshot file. Defaults to ",(0,i.jsx)(n.code,{children:"snapshot.zip"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"sync",children:"Sync"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-ancientbodiesbarrier",children:(0,i.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.AncientBodiesBarrier \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "AncientBodiesBarrier": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The earliest body downloaded with fast sync when ",(0,i.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, AncientBodiesBarrier } }\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-ancientreceiptsbarrier",children:(0,i.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.AncientReceiptsBarrier \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "AncientReceiptsBarrier": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The earliest receipt downloaded with fast sync when ",(0,i.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," is set to ",(0,i.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, max{ AncientBodiesBarrier, AncientReceiptsBarrier } } }\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-blocksdbtunedbmode",children:(0,i.jsx)(n.code,{children:"Sync.BlocksDbTuneDbMode"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.BlocksDbTuneDbMode \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_BLOCKSDBTUNEDBMODE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "BlocksDbTuneDbMode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Configure the blocks database for write optimizations during sync."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Default"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"EnableBlobFiles"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-downloadbodiesinfastsync",children:(0,i.jsx)(n.code,{children:"Sync.DownloadBodiesInFastSync"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNC=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "DownloadBodiesInFastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download the block bodies in the Fast sync mode. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-downloadheadersinfastsync",children:(0,i.jsx)(n.code,{children:"Sync.DownloadHeadersInFastSync"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.DownloadHeadersInFastSync \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADHEADERSINFASTSYNC=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "DownloadHeadersInFastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download the old block headers in the Fast sync mode. If ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind downloads only recent blocks headers. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-downloadreceiptsinfastsync",children:(0,i.jsx)(n.code,{children:"Sync.DownloadReceiptsInFastSync"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.DownloadReceiptsInFastSync \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNC=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "DownloadReceiptsInFastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download receipts in the Fast sync mode. This slows down the process by a few hours but allows to interact with dApps that perform extensive historical logs searches. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-exitonsynced",children:(0,i.jsx)(n.code,{children:"Sync.ExitOnSynced"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.ExitOnSynced \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "ExitOnSynced": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to shut down Nethermind once sync is finished. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-exitonsyncedwaittimesec",children:(0,i.jsx)(n.code,{children:"Sync.ExitOnSyncedWaitTimeSec"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.ExitOnSyncedWaitTimeSec \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCEDWAITTIMESEC=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "ExitOnSyncedWaitTimeSec": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The time, in seconds, to wait before shutting down Nethermind once sync is finished. Defaults to ",(0,i.jsx)(n.code,{children:"60"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fastsync",children:(0,i.jsx)(n.code,{children:"Sync.FastSync"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FastSync \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNC=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FastSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use the Fast sync mode (the eth/63 synchronization algorithm). Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fastsynccatchupheightdelta",children:(0,i.jsx)(n.code,{children:"Sync.FastSyncCatchUpHeightDelta"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FastSyncCatchUpHeightDelta \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNCCATCHUPHEIGHTDELTA=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FastSyncCatchUpHeightDelta": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["In Fast sync mode, the min height threshold limit up to which the Full sync, if already on, stays on when the chain is behind the network head. If the limit is exceeded, it switches back to Fast sync. For regular usage scenarios, setting this value lower than 32 is not recommended as this can cause issues with chain reorgs. Note that the last 2 blocks are always processed in Full sync, so setting it lower than 2 has no effect. Defaults to ",(0,i.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixreceipts",children:(0,i.jsx)(n.code,{children:"Sync.FixReceipts"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixReceipts \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXRECEIPTS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixReceipts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable receipts validation that checks for receipts that might be missing because of a bug. If needed, receipts are downloaded from the network. If ",(0,i.jsx)(n.code,{children:"true"}),", the pivot number must be same one used originally as it's used as a cut-off point. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixtotaldifficulty",children:(0,i.jsx)(n.code,{children:"Sync.FixTotalDifficulty"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixTotalDifficulty \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to recalculate the total difficulty from ",(0,i.jsx)(n.code,{children:"FixTotalDifficultyStartingBlock"})," to ",(0,i.jsx)(n.code,{children:"FixTotalDifficultyLastBlock"}),". Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixtotaldifficultylastblock",children:(0,i.jsx)(n.code,{children:"Sync.FixTotalDifficultyLastBlock"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixTotalDifficultyLastBlock \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYLASTBLOCK=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixTotalDifficultyLastBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The last block to recalculate the total difficulty for. If not specified, the best known block is used.\nDefaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-fixtotaldifficultystartingblock",children:(0,i.jsx)(n.code,{children:"Sync.FixTotalDifficultyStartingBlock"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.FixTotalDifficultyStartingBlock \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYSTARTINGBLOCK=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "FixTotalDifficultyStartingBlock": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The first block to recalculate the total difficulty for. Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-maxattemptstoupdatepivot",children:(0,i.jsx)(n.code,{children:"Sync.MaxAttemptsToUpdatePivot"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.MaxAttemptsToUpdatePivot \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXATTEMPTSTOUPDATEPIVOT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "MaxAttemptsToUpdatePivot": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of attempts to update the pivot block based on the FCU message from the consensus client. Defaults to ",(0,i.jsx)(n.code,{children:"2147483647"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-maxprocessingthreads",children:(0,i.jsx)(n.code,{children:"Sync.MaxProcessingThreads"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.MaxProcessingThreads \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXPROCESSINGTHREADS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "MaxProcessingThreads": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of threads used for syncing. ",(0,i.jsx)(n.code,{children:"0"})," to use the number of logical processors. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-networkingenabled",children:(0,i.jsx)(n.code,{children:"Sync.NetworkingEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.NetworkingEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NETWORKINGENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "NetworkingEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to connect to peers and sync. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-nonvalidatornode",children:(0,i.jsx)(n.code,{children:"Sync.NonValidatorNode"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.NonValidatorNode \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NONVALIDATORNODE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "NonValidatorNode": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to operate as a non-validator. If ",(0,i.jsx)(n.code,{children:"true"}),", the ",(0,i.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," and ",(0,i.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," can be set to ",(0,i.jsx)(n.code,{children:"false"}),". Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-pivothash",children:(0,i.jsx)(n.code,{children:"Sync.PivotHash"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.PivotHash \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTHASH=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "PivotHash": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The hash of the pivot block for the Fast sync mode. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-pivotnumber",children:(0,i.jsx)(n.code,{children:"Sync.PivotNumber"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.PivotNumber \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTNUMBER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "PivotNumber": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of the pivot block for the Fast sync mode. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-pivottotaldifficulty",children:(0,i.jsx)(n.code,{children:"Sync.PivotTotalDifficulty"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.PivotTotalDifficulty \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTY=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "PivotTotalDifficulty": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The total difficulty of the pivot block for the Fast sync mode. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-snapsync",children:(0,i.jsx)(n.code,{children:"Sync.SnapSync"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.SnapSync \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNC=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "SnapSync": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use the Snap sync mode. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-snapsyncaccountrangepartitioncount",children:(0,i.jsx)(n.code,{children:"Sync.SnapSyncAccountRangePartitionCount"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.SnapSyncAccountRangePartitionCount \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNCACCOUNTRANGEPARTITIONCOUNT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "SnapSyncAccountRangePartitionCount": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of account range partitions to create. Increases the Snap sync request concurrency. Allowed values are between between 1 and 256. Defaults to ",(0,i.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-strictmode",children:(0,i.jsx)(n.code,{children:"Sync.StrictMode"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.StrictMode \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_STRICTMODE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "StrictMode": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to disable some optimizations and do a more extensive sync. Useful when sync state is corrupted. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-synchronizationenabled",children:(0,i.jsx)(n.code,{children:"Sync.SynchronizationEnabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.SynchronizationEnabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SYNCHRONIZATIONENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "SynchronizationEnabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to download and process new blocks. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-tunedbmode",children:(0,i.jsx)(n.code,{children:"Sync.TuneDbMode"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.TuneDbMode \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_TUNEDBMODE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "TuneDbMode": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Configure the database for write optimizations during sync. Significantly reduces the total number of writes and sync time if you are not network limited."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Default"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"HeavyWrite"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync-usegethlimitsinfastblocks",children:(0,i.jsx)(n.code,{children:"Sync.UseGethLimitsInFastBlocks"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Sync.UseGethLimitsInFastBlocks \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Sync": {\n "UseGethLimitsInFastBlocks": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to make smaller requests, in Fast Blocks mode, to avoid Geth from disconnecting. On the Geth-heavy networks (e.g., Mainnet), it's a desired behavior while on Nethermind- or OpenEthereum-heavy networks (Aura), it slows down the sync by a factor of ~4. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"tracestore",children:"TraceStore"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-blockstokeep",children:(0,i.jsx)(n.code,{children:"TraceStore.BlocksToKeep"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.BlocksToKeep \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_BLOCKSTOKEEP=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "BlocksToKeep": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of blocks to store, counting from the head. If ",(0,i.jsx)(n.code,{children:"0"}),", all traces of the processed blocks are stored. Defaults to ",(0,i.jsx)(n.code,{children:"10000"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-deserializationparallelization",children:(0,i.jsx)(n.code,{children:"TraceStore.DeserializationParallelization"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.DeserializationParallelization \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_DESERIALIZATIONPARALLELIZATION=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "DeserializationParallelization": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max parallelization when deserialization requests the ",(0,i.jsx)(n.code,{children:"trace_filter"})," method. ",(0,i.jsx)(n.code,{children:"0"})," to use the number of logical processors. If you experience a resource shortage, set to a low number. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-enabled",children:(0,i.jsx)(n.code,{children:"TraceStore.Enabled"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.Enabled \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_ENABLED=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "Enabled": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["Whether to enable the TraceStore plugin. If enabled, traces come from the database whenever possible. Allowed values: ",(0,i.jsx)(n.code,{children:"true"})," ",(0,i.jsx)(n.code,{children:"false"}),". Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tracestore-tracetypes",children:(0,i.jsx)(n.code,{children:"TraceStore.TraceTypes"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TraceStore.TraceTypes \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_TRACETYPES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TraceStore": {\n "TraceTypes": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"The type of traces to store."}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"None"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"VmTrace"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"StateDiff"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Trace"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Rewards"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"Trace, Rewards"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"txpool",children:"TxPool"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-blobcachesize",children:(0,i.jsx)(n.code,{children:"TxPool.BlobCacheSize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.BlobCacheSize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBCACHESIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "BlobCacheSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of full blob transactions cached in memory. The default value uses max 200MB for 6 blobs where one blob is 33MB (256 * 128KB) Defaults to ",(0,i.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-blobssupport",children:(0,i.jsx)(n.code,{children:"TxPool.BlobsSupport"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.BlobsSupport \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBSSUPPORT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "BlobsSupport": \n }\n}\n'})})})]}),"\n",(0,i.jsx)(n.p,{children:"Blobs support mode:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Disabled"}),": No support for blob transactions"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"InMemory"}),": Blob transactions stored only in memory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"Storage"}),": Blob transactions stored in db"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"StorageWithReorgs"}),": Blob transactions stored in db with support for restoring reorganized blob transactions to blob pool"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Disabled"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"InMemory"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"Storage"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"StorageWithReorgs"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Defaults to ",(0,i.jsx)(n.code,{children:"StorageWithReorgs"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-gaslimit",children:(0,i.jsx)(n.code,{children:"TxPool.GasLimit"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.GasLimit \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_GASLIMIT=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "GasLimit": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max transaction gas allowed. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-hashcachesize",children:(0,i.jsx)(n.code,{children:"TxPool.HashCacheSize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.HashCacheSize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_HASHCACHESIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "HashCacheSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of cached hashes of already known transactions. Set automatically by the memory hint. Defaults to ",(0,i.jsx)(n.code,{children:"524288"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-inmemoryblobpoolsize",children:(0,i.jsx)(n.code,{children:"TxPool.InMemoryBlobPoolSize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.InMemoryBlobPoolSize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_INMEMORYBLOBPOOLSIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "InMemoryBlobPoolSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of full blob transactions stored in memory. Used only if persistent storage is disabled. Defaults to ",(0,i.jsx)(n.code,{children:"512"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-maxpendingblobtxspersender",children:(0,i.jsx)(n.code,{children:"TxPool.MaxPendingBlobTxsPerSender"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.MaxPendingBlobTxsPerSender \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGBLOBTXSPERSENDER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "MaxPendingBlobTxsPerSender": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of pending blob transactions per single sender. ",(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-maxpendingtxspersender",children:(0,i.jsx)(n.code,{children:"TxPool.MaxPendingTxsPerSender"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.MaxPendingTxsPerSender \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGTXSPERSENDER=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "MaxPendingTxsPerSender": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of pending transactions per single sender. ",(0,i.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-minbasefeethreshold",children:(0,i.jsx)(n.code,{children:"TxPool.MinBaseFeeThreshold"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.MinBaseFeeThreshold \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MINBASEFEETHRESHOLD=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "MinBaseFeeThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The minimal percentage of the current base fee that must be surpassed by the max fee (",(0,i.jsx)(n.code,{children:"max_fee_per_gas"}),") for the transaction to be broadcasted. Defaults to ",(0,i.jsx)(n.code,{children:"70"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-peernotificationthreshold",children:(0,i.jsx)(n.code,{children:"TxPool.PeerNotificationThreshold"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.PeerNotificationThreshold \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PEERNOTIFICATIONTHRESHOLD=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "PeerNotificationThreshold": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The average percentage of transaction hashes from persistent broadcast sent to a peer together with hashes of the last added transactions. Defaults to ",(0,i.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-persistentblobstoragesize",children:(0,i.jsx)(n.code,{children:"TxPool.PersistentBlobStorageSize"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.PersistentBlobStorageSize \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PERSISTENTBLOBSTORAGESIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "PersistentBlobStorageSize": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of full blob transactions stored in the database (increasing the number of transactions in the blob pool also results in higher memory usage). The default value uses max 13GB for 6 blobs where one blob is 2GB (16386 * 128KB). Defaults to ",(0,i.jsx)(n.code,{children:"16384"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-reportminutes",children:(0,i.jsx)(n.code,{children:"TxPool.ReportMinutes"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.ReportMinutes \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_REPORTMINUTES=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "ReportMinutes": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The current transaction pool state reporting interval, in minutes. Defaults to ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"txpool-size",children:(0,i.jsx)(n.code,{children:"TxPool.Size"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--TxPool.Size \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_SIZE=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "TxPool": {\n "Size": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The max number of transactions held in the mempool (the more transactions in the mempool, the more memory used). Defaults to ",(0,i.jsx)(n.code,{children:"2048"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"wallet",children:"Wallet"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"wallet-devaccounts",children:(0,i.jsx)(n.code,{children:"Wallet.DevAccounts"})}),"\n",(0,i.jsxs)(r.A,{groupId:"usage",children:[(0,i.jsx)(c.A,{value:"cli",label:"CLI",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"--Wallet.DevAccounts \n"})})}),(0,i.jsx)(c.A,{value:"env",label:"Environment variable",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"NETHERMIND_WALLETCONFIG_DEVACCOUNTS=\n"})})}),(0,i.jsx)(c.A,{value:"config",label:"Configuration file",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Wallet": {\n "DevAccounts": \n }\n}\n'})})})]}),"\n",(0,i.jsxs)(n.p,{children:["The number of autogenerated developer accounts to work with. Developer accounts have private keys from ",(0,i.jsx)(n.code,{children:"00...01"})," to ",(0,i.jsx)(n.code,{children:"00...n"}),". Defaults to ",(0,i.jsx)(n.code,{children:"10"}),"."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"environment-variables",children:"Environment variables"}),"\n",(0,i.jsx)(n.p,{children:"To configure Nethermind using environment variables, the following naming convention is used in all uppercase:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-text",children:"NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}\n"})}),"\n",(0,i.jsxs)(n.p,{children:["For instance, the environment variable equivalent of the command line ",(0,i.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile"})," option is ",(0,i.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"}),". For the list of configuration namespaces and their options, see ",(0,i.jsx)(n.a,{href:"#options-by-namespaces",children:"Options by namespaces"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"configuration-file",children:"Configuration file"}),"\n",(0,i.jsxs)(n.p,{children:["The configuration file is a JSON file with ",(0,i.jsx)(n.code,{children:".cfg"})," extension. The bundled configuration files are located in the ",(0,i.jsx)(n.code,{children:"configs"})," directory and named after the network they are used for. For instance, see the Mainnet configuration file ",(0,i.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:(0,i.jsx)(n.code,{children:"mainnet.cfg"})}),"."]})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}},9365:(e,n,l)=>{l.d(n,{A:()=>c});l(6540);var i=l(4164);const s={tabItem:"tabItem_Ymn6"};var r=l(4848);function c(e){let{children:n,hidden:l,className:c}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(s.tabItem,c),hidden:l,children:n})}},1470:(e,n,l)=>{l.d(n,{A:()=>I});var i=l(6540),s=l(4164),r=l(3104),c=l(6347),d=l(205),a=l(7485),o=l(1682),h=l(679);function t(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:l}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:l,attributes:i,default:s}}=e;return{value:n,label:l,attributes:i,default:s}}))}(l);return function(e){const n=(0,o.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,l])}function u(e){let{value:n,tabValues:l}=e;return l.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:l}=e;const s=(0,c.W6)(),r=function(e){let{queryString:n=!1,groupId:l}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!l)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return l??null}({queryString:n,groupId:l});return[(0,a.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(s.location.search);n.set(r,e),s.replace({...s.location,search:n.toString()})}),[r,s])]}function v(e){const{defaultValue:n,queryString:l=!1,groupId:s}=e,r=x(e),[c,a]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:l}=e;if(0===l.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!u({value:n,tabValues:l}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${l.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=l.find((e=>e.default))??l[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[o,t]=j({queryString:l,groupId:s}),[v,p]=function(e){let{groupId:n}=e;const l=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,r]=(0,h.Dv)(l);return[s,(0,i.useCallback)((e=>{l&&r.set(e)}),[l,r])]}({groupId:s}),g=(()=>{const e=o??v;return u({value:e,tabValues:r})?e:null})();(0,d.A)((()=>{g&&a(g)}),[g]);return{selectedValue:c,selectValue:(0,i.useCallback)((e=>{if(!u({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);a(e),t(e),p(e)}),[t,p,r]),tabValues:r}}var p=l(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=l(4848);function f(e){let{className:n,block:l,selectedValue:i,selectValue:c,tabValues:d}=e;const a=[],{blockElementScrollPositionUntilNextRender:o}=(0,r.a_)(),h=e=>{const n=e.currentTarget,l=a.indexOf(n),s=d[l].value;s!==i&&(o(n),c(s))},t=e=>{let n=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{const l=a.indexOf(e.currentTarget)+1;n=a[l]??a[0];break}case"ArrowLeft":{const l=a.indexOf(e.currentTarget)-1;n=a[l]??a[a.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":l},n),children:d.map((e=>{let{value:n,label:l,attributes:r}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>a.push(e),onKeyDown:t,onClick:h,...r,className:(0,s.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":i===n}),children:l??n},n)}))})}function E(e){let{lazy:n,children:l,selectedValue:r}=e;const c=(Array.isArray(l)?l:[l]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function m(e){const n=v(e);return(0,b.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(E,{...n,...e})]})}function I(e){const n=(0,p.A)();return(0,b.jsx)(m,{...e,children:t(e.children)},String(n))}},8453:(e,n,l)=>{l.d(n,{R:()=>c,x:()=>d});var i=l(6540);const s={},r=i.createContext(s);function c(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e6fa02bb.a4d967d4.js b/assets/js/e6fa02bb.5457db9b.js similarity index 99% rename from assets/js/e6fa02bb.a4d967d4.js rename to assets/js/e6fa02bb.5457db9b.js index e73954188..acdb06598 100644 --- a/assets/js/e6fa02bb.a4d967d4.js +++ b/assets/js/e6fa02bb.5457db9b.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3967],{707:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var r=s(4848),t=s(8453),i=s(1470),l=s(9365);const d={title:"Database",sidebar_position:5},c=void 0,a={id:"fundamentals/database",title:"Database",description:"Nethermind uses the RocksDB database to store the state. By default, the database is located in the",source:"@site/versioned_docs/version-1.29.0/fundamentals/database.md",sourceDirName:"fundamentals",slug:"/fundamentals/database",permalink:"/fundamentals/database",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/database.md",tags:[],version:"1.29.0",lastUpdatedAt:1728683983e3,sidebarPosition:5,frontMatter:{title:"Database",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Logs",permalink:"/fundamentals/logs"},next:{title:"Pruning",permalink:"/fundamentals/pruning"}},o={},h=[{value:"Database directory structure",id:"database-directory-structure",level:2},{value:"Database size",id:"database-size",level:2},{value:"Reducing database size",id:"reducing-database-size",level:2}];function u(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Nethermind uses the ",(0,r.jsx)(n.a,{href:"https://rocksdb.org",children:"RocksDB"})," database to store the state. By default, the database is located in the\nsame directory where the Nethermind executable is. You can change the database location using the ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#basedbpath",children:(0,r.jsx)(n.code,{children:"-d, --baseDbPath"})})," command line option."]}),"\n",(0,r.jsx)(n.h2,{id:"database-directory-structure",children:"Database directory structure"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Directory"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blockInfos"}),(0,r.jsx)(n.td,{children:"Information about blocks at each level of the block tree (canonical chain and branches)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blocks"}),(0,r.jsx)(n.td,{children:"Block bodies (block transactions and uncles)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"bloom"}),(0,r.jsx)(n.td,{children:"Bloom indices for fast log searches"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"canonicalHashTrie"}),(0,r.jsx)(n.td,{children:"LES protocol related data"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"code"}),(0,r.jsx)(n.td,{children:"Contract bytecodes"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"discoveryNodes"}),(0,r.jsx)(n.td,{children:"Peers discovered via discovery protocol - used for quick peering after restarts (you can copy this DB between nodes to speed up peering)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"headers"}),(0,r.jsx)(n.td,{children:"Block headers only"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"pendingTx"}),(0,r.jsx)(n.td,{children:"The second level cache of pending transactions/mempool (the first level is in memory). Wiped out on each restart."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"peers"}),(0,r.jsx)(n.td,{children:"Additional sync peers information (like peer reputation) - you can copy this DB between nodes to speed up peering on fresh sync"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"receipts"}),(0,r.jsx)(n.td,{children:"Transaction receipts"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"state"}),(0,r.jsx)(n.td,{children:"Blockchain state including accounts and contract storage (Patricia trie nodes)"})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:["You can use ",(0,r.jsx)(n.code,{children:"rsync"})," between your nodes to clone the database (One of our users copied the entire 4.5TB archive state this\nway while the node was running and only stopped the node for the very last stage of ",(0,r.jsx)(n.code,{children:"rsync"})," ). You can also copy\nthe database between Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h2,{id:"database-size",children:"Database size"}),"\n",(0,r.jsx)(n.p,{children:"Below is a comprehensive list of the supported chains, along with a detailed breakdown of their respective database directories. For reference, the database sizes listed have been determined using the standard configurations provided."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(l.A,{value:"mainnet",label:"Mainnet",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 158 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 209 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 595 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 6.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 8.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 4.7 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.7 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 985 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"sepolia",label:"Sepolia",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 42 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 39 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 293 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 2.1 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 6.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.3 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 386 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"holesky",label:"Holesky",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 18 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 14 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 55 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 738 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 967 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 506 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 737 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 90 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"gnosis",label:"Gnosis",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 66 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 216 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 199 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.2 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 11 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 668 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 75 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 503 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"chiado",label:"Chiado",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 2.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 1.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 9.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 3.1 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 67 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 656 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 20 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"energyweb",label:"Energyweb",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 27 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 4.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 25 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 7.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 14 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 75 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"volta",label:"Volta",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 34 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 8.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 33 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 6.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 95 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 93 GB"})}),"\n"]})})]}),"\n",(0,r.jsx)(n.h2,{id:"reducing-database-size",children:"Reducing database size"}),"\n",(0,r.jsx)(n.p,{children:"The Nethermind database can experience substantial growth over time, starting from an initial size of approximately 650\nGB. As a result, many node setups are configured to run on 1 TB disks. However, even with settings\ndesigned to slow the growth rate, these disks may eventually run out of free space."}),"\n",(0,r.jsx)(n.p,{children:"The current options to reduce the database size are as follows:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/fundamentals/sync#resync-a-node-from-scratch",children:"Resyncing database from scratch"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/fundamentals/pruning",children:"Pruning"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The table below presents a short comparison of these methods including possible fine-tuning of each method. Data was\nfetched from a node running on a machine with the below specifications:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Node.js"}),": v1.18.0"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Consensus client"}),": Lighthouse"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"CPU"}),": AMD EPYC 7713 (16 cores allocated for the VM)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"RAM"}),": 64 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk size"}),": 1.2 TB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk IOPS"}),": 70,000 to 80,000"]}),"\n"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Metric"}),(0,r.jsx)(n.th,{children:"Resync"}),(0,r.jsx)(n.th,{children:"Pruning"}),(0,r.jsx)(n.th,{children:"Pruning and memory budget (4 GB)"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Execution time"})}),(0,r.jsx)(n.td,{children:"~4h"}),(0,r.jsx)(n.td,{children:"~24h"}),(0,r.jsx)(n.td,{children:"~12h"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Minimum free disk space"})}),(0,r.jsx)(n.td,{children:"N/A. You can execute resync even if there is 0 free space (avoid such a case)."}),(0,r.jsx)(n.td,{children:"250 GB"}),(0,r.jsx)(n.td,{children:"250 GB"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Attestation rate drop"})}),(0,r.jsx)(n.td,{children:"100%. No attestation rewards during that time or highly reduced."}),(0,r.jsx)(n.td,{children:"5\u201310% during that time"}),(0,r.jsx)(n.td,{children:"N/A"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Average block processing time of new blocks during the process"})}),(0,r.jsx)(n.td,{children:"N/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s."}),(0,r.jsx)(n.td,{children:"0.7s"}),(0,r.jsx)(n.td,{children:"1.0s"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Is the node online during the process?"})}),(0,r.jsx)(n.td,{children:"No, unless the state is synced."}),(0,r.jsx)(n.td,{children:"Yes. The node follows the chain, and all modules are still enabled."}),(0,r.jsx)(n.td,{children:"Yes. The node follows chain and all modules are still enabled."})]})]})]}),"\n",(0,r.jsx)(n.p,{children:"The command used for testing disk IOPS was as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw\n"})})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(4164);const t={tabItem:"tabItem_Ymn6"};var i=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),t=s(4164),i=s(3104),l=s(6347),d=s(205),c=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:t}}=e;return{value:n,label:s,attributes:r,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(t.location.search);n.set(i,e),t.replace({...t.location,search:n.toString()})}),[i,t])]}function b(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,i=u(e),[l,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[a,h]=j({queryString:s,groupId:t}),[b,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,i]=(0,o.Dv)(s);return[t,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:t}),f=(()=>{const e=a??b;return x({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{f&&c(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!x({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),p(e)}),[h,p,i]),tabValues:i}}var p=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=s(4848);function g(e){let{className:n,block:s,selectedValue:r,selectValue:l,tabValues:d}=e;const c=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),t=d[s].value;t!==r&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,m.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:h,onClick:o,...i,className:(0,t.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function B(e){const n=b(e);return(0,m.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,m.jsx)(g,{...n,...e}),(0,m.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,m.jsx)(B,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var r=s(6540);const t={},i=r.createContext(t);function l(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3967],{707:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>h});var r=s(4848),t=s(8453),i=s(1470),l=s(9365);const d={title:"Database",sidebar_position:5},c=void 0,a={id:"fundamentals/database",title:"Database",description:"Nethermind uses the RocksDB database to store the state. By default, the database is located in the",source:"@site/versioned_docs/version-1.29.0/fundamentals/database.md",sourceDirName:"fundamentals",slug:"/fundamentals/database",permalink:"/fundamentals/database",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.29.0/fundamentals/database.md",tags:[],version:"1.29.0",lastUpdatedAt:1728684487e3,sidebarPosition:5,frontMatter:{title:"Database",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Logs",permalink:"/fundamentals/logs"},next:{title:"Pruning",permalink:"/fundamentals/pruning"}},o={},h=[{value:"Database directory structure",id:"database-directory-structure",level:2},{value:"Database size",id:"database-size",level:2},{value:"Reducing database size",id:"reducing-database-size",level:2}];function u(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Nethermind uses the ",(0,r.jsx)(n.a,{href:"https://rocksdb.org",children:"RocksDB"})," database to store the state. By default, the database is located in the\nsame directory where the Nethermind executable is. You can change the database location using the ",(0,r.jsx)(n.a,{href:"/fundamentals/configuration#basedbpath",children:(0,r.jsx)(n.code,{children:"-d, --baseDbPath"})})," command line option."]}),"\n",(0,r.jsx)(n.h2,{id:"database-directory-structure",children:"Database directory structure"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Directory"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blockInfos"}),(0,r.jsx)(n.td,{children:"Information about blocks at each level of the block tree (canonical chain and branches)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"blocks"}),(0,r.jsx)(n.td,{children:"Block bodies (block transactions and uncles)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"bloom"}),(0,r.jsx)(n.td,{children:"Bloom indices for fast log searches"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"canonicalHashTrie"}),(0,r.jsx)(n.td,{children:"LES protocol related data"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"code"}),(0,r.jsx)(n.td,{children:"Contract bytecodes"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"discoveryNodes"}),(0,r.jsx)(n.td,{children:"Peers discovered via discovery protocol - used for quick peering after restarts (you can copy this DB between nodes to speed up peering)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"headers"}),(0,r.jsx)(n.td,{children:"Block headers only"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"pendingTx"}),(0,r.jsx)(n.td,{children:"The second level cache of pending transactions/mempool (the first level is in memory). Wiped out on each restart."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"peers"}),(0,r.jsx)(n.td,{children:"Additional sync peers information (like peer reputation) - you can copy this DB between nodes to speed up peering on fresh sync"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"receipts"}),(0,r.jsx)(n.td,{children:"Transaction receipts"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"state"}),(0,r.jsx)(n.td,{children:"Blockchain state including accounts and contract storage (Patricia trie nodes)"})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:["You can use ",(0,r.jsx)(n.code,{children:"rsync"})," between your nodes to clone the database (One of our users copied the entire 4.5TB archive state this\nway while the node was running and only stopped the node for the very last stage of ",(0,r.jsx)(n.code,{children:"rsync"})," ). You can also copy\nthe database between Linux, Windows, and macOS."]}),"\n",(0,r.jsx)(n.h2,{id:"database-size",children:"Database size"}),"\n",(0,r.jsx)(n.p,{children:"Below is a comprehensive list of the supported chains, along with a detailed breakdown of their respective database directories. For reference, the database sizes listed have been determined using the standard configurations provided."}),"\n",(0,r.jsxs)(i.A,{children:[(0,r.jsx)(l.A,{value:"mainnet",label:"Mainnet",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 158 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 209 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 595 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 6.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 8.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 4.7 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.7 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 985 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"sepolia",label:"Sepolia",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 42 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 39 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 293 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 2.1 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 6.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 1.3 GB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 386 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"holesky",label:"Holesky",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 18 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 14 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 55 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 738 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 967 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 506 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 737 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 90 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"gnosis",label:"Gnosis",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 66 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 216 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 199 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.2 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 11 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 668 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 75 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 503 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"chiado",label:"Chiado",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 2.6 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 1.4 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 9.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 3.1 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 2.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 67 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),": 656 MB"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 20 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"energyweb",label:"Energyweb",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 27 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 4.5 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 25 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.8 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 7.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 14 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 75 GB"})}),"\n"]})}),(0,r.jsx)(l.A,{value:"volta",label:"Volta",children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"state"}),": 34 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"receipts"}),": 8.3 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blocks"}),": 33 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bloom"}),": 9.0 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headers"}),": 6.9 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": 95 MB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobTransactions"}),":"]}),"\n",(0,r.jsx)(n.li,{children:"..."}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Total: 93 GB"})}),"\n"]})})]}),"\n",(0,r.jsx)(n.h2,{id:"reducing-database-size",children:"Reducing database size"}),"\n",(0,r.jsx)(n.p,{children:"The Nethermind database can experience substantial growth over time, starting from an initial size of approximately 650\nGB. As a result, many node setups are configured to run on 1 TB disks. However, even with settings\ndesigned to slow the growth rate, these disks may eventually run out of free space."}),"\n",(0,r.jsx)(n.p,{children:"The current options to reduce the database size are as follows:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/fundamentals/sync#resync-a-node-from-scratch",children:"Resyncing database from scratch"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/fundamentals/pruning",children:"Pruning"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The table below presents a short comparison of these methods including possible fine-tuning of each method. Data was\nfetched from a node running on a machine with the below specifications:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Node.js"}),": v1.18.0"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Consensus client"}),": Lighthouse"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"CPU"}),": AMD EPYC 7713 (16 cores allocated for the VM)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"RAM"}),": 64 GB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk size"}),": 1.2 TB"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disk IOPS"}),": 70,000 to 80,000"]}),"\n"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Metric"}),(0,r.jsx)(n.th,{children:"Resync"}),(0,r.jsx)(n.th,{children:"Pruning"}),(0,r.jsx)(n.th,{children:"Pruning and memory budget (4 GB)"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Execution time"})}),(0,r.jsx)(n.td,{children:"~4h"}),(0,r.jsx)(n.td,{children:"~24h"}),(0,r.jsx)(n.td,{children:"~12h"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Minimum free disk space"})}),(0,r.jsx)(n.td,{children:"N/A. You can execute resync even if there is 0 free space (avoid such a case)."}),(0,r.jsx)(n.td,{children:"250 GB"}),(0,r.jsx)(n.td,{children:"250 GB"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Attestation rate drop"})}),(0,r.jsx)(n.td,{children:"100%. No attestation rewards during that time or highly reduced."}),(0,r.jsx)(n.td,{children:"5\u201310% during that time"}),(0,r.jsx)(n.td,{children:"N/A"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Average block processing time of new blocks during the process"})}),(0,r.jsx)(n.td,{children:"N/A. New blocks are processed after state but are significantly slower until old bodies/receipts are downloaded. Afterward, average about 0.35s."}),(0,r.jsx)(n.td,{children:"0.7s"}),(0,r.jsx)(n.td,{children:"1.0s"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Is the node online during the process?"})}),(0,r.jsx)(n.td,{children:"No, unless the state is synced."}),(0,r.jsx)(n.td,{children:"Yes. The node follows the chain, and all modules are still enabled."}),(0,r.jsx)(n.td,{children:"Yes. The node follows chain and all modules are still enabled."})]})]})]}),"\n",(0,r.jsx)(n.p,{children:"The command used for testing disk IOPS was as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw\n"})})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(4164);const t={tabItem:"tabItem_Ymn6"};var i=s(4848);function l(e){let{children:n,hidden:s,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(t.tabItem,l),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>y});var r=s(6540),t=s(4164),i=s(3104),l=s(6347),d=s(205),c=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:t}}=e;return{value:n,label:s,attributes:r,default:t}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const t=(0,l.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(t.location.search);n.set(i,e),t.replace({...t.location,search:n.toString()})}),[i,t])]}function b(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,i=u(e),[l,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[a,h]=j({queryString:s,groupId:t}),[b,p]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,i]=(0,o.Dv)(s);return[t,(0,r.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:t}),f=(()=>{const e=a??b;return x({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{f&&c(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!x({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),p(e)}),[h,p,i]),tabValues:i}}var p=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=s(4848);function g(e){let{className:n,block:s,selectedValue:r,selectValue:l,tabValues:d}=e;const c=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),o=e=>{const n=e.currentTarget,s=c.indexOf(n),t=d[s].value;t!==r&&(a(n),l(t))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,m.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:h,onClick:o,...i,className:(0,t.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function B(e){const n=b(e);return(0,m.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,m.jsx)(g,{...n,...e}),(0,m.jsx)(v,{...n,...e})]})}function y(e){const n=(0,p.A)();return(0,m.jsx)(B,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var r=s(6540);const t={},i=r.createContext(t);function l(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e75a3f40.36db8e7b.js b/assets/js/e75a3f40.0acadd91.js similarity index 97% rename from assets/js/e75a3f40.36db8e7b.js rename to assets/js/e75a3f40.0acadd91.js index 1a0c4ac8e..ba19af7be 100644 --- a/assets/js/e75a3f40.36db8e7b.js +++ b/assets/js/e75a3f40.0acadd91.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6786],{3580:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=t(4848),r=t(8453);const o={title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},a=void 0,s={id:"get-started/intro",title:"Introduction and overview",description:"Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.",source:"@site/versioned_docs/version-1.27.0/get-started/intro.md",sourceDirName:"get-started",slug:"/",permalink:"/1.27.0/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/get-started/intro.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},sidebar:"tutorialSidebar",next:{title:"System requirements",permalink:"/1.27.0/get-started/system-requirements"}},d={},c=[];function u(e){const n={a:"a",p:"p",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Nethermind is a high-performance, highly configurable Ethereum execution client built on ",(0,i.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/",children:".NET"})," that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with ",(0,i.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,i.jsx)(n.a,{href:"https://datalust.co/seq",children:"Seq"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators."}),"\n",(0,i.jsx)(n.p,{children:"Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding."}),"\n",(0,i.jsx)(n.p,{children:"We hope you find this documentation helpful and welcome your feedback and suggestions!"})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var i=t(6540);const r={},o=i.createContext(r);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6786],{3580:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=t(4848),r=t(8453);const o={title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},a=void 0,s={id:"get-started/intro",title:"Introduction and overview",description:"Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.",source:"@site/versioned_docs/version-1.27.0/get-started/intro.md",sourceDirName:"get-started",slug:"/",permalink:"/1.27.0/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/get-started/intro.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},sidebar:"tutorialSidebar",next:{title:"System requirements",permalink:"/1.27.0/get-started/system-requirements"}},d={},c=[];function u(e){const n={a:"a",p:"p",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Nethermind is a high-performance, highly configurable Ethereum execution client built on ",(0,i.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/",children:".NET"})," that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with ",(0,i.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,i.jsx)(n.a,{href:"https://datalust.co/seq",children:"Seq"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators."}),"\n",(0,i.jsx)(n.p,{children:"Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding."}),"\n",(0,i.jsx)(n.p,{children:"We hope you find this documentation helpful and welcome your feedback and suggestions!"})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var i=t(6540);const r={},o=i.createContext(r);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e8237fc5.6f005620.js b/assets/js/e8237fc5.859c4199.js similarity index 98% rename from assets/js/e8237fc5.6f005620.js rename to assets/js/e8237fc5.859c4199.js index 4befa0ca9..d299ab7e7 100644 --- a/assets/js/e8237fc5.6f005620.js +++ b/assets/js/e8237fc5.859c4199.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7718],{1904:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>h});var r=t(4848),s=t(8453);const i={title:"Grafana and Prometheus",sidebar_position:0},o=void 0,a={id:"monitoring/metrics/grafana-and-prometheus",title:"Grafana and Prometheus",description:"This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.",source:"@site/versioned_docs/version-1.26.0/monitoring/metrics/grafana-and-prometheus.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/grafana-and-prometheus",permalink:"/1.26.0/monitoring/metrics/grafana-and-prometheus",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/monitoring/metrics/grafana-and-prometheus.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Grafana and Prometheus",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Metrics",permalink:"/1.26.0/monitoring/metrics/"},next:{title:"dotnet-counters",permalink:"/1.26.0/monitoring/metrics/dotnet-counters"}},c={},h=[{value:"Step 1: Set up Grafana and Prometheus",id:"step-1-set-up-grafana-and-prometheus",level:2},{value:"Step 2: Run the stack",id:"step-2-run-the-stack",level:2},{value:"Step 3: Run Nethermind",id:"step-3-run-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["This guide will walk you through setting up a local metrics infrastructure using ",(0,r.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,r.jsx)(n.a,{href:"https://prometheus.io",children:"Prometheus"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"step-1-set-up-grafana-and-prometheus",children:"Step 1: Set up Grafana and Prometheus"}),"\n",(0,r.jsxs)(n.p,{children:["To simplify the process, we will use the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/metrics-infrastructure",children:"metrics-infrastructure"})," repository, which contains the necessary configuration files to run Grafana and Prometheus in a Docker container. However, you can also set up Grafana and Prometheus manually the way it fits your specific needs."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/NethermindEth/metrics-infrastructure.git\n"})}),"\n",(0,r.jsx)(n.h2,{id:"step-2-run-the-stack",children:"Step 2: Run the stack"}),"\n",(0,r.jsx)(n.p,{children:"After cloning the repository, navigate to its root directory and run the containers using Docker Compose as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker-compose up\n"})}),"\n",(0,r.jsx)(n.p,{children:"Once the stack is running, you can access the following services:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Grafana"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:3000",children:"localhost:3000"}),(0,r.jsx)(n.br,{}),"\n","Use ",(0,r.jsx)(n.code,{children:"admin"})," for both the username and password. When asked for a password change, you may skip it. Then, navigate to Dashboards > Nethermind Dashboard."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Prometheus"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9090",children:"localhost:9090"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Pushgateway"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9091",children:"localhost:9091"}),(0,r.jsx)(n.br,{}),"\n","To specify another endpoint for the Pushgateway, use the ",(0,r.jsx)(n.code,{children:"--Metrics.PushGatewayUrl"})," command line option."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"step-3-run-nethermind",children:"Step 3: Run Nethermind"}),"\n",(0,r.jsxs)(n.p,{children:["To enable metrics in Nethermind, use the ",(0,r.jsx)(n.code,{children:"--Metrics.Enabled true"})," command line option. For more options, see the ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["A ",(0,r.jsx)(n.a,{href:"/1.26.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,r.jsx)(n.p,{children:"Run Nethermind as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.Enabled true\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Alternatively, you may add the ",(0,r.jsx)(n.code,{children:"nethermind"})," service to the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," file in the repository root to run everything altogether:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n command: -c mainnet --Metrics.Enabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.p,{children:"In this case, you may want to configure your consensus client similarly."})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(6540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7718],{1904:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>h});var r=t(4848),s=t(8453);const i={title:"Grafana and Prometheus",sidebar_position:0},o=void 0,a={id:"monitoring/metrics/grafana-and-prometheus",title:"Grafana and Prometheus",description:"This guide will walk you through setting up a local metrics infrastructure using Grafana and Prometheus.",source:"@site/versioned_docs/version-1.26.0/monitoring/metrics/grafana-and-prometheus.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/grafana-and-prometheus",permalink:"/1.26.0/monitoring/metrics/grafana-and-prometheus",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/monitoring/metrics/grafana-and-prometheus.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Grafana and Prometheus",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Metrics",permalink:"/1.26.0/monitoring/metrics/"},next:{title:"dotnet-counters",permalink:"/1.26.0/monitoring/metrics/dotnet-counters"}},c={},h=[{value:"Step 1: Set up Grafana and Prometheus",id:"step-1-set-up-grafana-and-prometheus",level:2},{value:"Step 2: Run the stack",id:"step-2-run-the-stack",level:2},{value:"Step 3: Run Nethermind",id:"step-3-run-nethermind",level:2}];function d(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["This guide will walk you through setting up a local metrics infrastructure using ",(0,r.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,r.jsx)(n.a,{href:"https://prometheus.io",children:"Prometheus"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"step-1-set-up-grafana-and-prometheus",children:"Step 1: Set up Grafana and Prometheus"}),"\n",(0,r.jsxs)(n.p,{children:["To simplify the process, we will use the ",(0,r.jsx)(n.a,{href:"https://github.com/NethermindEth/metrics-infrastructure",children:"metrics-infrastructure"})," repository, which contains the necessary configuration files to run Grafana and Prometheus in a Docker container. However, you can also set up Grafana and Prometheus manually the way it fits your specific needs."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/NethermindEth/metrics-infrastructure.git\n"})}),"\n",(0,r.jsx)(n.h2,{id:"step-2-run-the-stack",children:"Step 2: Run the stack"}),"\n",(0,r.jsx)(n.p,{children:"After cloning the repository, navigate to its root directory and run the containers using Docker Compose as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker-compose up\n"})}),"\n",(0,r.jsx)(n.p,{children:"Once the stack is running, you can access the following services:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Grafana"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:3000",children:"localhost:3000"}),(0,r.jsx)(n.br,{}),"\n","Use ",(0,r.jsx)(n.code,{children:"admin"})," for both the username and password. When asked for a password change, you may skip it. Then, navigate to Dashboards > Nethermind Dashboard."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Prometheus"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9090",children:"localhost:9090"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Pushgateway"}),": ",(0,r.jsx)(n.a,{href:"http://localhost:9091",children:"localhost:9091"}),(0,r.jsx)(n.br,{}),"\n","To specify another endpoint for the Pushgateway, use the ",(0,r.jsx)(n.code,{children:"--Metrics.PushGatewayUrl"})," command line option."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"step-3-run-nethermind",children:"Step 3: Run Nethermind"}),"\n",(0,r.jsxs)(n.p,{children:["To enable metrics in Nethermind, use the ",(0,r.jsx)(n.code,{children:"--Metrics.Enabled true"})," command line option. For more options, see the ",(0,r.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["A ",(0,r.jsx)(n.a,{href:"/1.26.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,r.jsx)(n.p,{children:"Run Nethermind as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.Enabled true\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Alternatively, you may add the ",(0,r.jsx)(n.code,{children:"nethermind"})," service to the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," file in the repository root to run everything altogether:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n command: -c mainnet --Metrics.Enabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.p,{children:"In this case, you may want to configure your consensus client similarly."})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(6540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e885279c.a91fcc8e.js b/assets/js/e885279c.856e623a.js similarity index 99% rename from assets/js/e885279c.a91fcc8e.js rename to assets/js/e885279c.856e623a.js index 7d83c6ad4..c280b41ae 100644 --- a/assets/js/e885279c.a91fcc8e.js +++ b/assets/js/e885279c.856e623a.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6728],{6825:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const o={title:"Aura-based validators",sidebar_position:0},s=void 0,a={id:"validators/aura",title:"Aura-based validators",description:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.",source:"@site/versioned_docs/version-1.26.0/validators/aura.md",sourceDirName:"validators",slug:"/validators/aura",permalink:"/1.26.0/validators/aura",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/validators/aura.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Aura-based validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Validators",permalink:"/1.26.0/validators/"},next:{title:"Building from source",permalink:"/1.26.0/developers/building-from-source"}},c={},d=[{value:"Configuring a Docker container",id:"configuring-a-docker-container",level:2},{value:"Configuring keyfile",id:"configuring-keyfile",level:2},{value:"Configuration settings",id:"configuration-settings",level:2},{value:"Running the validator",id:"running-the-validator",level:2}];function l(e){const n={admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Your machine's clock has to be synchronized. Otherwise, you might miss block sealing. By default, the block time is set to 5 seconds."})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-a-docker-container",children:"Configuring a Docker container"}),"\n",(0,r.jsx)(n.p,{children:"The example below shows how to configure a Docker container for an Aura-based validator on the Energy Web chain:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n nethermind-validator:\n image: nethermind/nethermind:latest\n container_name: nethermind-validator\n restart: unless-stopped\n ports:\n - 8545:8545\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n environment:\n - NETHERMIND_CONFIG=energyweb\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-keyfile",children:"Configuring keyfile"}),"\n",(0,r.jsxs)(n.p,{children:["Make sure that the keyfile name contains the public key (address). Otherwise, Nethermind doesn't recognize it as such.\nFor instance, a keyfile can be named ",(0,r.jsx)(n.code,{children:"key-0x1234567890123456789012345678901234567890"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The keyfile must be stored in the ",(0,r.jsx)(n.code,{children:"keystore"})," directory located in the Nethermind base data directory."]}),"\n",(0,r.jsx)(n.h2,{id:"configuration-settings",children:"Configuration settings"}),"\n",(0,r.jsx)(n.p,{children:"Here is an example of recommended settings for a validator. The most convenient way to configure these settings is either defining them in the configuration file or passing them as environment variables."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.IsMining"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.MemoryHint"}),": Can be left unspecified. It's recommended to configure it accordingly to the machine specification(for Eneergy Web, 768000000 is enough)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"EthStats"})," namespace parameters if you want to report node status to Ethstats for your network."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Metrics"})," namespace parameters to enable node monitoring."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.PasswordFiles"}),": The path to the file containing the password for the mining private key."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.UnlockAccounts"}),": An array of accounts. Provide the miner public address here."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"}),": The miner public address should be provided here as well."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Aura.ForceSealing"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Merge.Enabled"}),": ",(0,r.jsx)(n.code,{children:"false"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Here's an example of above settings in the Energy Web configuration file:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",metastring:'title="energyweb.cfg"',children:'{\n "Init": {\n "ChainSpecPath": "chainspec/energyweb.json",\n "GenesisHash": "0x0b6d3e680af2fc525392c720666cce58e3d8e6fe75ba4b48cb36bcc69039229b",\n "BaseDbPath": "nethermind_db/energyweb",\n "LogFileName": "energyweb.log",\n "MemoryHint": 768000000\n },\n "Sync": {\n "FastSync": true,\n "PivotNumber": 26940000,\n "PivotHash": "0x8835983de9578a4355313afd2a43d8eada6f2a4ddbd9c51da103e0d5f53c4d8b",\n "PivotTotalDifficulty": "9167206964850082205703311924211835616257898274",\n "FastBlocks": true,\n "UseGethLimitsInFastBlocks": false,\n "FastSyncCatchUpHeightDelta": 10000000000\n },\n "EthStats": {\n "Enabled": true,\n "Name": "Nethermind Energy Web",\n "Secret": "secret...",\n "Url": "ws://localhost:3000/api"\n },\n "Metrics": {\n "Enabled": true,\n "NodeName": "Energy Web",\n "PushGatewayUrl": "http://localhost:9091/metrics"\n },\n "Mining": {\n "MinGasPrice": 1\n },\n "Merge": {\n "Enabled": false\n },\n "Aura": {\n "ForceSealing": true\n },\n "KeyStore": {\n "PasswordFiles": ["keystore/password"],\n "UnlockAccounts": ["0x..."],\n "BlockAuthorAccount": "0x..." \n },\n}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"running-the-validator",children:"Running the validator"}),"\n",(0,r.jsxs)(n.p,{children:["The above Docker Compose file can be run from the directory the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," is located in as follows:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker-compose up -d\n"})}),"\n",(0,r.jsx)(n.p,{children:"To check the logs and verify the sealing of blocks, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker-compose logs -f nethermind-validator\n"})})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>a});var r=i(6540);const t={},o=r.createContext(t);function s(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6728],{6825:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const o={title:"Aura-based validators",sidebar_position:0},s=void 0,a={id:"validators/aura",title:"Aura-based validators",description:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example.",source:"@site/versioned_docs/version-1.26.0/validators/aura.md",sourceDirName:"validators",slug:"/validators/aura",permalink:"/1.26.0/validators/aura",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/validators/aura.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Aura-based validators",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Validators",permalink:"/1.26.0/validators/"},next:{title:"Building from source",permalink:"/1.26.0/developers/building-from-source"}},c={},d=[{value:"Configuring a Docker container",id:"configuring-a-docker-container",level:2},{value:"Configuring keyfile",id:"configuring-keyfile",level:2},{value:"Configuration settings",id:"configuration-settings",level:2},{value:"Running the validator",id:"running-the-validator",level:2}];function l(e){const n={admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"This guide will walk you through configuring an Aura-based validator with Nethermind in a Docker container using the Energy Web chain as an example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Your machine's clock has to be synchronized. Otherwise, you might miss block sealing. By default, the block time is set to 5 seconds."})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-a-docker-container",children:"Configuring a Docker container"}),"\n",(0,r.jsx)(n.p,{children:"The example below shows how to configure a Docker container for an Aura-based validator on the Energy Web chain:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n nethermind-validator:\n image: nethermind/nethermind:latest\n container_name: nethermind-validator\n restart: unless-stopped\n ports:\n - 8545:8545\n - 30303:30303\n ulimits:\n nofile:\n soft: 1000000\n hard: 1000000\n environment:\n - NETHERMIND_CONFIG=energyweb\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n"})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-keyfile",children:"Configuring keyfile"}),"\n",(0,r.jsxs)(n.p,{children:["Make sure that the keyfile name contains the public key (address). Otherwise, Nethermind doesn't recognize it as such.\nFor instance, a keyfile can be named ",(0,r.jsx)(n.code,{children:"key-0x1234567890123456789012345678901234567890"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The keyfile must be stored in the ",(0,r.jsx)(n.code,{children:"keystore"})," directory located in the Nethermind base data directory."]}),"\n",(0,r.jsx)(n.h2,{id:"configuration-settings",children:"Configuration settings"}),"\n",(0,r.jsx)(n.p,{children:"Here is an example of recommended settings for a validator. The most convenient way to configure these settings is either defining them in the configuration file or passing them as environment variables."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.IsMining"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Init.MemoryHint"}),": Can be left unspecified. It's recommended to configure it accordingly to the machine specification(for Eneergy Web, 768000000 is enough)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"EthStats"})," namespace parameters if you want to report node status to Ethstats for your network."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Metrics"})," namespace parameters to enable node monitoring."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.PasswordFiles"}),": The path to the file containing the password for the mining private key."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.UnlockAccounts"}),": An array of accounts. Provide the miner public address here."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"KeyStore.BlockAuthorAccount"}),": The miner public address should be provided here as well."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Aura.ForceSealing"}),": ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Merge.Enabled"}),": ",(0,r.jsx)(n.code,{children:"false"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Here's an example of above settings in the Energy Web configuration file:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",metastring:'title="energyweb.cfg"',children:'{\n "Init": {\n "ChainSpecPath": "chainspec/energyweb.json",\n "GenesisHash": "0x0b6d3e680af2fc525392c720666cce58e3d8e6fe75ba4b48cb36bcc69039229b",\n "BaseDbPath": "nethermind_db/energyweb",\n "LogFileName": "energyweb.log",\n "MemoryHint": 768000000\n },\n "Sync": {\n "FastSync": true,\n "PivotNumber": 26940000,\n "PivotHash": "0x8835983de9578a4355313afd2a43d8eada6f2a4ddbd9c51da103e0d5f53c4d8b",\n "PivotTotalDifficulty": "9167206964850082205703311924211835616257898274",\n "FastBlocks": true,\n "UseGethLimitsInFastBlocks": false,\n "FastSyncCatchUpHeightDelta": 10000000000\n },\n "EthStats": {\n "Enabled": true,\n "Name": "Nethermind Energy Web",\n "Secret": "secret...",\n "Url": "ws://localhost:3000/api"\n },\n "Metrics": {\n "Enabled": true,\n "NodeName": "Energy Web",\n "PushGatewayUrl": "http://localhost:9091/metrics"\n },\n "Mining": {\n "MinGasPrice": 1\n },\n "Merge": {\n "Enabled": false\n },\n "Aura": {\n "ForceSealing": true\n },\n "KeyStore": {\n "PasswordFiles": ["keystore/password"],\n "UnlockAccounts": ["0x..."],\n "BlockAuthorAccount": "0x..." \n },\n}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"running-the-validator",children:"Running the validator"}),"\n",(0,r.jsxs)(n.p,{children:["The above Docker Compose file can be run from the directory the ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," is located in as follows:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker-compose up -d\n"})}),"\n",(0,r.jsx)(n.p,{children:"To check the logs and verify the sealing of blocks, run:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"docker-compose logs -f nethermind-validator\n"})})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>a});var r=i(6540);const t={},o=r.createContext(t);function s(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ea9babff.c436b5db.js b/assets/js/ea9babff.7b931efa.js similarity index 99% rename from assets/js/ea9babff.c436b5db.js rename to assets/js/ea9babff.7b931efa.js index ab1f73e22..5f478cd36 100644 --- a/assets/js/ea9babff.c436b5db.js +++ b/assets/js/ea9babff.7b931efa.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9917],{5436:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=t(4848),i=t(8453);const o={title:"Performance tuning",sidebar_position:7},r=void 0,a={id:"fundamentals/performance-tuning",title:"Performance tuning",description:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.",source:"@site/docs/fundamentals/performance-tuning.md",sourceDirName:"fundamentals",slug:"/fundamentals/performance-tuning",permalink:"/next/fundamentals/performance-tuning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/performance-tuning.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:7,frontMatter:{title:"Performance tuning",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Pruning",permalink:"/next/fundamentals/pruning"},next:{title:"Private networks",permalink:"/next/fundamentals/private-networks"}},c={},d=[{value:"Peer discovery",id:"peer-discovery",level:2},{value:"Port forwarding",id:"port-forwarding",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Snap sync",id:"snap-sync",level:2},{value:"Old bodies and receipts",id:"old-bodies-and-receipts",level:2},{value:"Block processing time and attestation",id:"block-processing-time-and-attestation",level:2}];function l(e){const n={code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs."}),"\n",(0,s.jsx)(n.h2,{id:"peer-discovery",children:"Peer discovery"}),"\n",(0,s.jsxs)(n.p,{children:["To connect to the Ethereum network, Nethermind needs to maintain connections to other clients. The number of connections can be configured with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers "}),". The default value depends on the network. Increasing this number may reduce syncing time, while reducing this number may help with attestation performance.\nAlso, you can increase the rate at which a new connection is established with ",(0,s.jsx)(n.code,{children:"--Network.MaxOutgoingConnectPerSec "}),". The default value is 20 while 50 would be a reasonable higher value. This tends to reduce the snap sync time; however, some ISPs may throttle your Internet connection if you set this value too high. Also, some WiFi routers may hang if the value is set too high."]}),"\n",(0,s.jsx)(n.h2,{id:"port-forwarding",children:"Port forwarding"}),"\n",(0,s.jsxs)(n.p,{children:["While port forwarding is not strictly required, it helps significantly with finding peers and is essential for the network's overall health. The exact steps for port forwarding highly depend on your environment, router, and ISP. For most home configurations, automatic port forwarding can be turned on with ",(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true"}),".\nSome ISPs are more restrictive and do not support port forwarding and/or utilize provider-level NAT. In such cases, your best option is to use a VPN that supports port forwarding. Keep in mind that consensus clients need a separate port forwarding."]}),"\n",(0,s.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,s.jsx)(n.p,{children:"On the Ethereum mainnet, most of the syncing time is split into three phases: snap sync, old bodies, and old receipts. Strictly speaking, there are also fast sync, full sync, and state sync phases. However, they usually complete in less than a minute, with state sync usually taking up to 3 minutes."}),"\n",(0,s.jsx)(n.p,{children:"At the moment, the best test case sync time is 1 hour 50 minutes for all phases with the following configuration:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"CPU: AMD Ryzen 9 7950X"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Memory: 128GB RAM"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Storage: Intel Optane SSD 905P Series 900GB"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Network: 1 Gbps Internet with TorGuard VPN with WireGuard protocol. Both execution and consensus clients port forwarding are set up manually."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Command line options:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true\n--Network.MaxOutgoingConnectPerSec 50\n--Network.ProcessingThreadCount 32\n--Sync.TuneDbMode HeavyWrite\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"snap-sync",children:"Snap sync"}),"\n",(0,s.jsx)(n.p,{children:"Snap sync is the process of downloading the Ethereum state tree. After it is complete, and after the state sync phase, Nethermind can process and follow the chain. The fastest tested snap sync and state sync time is 25 minutes.\nThis phase is the most I/O-intensive sync phase, and therefore, assuming a fast internet, the sync time highly depends on your SSD's write speed. Remember that most SSDs only advertise peak write speed, usually above 5GB/s. However, they tend to slow down significantly to around 0.5GB/s (or even less for a QLC SSD) after a few seconds. Therefore, look for SSDs with high sustained write speed."}),"\n",(0,s.jsxs)(n.p,{children:["Also, ensuring your SSD is sufficiently cooled to prevent thermal throttling is essential. This is often overlooked as most workloads rarely stress SSD as much; however, to reduce sync time, Nethermind will utilize your SSD to its limit. If, for whatever reason, you need to minimize the I/O load, you can specify a rate limit with ",(0,s.jsx)(n.code,{children:"--Db.MaxBytesPerSec 1000000000"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Nethermind temporarily changes the database configuration during sync to optimize it for writing, notably the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode HeavyWrite"})," is turned on by default. On some systems with slow SSDs, the use of the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode AggressiveHeavyWrite"})," may boost. Also, the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode DisableCompaction"})," can be used to disable compaction altogether. This is likely faster for systems using entry-level NVMe SSDs and is also useful to extend the lifespan of your SSD as it provides the lowest total writes possible. However, it uses about 3GB of extra memory during snap sync. The state sync phase may appear to hang for about 10 minutes as the whole database compacts for the first time after snap sync."]}),"\n",(0,s.jsxs)(n.p,{children:["If you are running on a VPS with artificially capped IOPS, or you are using SATA SSD (which is highly not recommended), increasing the state DB block size with ",(0,s.jsx)(n.code,{children:"--Db.StateDbBlockSize 16384"})," may help to reduce snap sync time. However, this negatively affects block processing time. An alternative is to turn on compaction readahead with ",(0,s.jsx)(n.code,{children:"--Db.CompactionReadAhead 128000"}),"; however, this may take up a few extra GB of memory depending on the readahead value."]}),"\n",(0,s.jsx)(n.h2,{id:"old-bodies-and-receipts",children:"Old bodies and receipts"}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and old receipts are the process of downloading block bodies and receipts. This is required for some RPC methods, such as ",(0,s.jsx)(n.code,{children:"eth_getLogs"}),", and for consensus clients to work correctly. If you don't need them, skip this phase with"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync false\n--Sync.DownloadReceiptsInFastSync false\n--Sync.NonValidatorNode true\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and receipts are mainly limited by your Internet connection. With a 1Gbps connection, they consume around 250MB/s and 500MB/s of writes, respectively, which is generally reasonable for most PCIE SSDs. On older systems or VPS with low single thread performance and high Internet speed, the block body deserialization may be a bottleneck, in which case, you can increase the number of network processing threads with ",(0,s.jsx)(n.code,{children:"--Network.ProcessingThreadCount 32"}),". However, this may impact block processing time."]}),"\n",(0,s.jsx)(n.h2,{id:"block-processing-time-and-attestation",children:"Block processing time and attestation"}),"\n",(0,s.jsxs)(n.p,{children:["Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time.\nTo help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option ",(0,s.jsx)(n.code,{children:"--Init.MemoryHint 2000000000"}),". If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time."]}),"\n",(0,s.jsxs)(n.p,{children:["It is also possible to disable compression of the state DB with ",(0,s.jsx)(n.code,{children:"--Db.StateDbDisableCompression true"})," that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers 20"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9917],{5436:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=t(4848),i=t(8453);const o={title:"Performance tuning",sidebar_position:7},r=void 0,a={id:"fundamentals/performance-tuning",title:"Performance tuning",description:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.",source:"@site/docs/fundamentals/performance-tuning.md",sourceDirName:"fundamentals",slug:"/fundamentals/performance-tuning",permalink:"/next/fundamentals/performance-tuning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/fundamentals/performance-tuning.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:7,frontMatter:{title:"Performance tuning",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Pruning",permalink:"/next/fundamentals/pruning"},next:{title:"Private networks",permalink:"/next/fundamentals/private-networks"}},c={},d=[{value:"Peer discovery",id:"peer-discovery",level:2},{value:"Port forwarding",id:"port-forwarding",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Snap sync",id:"snap-sync",level:2},{value:"Old bodies and receipts",id:"old-bodies-and-receipts",level:2},{value:"Block processing time and attestation",id:"block-processing-time-and-attestation",level:2}];function l(e){const n={code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs."}),"\n",(0,s.jsx)(n.h2,{id:"peer-discovery",children:"Peer discovery"}),"\n",(0,s.jsxs)(n.p,{children:["To connect to the Ethereum network, Nethermind needs to maintain connections to other clients. The number of connections can be configured with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers "}),". The default value depends on the network. Increasing this number may reduce syncing time, while reducing this number may help with attestation performance.\nAlso, you can increase the rate at which a new connection is established with ",(0,s.jsx)(n.code,{children:"--Network.MaxOutgoingConnectPerSec "}),". The default value is 20 while 50 would be a reasonable higher value. This tends to reduce the snap sync time; however, some ISPs may throttle your Internet connection if you set this value too high. Also, some WiFi routers may hang if the value is set too high."]}),"\n",(0,s.jsx)(n.h2,{id:"port-forwarding",children:"Port forwarding"}),"\n",(0,s.jsxs)(n.p,{children:["While port forwarding is not strictly required, it helps significantly with finding peers and is essential for the network's overall health. The exact steps for port forwarding highly depend on your environment, router, and ISP. For most home configurations, automatic port forwarding can be turned on with ",(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true"}),".\nSome ISPs are more restrictive and do not support port forwarding and/or utilize provider-level NAT. In such cases, your best option is to use a VPN that supports port forwarding. Keep in mind that consensus clients need a separate port forwarding."]}),"\n",(0,s.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,s.jsx)(n.p,{children:"On the Ethereum mainnet, most of the syncing time is split into three phases: snap sync, old bodies, and old receipts. Strictly speaking, there are also fast sync, full sync, and state sync phases. However, they usually complete in less than a minute, with state sync usually taking up to 3 minutes."}),"\n",(0,s.jsx)(n.p,{children:"At the moment, the best test case sync time is 1 hour 50 minutes for all phases with the following configuration:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"CPU: AMD Ryzen 9 7950X"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Memory: 128GB RAM"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Storage: Intel Optane SSD 905P Series 900GB"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Network: 1 Gbps Internet with TorGuard VPN with WireGuard protocol. Both execution and consensus clients port forwarding are set up manually."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Command line options:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true\n--Network.MaxOutgoingConnectPerSec 50\n--Network.ProcessingThreadCount 32\n--Sync.TuneDbMode HeavyWrite\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"snap-sync",children:"Snap sync"}),"\n",(0,s.jsx)(n.p,{children:"Snap sync is the process of downloading the Ethereum state tree. After it is complete, and after the state sync phase, Nethermind can process and follow the chain. The fastest tested snap sync and state sync time is 25 minutes.\nThis phase is the most I/O-intensive sync phase, and therefore, assuming a fast internet, the sync time highly depends on your SSD's write speed. Remember that most SSDs only advertise peak write speed, usually above 5GB/s. However, they tend to slow down significantly to around 0.5GB/s (or even less for a QLC SSD) after a few seconds. Therefore, look for SSDs with high sustained write speed."}),"\n",(0,s.jsxs)(n.p,{children:["Also, ensuring your SSD is sufficiently cooled to prevent thermal throttling is essential. This is often overlooked as most workloads rarely stress SSD as much; however, to reduce sync time, Nethermind will utilize your SSD to its limit. If, for whatever reason, you need to minimize the I/O load, you can specify a rate limit with ",(0,s.jsx)(n.code,{children:"--Db.MaxBytesPerSec 1000000000"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Nethermind temporarily changes the database configuration during sync to optimize it for writing, notably the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode HeavyWrite"})," is turned on by default. On some systems with slow SSDs, the use of the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode AggressiveHeavyWrite"})," may boost. Also, the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode DisableCompaction"})," can be used to disable compaction altogether. This is likely faster for systems using entry-level NVMe SSDs and is also useful to extend the lifespan of your SSD as it provides the lowest total writes possible. However, it uses about 3GB of extra memory during snap sync. The state sync phase may appear to hang for about 10 minutes as the whole database compacts for the first time after snap sync."]}),"\n",(0,s.jsxs)(n.p,{children:["If you are running on a VPS with artificially capped IOPS, or you are using SATA SSD (which is highly not recommended), increasing the state DB block size with ",(0,s.jsx)(n.code,{children:"--Db.StateDbBlockSize 16384"})," may help to reduce snap sync time. However, this negatively affects block processing time. An alternative is to turn on compaction readahead with ",(0,s.jsx)(n.code,{children:"--Db.CompactionReadAhead 128000"}),"; however, this may take up a few extra GB of memory depending on the readahead value."]}),"\n",(0,s.jsx)(n.h2,{id:"old-bodies-and-receipts",children:"Old bodies and receipts"}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and old receipts are the process of downloading block bodies and receipts. This is required for some RPC methods, such as ",(0,s.jsx)(n.code,{children:"eth_getLogs"}),", and for consensus clients to work correctly. If you don't need them, skip this phase with"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync false\n--Sync.DownloadReceiptsInFastSync false\n--Sync.NonValidatorNode true\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and receipts are mainly limited by your Internet connection. With a 1Gbps connection, they consume around 250MB/s and 500MB/s of writes, respectively, which is generally reasonable for most PCIE SSDs. On older systems or VPS with low single thread performance and high Internet speed, the block body deserialization may be a bottleneck, in which case, you can increase the number of network processing threads with ",(0,s.jsx)(n.code,{children:"--Network.ProcessingThreadCount 32"}),". However, this may impact block processing time."]}),"\n",(0,s.jsx)(n.h2,{id:"block-processing-time-and-attestation",children:"Block processing time and attestation"}),"\n",(0,s.jsxs)(n.p,{children:["Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time.\nTo help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option ",(0,s.jsx)(n.code,{children:"--Init.MemoryHint 2000000000"}),". If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time."]}),"\n",(0,s.jsxs)(n.p,{children:["It is also possible to disable compression of the state DB with ",(0,s.jsx)(n.code,{children:"--Db.StateDbDisableCompression true"})," that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers 20"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/eabdc352.8c6597f7.js b/assets/js/eabdc352.accddaf5.js similarity index 99% rename from assets/js/eabdc352.8c6597f7.js rename to assets/js/eabdc352.accddaf5.js index 9bdeb089d..5e620548d 100644 --- a/assets/js/eabdc352.8c6597f7.js +++ b/assets/js/eabdc352.accddaf5.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9552],{1179:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=s(4848),a=s(8453),l=s(1470),t=s(9365);const o={title:"personal namespace",sidebar_label:"personal",sidebar_position:6},c=void 0,i={id:"interacting/json-rpc-ns/personal",title:"personal namespace",description:"personal_importRawKey",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/personal.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/personal",permalink:"/1.27.0/interacting/json-rpc-ns/personal",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/personal.md",tags:[],version:"1.27.0",lastUpdatedAt:1728683983e3,sidebarPosition:6,frontMatter:{title:"personal namespace",sidebar_label:"personal",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"parity",permalink:"/1.27.0/interacting/json-rpc-ns/parity"},next:{title:"proof",permalink:"/1.27.0/interacting/json-rpc-ns/proof"}},u={},d=[{value:"personal_importRawKey",id:"personal_importrawkey",level:3},{value:"personal_listAccounts",id:"personal_listaccounts",level:3},{value:"personal_lockAccount",id:"personal_lockaccount",level:3},{value:"personal_newAccount",id:"personal_newaccount",level:3},{value:"personal_unlockAccount",id:"personal_unlockaccount",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"personal_importrawkey",children:"personal_importRawKey"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"keyData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_importRawKey",\n "params": [keyData, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_listaccounts",children:"personal_listAccounts"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_listAccounts",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_lockaccount",children:"personal_lockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_lockAccount",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_newaccount",children:"personal_newAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_newAccount",\n "params": [passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_unlockaccount",children:"personal_unlockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_unlockAccount",\n "params": [address, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const a={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),a=s(4164),l=s(3104),t=s(6347),o=s(205),c=s(7485),i=s(1682),u=s(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:a}}=e;return{value:n,label:s,attributes:r,default:a}}))}(s);return function(e){const n=(0,i.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const a=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(a.location.search);n.set(l,e),a.replace({...a.location,search:n.toString()})}),[l,a])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:a}=e,l=p(e),[t,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[i,d]=j({queryString:s,groupId:a}),[m,x]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,l]=(0,u.Dv)(s);return[a,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:a}),b=(()=>{const e=i??m;return h({value:e,tabValues:l})?e:null})();(0,o.A)((()=>{b&&c(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),x(e)}),[d,x,l]),tabValues:l}}var x=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:o}=e;const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),u=e=>{const n=e.currentTarget,s=c.indexOf(n),a=o[s].value;a!==r&&(i(n),t(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":s},n),children:o.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:d,onClick:u,...l,className:(0,a.A)("tabs__item",b.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function g(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function A(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(g,{...n,...e})]})}function _(e){const n=(0,x.A)();return(0,f.jsx)(A,{...e,children:d(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>o});var r=s(6540);const a={},l=r.createContext(a);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9552],{1179:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=s(4848),a=s(8453),l=s(1470),t=s(9365);const o={title:"personal namespace",sidebar_label:"personal",sidebar_position:6},c=void 0,i={id:"interacting/json-rpc-ns/personal",title:"personal namespace",description:"personal_importRawKey",source:"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/personal.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/personal",permalink:"/1.27.0/interacting/json-rpc-ns/personal",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.27.0/interacting/json-rpc-ns/personal.md",tags:[],version:"1.27.0",lastUpdatedAt:1728684487e3,sidebarPosition:6,frontMatter:{title:"personal namespace",sidebar_label:"personal",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"parity",permalink:"/1.27.0/interacting/json-rpc-ns/parity"},next:{title:"proof",permalink:"/1.27.0/interacting/json-rpc-ns/proof"}},u={},d=[{value:"personal_importRawKey",id:"personal_importrawkey",level:3},{value:"personal_listAccounts",id:"personal_listaccounts",level:3},{value:"personal_lockAccount",id:"personal_lockaccount",level:3},{value:"personal_newAccount",id:"personal_newaccount",level:3},{value:"personal_unlockAccount",id:"personal_unlockaccount",level:3}];function p(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"personal_importrawkey",children:"personal_importRawKey"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"keyData"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_importRawKey",\n "params": [keyData, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_listaccounts",children:"personal_listAccounts"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_listAccounts",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_lockaccount",children:"personal_lockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_lockAccount",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_newaccount",children:"personal_newAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_newAccount",\n "params": [passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"personal_unlockaccount",children:"personal_unlockAccount"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(t.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"passphrase"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(t.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "personal_unlockAccount",\n "params": [address, passphrase]\n }\'\n'})})}),(0,r.jsxs)(t.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>t});s(6540);var r=s(4164);const a={tabItem:"tabItem_Ymn6"};var l=s(4848);function t(e){let{children:n,hidden:s,className:t}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,t),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),a=s(4164),l=s(3104),t=s(6347),o=s(205),c=s(7485),i=s(1682),u=s(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:a}}=e;return{value:n,label:s,attributes:r,default:a}}))}(s);return function(e){const n=(0,i.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function j(e){let{queryString:n=!1,groupId:s}=e;const a=(0,t.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(a.location.search);n.set(l,e),a.replace({...a.location,search:n.toString()})}),[l,a])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:a}=e,l=p(e),[t,c]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[i,d]=j({queryString:s,groupId:a}),[m,x]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,l]=(0,u.Dv)(s);return[a,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:a}),b=(()=>{const e=i??m;return h({value:e,tabValues:l})?e:null})();(0,o.A)((()=>{b&&c(b)}),[b]);return{selectedValue:t,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),x(e)}),[d,x,l]),tabValues:l}}var x=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(4848);function v(e){let{className:n,block:s,selectedValue:r,selectValue:t,tabValues:o}=e;const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),u=e=>{const n=e.currentTarget,s=c.indexOf(n),a=o[s].value;a!==r&&(i(n),t(a))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":s},n),children:o.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>c.push(e),onKeyDown:d,onClick:u,...l,className:(0,a.A)("tabs__item",b.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function g(e){let{lazy:n,children:s,selectedValue:l}=e;const t=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function A(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(g,{...n,...e})]})}function _(e){const n=(0,x.A)();return(0,f.jsx)(A,{...e,children:d(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>o});var r=s(6540);const a={},l=r.createContext(a);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ecdbb4c3.4648359d.js b/assets/js/ecdbb4c3.1b8df3a3.js similarity index 99% rename from assets/js/ecdbb4c3.4648359d.js rename to assets/js/ecdbb4c3.1b8df3a3.js index 719b32189..8da122ecb 100644 --- a/assets/js/ecdbb4c3.4648359d.js +++ b/assets/js/ecdbb4c3.1b8df3a3.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6053],{3809:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>h,toc:()=>c});var i=t(4848),s=t(8453);const r={title:"Migrating from Geth",sidebar_position:4},o=void 0,h={id:"get-started/migrating-from-geth",title:"Migrating from Geth",description:"This guide will walk you through all the steps required for a seamless and quick transition.",source:"@site/versioned_docs/version-1.26.0/get-started/migrating-from-geth.md",sourceDirName:"get-started",slug:"/get-started/migrating-from-geth",permalink:"/1.26.0/get-started/migrating-from-geth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/get-started/migrating-from-geth.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"Migrating from Geth",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Consensus clients",permalink:"/1.26.0/get-started/consensus-clients"},next:{title:"Configuration",permalink:"/1.26.0/fundamentals/configuration"}},d={},c=[{value:"Option 1: Sync Nethermind next to Geth",id:"option-1",level:2},{value:"Option 2: Sync Nethermind using Sedge next to Geth",id:"option-2",level:2},{value:"Option 3: Remove Geth and sync Nethermind",id:"option-3",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This guide will walk you through all the steps required for a seamless and quick transition."}),"\n",(0,i.jsxs)(n.p,{children:["First, ensure ",(0,i.jsx)(n.em,{children:"the disk has enough space"}),". The most secure way is having a Nethermind synced on the same machine as Geth without shutting Geth down. That allows you to check whether Nethermind is syncing properly, verify whether everything works as expected, and reduce node downtime to a bare minimum. This is a recommended approach for any public JSON-RPC provider or a validator."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the disk has enough space, ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"})," or ",(0,i.jsx)(n.a,{href:"#option-2",children:"option 2"})," are the recommended choices."]}),"\n",(0,i.jsx)(n.li,{children:"If there is not enough disk space, and downtime is not an option, we recommend either extending the disk or, if not possible, hosting Nethermind on another machine, syncing it, and whenever it completes, moving everything validator-related to that machine, and abandoning the first one."}),"\n",(0,i.jsxs)(n.li,{children:["If downtime of around 12 hours or more is not a problem, see the ",(0,i.jsx)(n.a,{href:"#option-3",children:"option 3"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"option-1",children:"Option 1: Sync Nethermind next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:["First, ",(0,i.jsx)(n.a,{href:"/1.26.0/get-started/installing-nethermind",children:"install Nethermind"})," and a ",(0,i.jsx)(n.a,{href:"/1.26.0/get-started/consensus-clients",children:"consensus client"})," of your choice."]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"If you choose the same consensus client for Nethermind that is already being used with Geth, ensure their settings, such as data directories, do not interfere."}),"\n",(0,i.jsx)(n.li,{children:"Ensure the network ports of the consensus client paired with Nethermind and the one paired with Geth do not interfere with each other."}),"\n",(0,i.jsxs)(n.li,{children:["Ensure the JSON-RPC port, Engine API port, and the P2P networking ports of Nethermind are different from the ones used by Geth. These ports are set using the following command line options:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort "})}),"\n"]}),"\n"]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. To check the sync status, use the ",(0,i.jsx)(n.a,{href:"/1.26.0/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method. When it returns ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind is considered fully synced with all block bodies and receipts needed to work properly as a validator. Another option to monitor the sync is a ",(0,i.jsx)(n.a,{href:"/1.26.0/monitoring/health-check",children:"health check"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Once Nethermind is synced, shut down both Geth and Nethermind, along with its paired consensus client. Then, restart Nethermind using the ports assigned for and the JWT secret used by Geth before. Ensure no warnings or errors are present in the logs of both Nethermind and the consensus client. Also, check if Nethermind is following the chain properly. If everything is alright, you can remove Geth and the consensus client paired with Nethermind previously along with their data."}),"\n",(0,i.jsx)(n.h2,{id:"option-2",children:"Option 2: Sync Nethermind using Sedge next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"})," is a setup tool for PoS validators and nodes that runs on Linux and macOS."]}),"\n",(0,i.jsxs)(n.p,{children:["This option is similar to the ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"}),", but Sedge automatically takes care of conflicting settings making the entire process much easier."]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsx)(n.p,{children:"You can add a flag to Sedge as follows. For instance:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["For the execution client, ",(0,i.jsx)(n.code,{children:"--el-extra-flag JsonRpc.Port=8546"})]}),"\n",(0,i.jsxs)(n.li,{children:["For the consensus client, ",(0,i.jsx)(n.code,{children:"--cl-extra-flag rpc-port=4001"})]}),"\n"]})]}),"\n",(0,i.jsxs)(n.p,{children:["Once Nethermind is synced, you can remove extra flags if any from the ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," and restart the node as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"docker compose stop execution\ndocker compose up -d execution\n"})}),"\n",(0,i.jsx)(n.h2,{id:"option-3",children:"Option 3: Remove Geth and sync Nethermind"}),"\n",(0,i.jsx)(n.p,{children:"This is the simplest option as it doesn't require configuration adjustments. However, the node will be down until Nethermind is syncing."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Shut down and remove Geth along with its data."}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/1.26.0/get-started/installing-nethermind",children:"Install Nethermind"})}),"\n",(0,i.jsx)(n.li,{children:"Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the ",(0,i.jsx)(n.a,{href:"/1.26.0/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method or the ",(0,i.jsx)(n.a,{href:"/1.26.0/monitoring/health-check",children:"health check"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>h});var i=t(6540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function h(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6053],{3809:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>h,toc:()=>c});var i=t(4848),s=t(8453);const r={title:"Migrating from Geth",sidebar_position:4},o=void 0,h={id:"get-started/migrating-from-geth",title:"Migrating from Geth",description:"This guide will walk you through all the steps required for a seamless and quick transition.",source:"@site/versioned_docs/version-1.26.0/get-started/migrating-from-geth.md",sourceDirName:"get-started",slug:"/get-started/migrating-from-geth",permalink:"/1.26.0/get-started/migrating-from-geth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/get-started/migrating-from-geth.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"Migrating from Geth",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Consensus clients",permalink:"/1.26.0/get-started/consensus-clients"},next:{title:"Configuration",permalink:"/1.26.0/fundamentals/configuration"}},d={},c=[{value:"Option 1: Sync Nethermind next to Geth",id:"option-1",level:2},{value:"Option 2: Sync Nethermind using Sedge next to Geth",id:"option-2",level:2},{value:"Option 3: Remove Geth and sync Nethermind",id:"option-3",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This guide will walk you through all the steps required for a seamless and quick transition."}),"\n",(0,i.jsxs)(n.p,{children:["First, ensure ",(0,i.jsx)(n.em,{children:"the disk has enough space"}),". The most secure way is having a Nethermind synced on the same machine as Geth without shutting Geth down. That allows you to check whether Nethermind is syncing properly, verify whether everything works as expected, and reduce node downtime to a bare minimum. This is a recommended approach for any public JSON-RPC provider or a validator."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the disk has enough space, ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"})," or ",(0,i.jsx)(n.a,{href:"#option-2",children:"option 2"})," are the recommended choices."]}),"\n",(0,i.jsx)(n.li,{children:"If there is not enough disk space, and downtime is not an option, we recommend either extending the disk or, if not possible, hosting Nethermind on another machine, syncing it, and whenever it completes, moving everything validator-related to that machine, and abandoning the first one."}),"\n",(0,i.jsxs)(n.li,{children:["If downtime of around 12 hours or more is not a problem, see the ",(0,i.jsx)(n.a,{href:"#option-3",children:"option 3"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"option-1",children:"Option 1: Sync Nethermind next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:["First, ",(0,i.jsx)(n.a,{href:"/1.26.0/get-started/installing-nethermind",children:"install Nethermind"})," and a ",(0,i.jsx)(n.a,{href:"/1.26.0/get-started/consensus-clients",children:"consensus client"})," of your choice."]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"If you choose the same consensus client for Nethermind that is already being used with Geth, ensure their settings, such as data directories, do not interfere."}),"\n",(0,i.jsx)(n.li,{children:"Ensure the network ports of the consensus client paired with Nethermind and the one paired with Geth do not interfere with each other."}),"\n",(0,i.jsxs)(n.li,{children:["Ensure the JSON-RPC port, Engine API port, and the P2P networking ports of Nethermind are different from the ones used by Geth. These ports are set using the following command line options:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort "})}),"\n"]}),"\n"]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. To check the sync status, use the ",(0,i.jsx)(n.a,{href:"/1.26.0/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method. When it returns ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind is considered fully synced with all block bodies and receipts needed to work properly as a validator. Another option to monitor the sync is a ",(0,i.jsx)(n.a,{href:"/1.26.0/monitoring/health-check",children:"health check"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Once Nethermind is synced, shut down both Geth and Nethermind, along with its paired consensus client. Then, restart Nethermind using the ports assigned for and the JWT secret used by Geth before. Ensure no warnings or errors are present in the logs of both Nethermind and the consensus client. Also, check if Nethermind is following the chain properly. If everything is alright, you can remove Geth and the consensus client paired with Nethermind previously along with their data."}),"\n",(0,i.jsx)(n.h2,{id:"option-2",children:"Option 2: Sync Nethermind using Sedge next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"})," is a setup tool for PoS validators and nodes that runs on Linux and macOS."]}),"\n",(0,i.jsxs)(n.p,{children:["This option is similar to the ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"}),", but Sedge automatically takes care of conflicting settings making the entire process much easier."]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsx)(n.p,{children:"You can add a flag to Sedge as follows. For instance:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["For the execution client, ",(0,i.jsx)(n.code,{children:"--el-extra-flag JsonRpc.Port=8546"})]}),"\n",(0,i.jsxs)(n.li,{children:["For the consensus client, ",(0,i.jsx)(n.code,{children:"--cl-extra-flag rpc-port=4001"})]}),"\n"]})]}),"\n",(0,i.jsxs)(n.p,{children:["Once Nethermind is synced, you can remove extra flags if any from the ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," and restart the node as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"docker compose stop execution\ndocker compose up -d execution\n"})}),"\n",(0,i.jsx)(n.h2,{id:"option-3",children:"Option 3: Remove Geth and sync Nethermind"}),"\n",(0,i.jsx)(n.p,{children:"This is the simplest option as it doesn't require configuration adjustments. However, the node will be down until Nethermind is syncing."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Shut down and remove Geth along with its data."}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/1.26.0/get-started/installing-nethermind",children:"Install Nethermind"})}),"\n",(0,i.jsx)(n.li,{children:"Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the ",(0,i.jsx)(n.a,{href:"/1.26.0/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method or the ",(0,i.jsx)(n.a,{href:"/1.26.0/monitoring/health-check",children:"health check"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>h});var i=t(6540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function h(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/eceb7292.59615947.js b/assets/js/eceb7292.f074cde6.js similarity index 99% rename from assets/js/eceb7292.59615947.js rename to assets/js/eceb7292.f074cde6.js index 6e339a546..f7b05432d 100644 --- a/assets/js/eceb7292.59615947.js +++ b/assets/js/eceb7292.f074cde6.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5944],{6391:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>a,frontMatter:()=>r,metadata:()=>l,toc:()=>t});var i=d(4848),s=d(8453);const r={title:"Metrics",sidebar_position:0},c=void 0,l={id:"monitoring/metrics/metrics",title:"Metrics",description:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:",source:"@site/docs/monitoring/metrics/metrics.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/",permalink:"/next/monitoring/metrics/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/monitoring/metrics/metrics.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Metrics",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"web3",permalink:"/next/interacting/json-rpc-ns/web3"},next:{title:"Grafana and Prometheus",permalink:"/next/monitoring/metrics/grafana-and-prometheus"}},o={},t=[{value:"Parameters by namespace",id:"parameters-by-namespace",level:2},{value:"Aura",id:"aura",level:3},{value:"nethermind_au_ra_step",id:"au_ra_step",level:4},{value:"nethermind_commit_hash_transaction",id:"commit_hash_transaction",level:4},{value:"nethermind_emit_initiate_change",id:"emit_initiate_change",level:4},{value:"nethermind_reported_benign_misbehaviour",id:"reported_benign_misbehaviour",level:4},{value:"nethermind_reported_malicious_misbehaviour",id:"reported_malicious_misbehaviour",level:4},{value:"nethermind_reveal_number",id:"reveal_number",level:4},{value:"nethermind_sealed_transactions",id:"sealed_transactions",level:4},{value:"nethermind_validators_count",id:"validators_count",level:4},{value:"Blockchain",id:"blockchain",level:3},{value:"nethermind_best_known_block_number",id:"best_known_block_number",level:4},{value:"nethermind_blockchain_height",id:"blockchain_height",level:4},{value:"nethermind_blocks",id:"blocks",level:4},{value:"nethermind_blocks_sealed",id:"blocks_sealed",level:4},{value:"nethermind_failed_block_seals",id:"failed_block_seals",level:4},{value:"nethermind_gas_limit",id:"gas_limit",level:4},{value:"nethermind_gas_used",id:"gas_used",level:4},{value:"nethermind_last_difficulty",id:"last_difficulty",level:4},{value:"nethermind_mgas",id:"mgas",level:4},{value:"nethermind_mgas_per_sec",id:"mgas_per_sec",level:4},{value:"nethermind_processing_queue_size",id:"processing_queue_size",level:4},{value:"nethermind_recovery_queue_size",id:"recovery_queue_size",level:4},{value:"nethermind_reorganizations",id:"reorganizations",level:4},{value:"nethermind_total_difficulty",id:"total_difficulty",level:4},{value:"nethermind_transactions",id:"transactions",level:4},{value:"Db",id:"db",level:3},{value:"nethermind_code_db_cache",id:"code_db_cache",level:4},{value:"nethermind_db_block_cache_size",id:"db_block_cache_size",level:4},{value:"nethermind_db_compaction_stats",id:"db_compaction_stats",level:4},{value:"nethermind_db_index_filter_size",id:"db_index_filter_size",level:4},{value:"nethermind_db_memtable_size",id:"db_memtable_size",level:4},{value:"nethermind_db_reads",id:"db_reads",level:4},{value:"nethermind_db_size",id:"db_size",level:4},{value:"nethermind_db_stats",id:"db_stats",level:4},{value:"nethermind_db_writes",id:"db_writes",level:4},{value:"nethermind_state_db_pruning",id:"state_db_pruning",level:4},{value:"nethermind_state_reader_reads",id:"state_reader_reads",level:4},{value:"nethermind_state_tree_cache",id:"state_tree_cache",level:4},{value:"nethermind_state_tree_reads",id:"state_tree_reads",level:4},{value:"nethermind_state_tree_writes",id:"state_tree_writes",level:4},{value:"nethermind_storage_reader_reads",id:"storage_reader_reads",level:4},{value:"nethermind_storage_tree_cache",id:"storage_tree_cache",level:4},{value:"nethermind_storage_tree_reads",id:"storage_tree_reads",level:4},{value:"nethermind_storage_tree_writes",id:"storage_tree_writes",level:4},{value:"nethermind_thread_local_code_db_cache",id:"thread_local_code_db_cache",level:4},{value:"nethermind_thread_local_state_tree_reads",id:"thread_local_state_tree_reads",level:4},{value:"nethermind_thread_local_storage_tree_reads",id:"thread_local_storage_tree_reads",level:4},{value:"Evm",id:"evm",level:3},{value:"nethermind_blockhash_opcode",id:"blockhash_opcode",level:4},{value:"nethermind_bls_g1_add_precompile",id:"bls_g1_add_precompile",level:4},{value:"nethermind_bls_g1_m_s_m_precompile",id:"bls_g1_m_s_m_precompile",level:4},{value:"nethermind_bls_g1_mul_precompile",id:"bls_g1_mul_precompile",level:4},{value:"nethermind_bls_g2_add_precompile",id:"bls_g2_add_precompile",level:4},{value:"nethermind_bls_g2_m_s_m_precompile",id:"bls_g2_m_s_m_precompile",level:4},{value:"nethermind_bls_g2_mul_precompile",id:"bls_g2_mul_precompile",level:4},{value:"nethermind_bls_map_fp2_to_g2_precompile",id:"bls_map_fp2_to_g2_precompile",level:4},{value:"nethermind_bls_map_fp_to_g1_precompile",id:"bls_map_fp_to_g1_precompile",level:4},{value:"nethermind_bls_pairing_check_precompile",id:"bls_pairing_check_precompile",level:4},{value:"nethermind_bn254_add_precompile",id:"bn254_add_precompile",level:4},{value:"nethermind_bn254_mul_precompile",id:"bn254_mul_precompile",level:4},{value:"nethermind_bn254_pairing_precompile",id:"bn254_pairing_precompile",level:4},{value:"nethermind_calls",id:"calls",level:4},{value:"nethermind_contracts_analysed",id:"contracts_analysed",level:4},{value:"nethermind_creates",id:"creates",level:4},{value:"nethermind_ec_recover_precompile",id:"ec_recover_precompile",level:4},{value:"nethermind_empty_calls",id:"empty_calls",level:4},{value:"nethermind_evm_exceptions",id:"evm_exceptions",level:4},{value:"nethermind_exp_opcode",id:"exp_opcode",level:4},{value:"nethermind_m_copy_opcode",id:"m_copy_opcode",level:4},{value:"nethermind_mod_exp_precompile",id:"mod_exp_precompile",level:4},{value:"nethermind_point_evaluation_precompile",id:"point_evaluation_precompile",level:4},{value:"nethermind_ripemd160_precompile",id:"ripemd160_precompile",level:4},{value:"nethermind_secp256r1_precompile",id:"secp256r1_precompile",level:4},{value:"nethermind_self_destructs",id:"self_destructs",level:4},{value:"nethermind_sha256_precompile",id:"sha256_precompile",level:4},{value:"nethermind_sload_opcode",id:"sload_opcode",level:4},{value:"nethermind_sstore_opcode",id:"sstore_opcode",level:4},{value:"nethermind_thread_local_calls",id:"thread_local_calls",level:4},{value:"nethermind_thread_local_contracts_analysed",id:"thread_local_contracts_analysed",level:4},{value:"nethermind_thread_local_creates",id:"thread_local_creates",level:4},{value:"nethermind_thread_local_empty_calls",id:"thread_local_empty_calls",level:4},{value:"nethermind_thread_local_s_load_opcode",id:"thread_local_s_load_opcode",level:4},{value:"nethermind_thread_local_s_store_opcode",id:"thread_local_s_store_opcode",level:4},{value:"nethermind_tload_opcode",id:"tload_opcode",level:4},{value:"nethermind_tstore_opcode",id:"tstore_opcode",level:4},{value:"JsonRpc",id:"jsonrpc",level:3},{value:"nethermind_json_rpc_bytes_received",id:"json_rpc_bytes_received",level:4},{value:"nethermind_json_rpc_bytes_sent",id:"json_rpc_bytes_sent",level:4},{value:"nethermind_json_rpc_errors",id:"json_rpc_errors",level:4},{value:"nethermind_json_rpc_invalid_requests",id:"json_rpc_invalid_requests",level:4},{value:"nethermind_json_rpc_request_deserialization_failures",id:"json_rpc_request_deserialization_failures",level:4},{value:"nethermind_json_rpc_requests",id:"json_rpc_requests",level:4},{value:"nethermind_json_rpc_successes",id:"json_rpc_successes",level:4},{value:"Merge",id:"merge",level:3},{value:"nethermind_forkchoice_upded_execution_time",id:"forkchoice_upded_execution_time",level:4},{value:"nethermind_get_payload_requests",id:"get_payload_requests",level:4},{value:"nethermind_new_payload_execution_time",id:"new_payload_execution_time",level:4},{value:"nethermind_number_of_transactions_in_get_payload",id:"number_of_transactions_in_get_payload",level:4},{value:"Network",id:"network",level:3},{value:"nethermind_handshakes",id:"handshakes",level:4},{value:"nethermind_handshake_timeouts",id:"handshake_timeouts",level:4},{value:"nethermind_incoming_connections",id:"incoming_connections",level:4},{value:"nethermind_incoming_p2_p_message_bytes",id:"incoming_p2_p_message_bytes",level:4},{value:"nethermind_incoming_p2_p_messages",id:"incoming_p2_p_messages",level:4},{value:"nethermind_local_disconnects_total",id:"local_disconnects_total",level:4},{value:"nethermind_outgoing_connections",id:"outgoing_connections",level:4},{value:"nethermind_outgoing_p2_p_message_bytes",id:"outgoing_p2_p_message_bytes",level:4},{value:"nethermind_outgoing_p2_p_messages",id:"outgoing_p2_p_messages",level:4},{value:"nethermind_peer_limit",id:"peer_limit",level:4},{value:"nethermind_remote_disconnects_total",id:"remote_disconnects_total",level:4},{value:"Pruning",id:"pruning",level:3},{value:"nethermind_cached_nodes_count",id:"cached_nodes_count",level:4},{value:"nethermind_committed_nodes_count",id:"committed_nodes_count",level:4},{value:"nethermind_deep_pruned_persisted_nodes_count",id:"deep_pruned_persisted_nodes_count",level:4},{value:"nethermind_deep_pruning_time",id:"deep_pruning_time",level:4},{value:"nethermind_last_persisted_block_number",id:"last_persisted_block_number",level:4},{value:"nethermind_loaded_from_cache_nodes_count",id:"loaded_from_cache_nodes_count",level:4},{value:"nethermind_loaded_from_db_nodes_count",id:"loaded_from_db_nodes_count",level:4},{value:"nethermind_loaded_from_rlp_cache_nodes_count",id:"loaded_from_rlp_cache_nodes_count",level:4},{value:"nethermind_memory_used_by_cache",id:"memory_used_by_cache",level:4},{value:"nethermind_persisted_node_count",id:"persisted_node_count",level:4},{value:"nethermind_pruned_persisted_nodes_count",id:"pruned_persisted_nodes_count",level:4},{value:"nethermind_pruned_transient_nodes_count",id:"pruned_transient_nodes_count",level:4},{value:"nethermind_pruning_time",id:"pruning_time",level:4},{value:"nethermind_removed_node_count",id:"removed_node_count",level:4},{value:"nethermind_replaced_nodes_count",id:"replaced_nodes_count",level:4},{value:"nethermind_snapshot_persistence_time",id:"snapshot_persistence_time",level:4},{value:"Runner",id:"runner",level:3},{value:"nethermind_version",id:"version",level:4},{value:"Shutter",id:"shutter",level:3},{value:"nethermind_shutter_bad_transactions",id:"shutter_bad_transactions",level:4},{value:"nethermind_shutter_encrypted_gas_used",id:"shutter_encrypted_gas_used",level:4},{value:"nethermind_shutter_eon",id:"shutter_eon",level:4},{value:"nethermind_shutter_keypers",id:"shutter_keypers",level:4},{value:"nethermind_shutter_keys_missed",id:"shutter_keys_missed",level:4},{value:"nethermind_shutter_keys_received_time_offset",id:"shutter_keys_received_time_offset",level:4},{value:"nethermind_shutter_threshold",id:"shutter_threshold",level:4},{value:"nethermind_shutter_transactions",id:"shutter_transactions",level:4},{value:"nethermind_shutter_tx_pointer",id:"shutter_tx_pointer",level:4},{value:"Synchronization",id:"synchronization",level:3},{value:"nethermind_sync_peers",id:"sync_peers",level:4},{value:"Trie",id:"trie",level:3},{value:"nethermind_tree_node_hash_calculations",id:"tree_node_hash_calculations",level:4},{value:"nethermind_tree_node_rlp_decodings",id:"tree_node_rlp_decodings",level:4},{value:"nethermind_tree_node_rlp_encodings",id:"tree_node_rlp_encodings",level:4},{value:"TxPool",id:"txpool",level:3},{value:"nethermind_blobs_in_block",id:"blobs_in_block",level:4},{value:"nethermind_blob_transaction_count",id:"blob_transaction_count",level:4},{value:"nethermind_blob_transactions_in_block",id:"blob_transactions_in_block",level:4},{value:"nethermind_dark_pool_ratio_level1",id:"dark_pool_ratio_level1",level:4},{value:"nethermind_dark_pool_ratio_level2",id:"dark_pool_ratio_level2",level:4},{value:"nethermind_eip1559_transactions_ratio",id:"eip1559_transactions_ratio",level:4},{value:"nethermind_pending1559_transactions_added",id:"pending1559_transactions_added",level:4},{value:"nethermind_pending_blob_transactions_added",id:"pending_blob_transactions_added",level:4},{value:"nethermind_pending_transactions_added",id:"pending_transactions_added",level:4},{value:"nethermind_pending_transactions_balance_below_value",id:"pending_transactions_balance_below_value",level:4},{value:"nethermind_pending_transactions_conflicting_tx_type",id:"pending_transactions_conflicting_tx_type",level:4},{value:"nethermind_pending_transactions_discarded",id:"pending_transactions_discarded",level:4},{value:"nethermind_pending_transactions_evicted",id:"pending_transactions_evicted",level:4},{value:"nethermind_pending_transactions_gas_limit_too_high",id:"pending_transactions_gas_limit_too_high",level:4},{value:"nethermind_pending_transactions_hashes_received",id:"pending_transactions_hashes_received",level:4},{value:"nethermind_pending_transactions_hashes_sent",id:"pending_transactions_hashes_sent",level:4},{value:"nethermind_pending_transactions_known",id:"pending_transactions_known",level:4},{value:"nethermind_pending_transactions_low_nonce",id:"pending_transactions_low_nonce",level:4},{value:"nethermind_pending_transactions_malformed",id:"pending_transactions_malformed",level:4},{value:"nethermind_pending_transactions_nonce_gap",id:"pending_transactions_nonce_gap",level:4},{value:"nethermind_pending_transactions_nonce_too_far_in_future",id:"pending_transactions_nonce_too_far_in_future",level:4},{value:"nethermind_pending_transactions_not_supported_tx_type",id:"pending_transactions_not_supported_tx_type",level:4},{value:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees",id:"pending_transactions_passed_filters_but_cannot_compete_on_fees",level:4},{value:"nethermind_pending_transactions_passed_filters_but_cannot_replace",id:"pending_transactions_passed_filters_but_cannot_replace",level:4},{value:"nethermind_pending_transactions_received",id:"pending_transactions_received",level:4},{value:"nethermind_pending_transactions_sent",id:"pending_transactions_sent",level:4},{value:"nethermind_pending_transactions_too_low_balance",id:"pending_transactions_too_low_balance",level:4},{value:"nethermind_pending_transactions_too_low_fee",id:"pending_transactions_too_low_fee",level:4},{value:"nethermind_pending_transactions_too_low_priority_fee",id:"pending_transactions_too_low_priority_fee",level:4},{value:"nethermind_pending_transactions_unresolvable_sender",id:"pending_transactions_unresolvable_sender",level:4},{value:"nethermind_pending_transactions_with_expensive_filtering",id:"pending_transactions_with_expensive_filtering",level:4},{value:"nethermind_pending_transactions_zero_balance",id:"pending_transactions_zero_balance",level:4},{value:"nethermind_transaction_count",id:"transaction_count",level:4}];function _(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/next/monitoring/metrics/grafana-and-prometheus",children:"Grafana and Prometheus"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/next/monitoring/metrics/dotnet-counters",children:"dotnet-counters"})}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"parameters-by-namespace",children:"Parameters by namespace"}),"\n",(0,i.jsx)(n.h3,{id:"aura",children:"Aura"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"au_ra_step",children:(0,i.jsx)(n.code,{children:"nethermind_au_ra_step"})}),"\n",(0,i.jsx)(n.p,{children:"Current AuRa step"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"commit_hash_transaction",children:(0,i.jsx)(n.code,{children:"nethermind_commit_hash_transaction"})}),"\n",(0,i.jsx)(n.p,{children:"RANDAO number of commit hash transactions"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"emit_initiate_change",children:(0,i.jsx)(n.code,{children:"nethermind_emit_initiate_change"})}),"\n",(0,i.jsx)(n.p,{children:"POSDAO number of emit init change transactions"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reported_benign_misbehaviour",children:(0,i.jsx)(n.code,{children:"nethermind_reported_benign_misbehaviour"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reported benign misbehaviour validators"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reported_malicious_misbehaviour",children:(0,i.jsx)(n.code,{children:"nethermind_reported_malicious_misbehaviour"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reported malicious misbehaviour validators"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reveal_number",children:(0,i.jsx)(n.code,{children:"nethermind_reveal_number"})}),"\n",(0,i.jsx)(n.p,{children:"RANDAO number of reveal number transactions"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sealed_transactions",children:(0,i.jsx)(n.code,{children:"nethermind_sealed_transactions"})}),"\n",(0,i.jsx)(n.p,{children:"Number of sealed transactions generated by engine"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"validators_count",children:(0,i.jsx)(n.code,{children:"nethermind_validators_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of current AuRa validators"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"blockchain",children:"Blockchain"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"best_known_block_number",children:(0,i.jsx)(n.code,{children:"nethermind_best_known_block_number"})}),"\n",(0,i.jsx)(n.p,{children:"The estimated highest block available."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blockchain_height",children:(0,i.jsx)(n.code,{children:"nethermind_blockchain_height"})}),"\n",(0,i.jsx)(n.p,{children:"The current height of the canonical chain."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks",children:(0,i.jsx)(n.code,{children:"nethermind_blocks"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of blocks processed"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks_sealed",children:(0,i.jsx)(n.code,{children:"nethermind_blocks_sealed"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of sealed blocks"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"failed_block_seals",children:(0,i.jsx)(n.code,{children:"nethermind_failed_block_seals"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of failed block seals"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"gas_limit",children:(0,i.jsx)(n.code,{children:"nethermind_gas_limit"})}),"\n",(0,i.jsx)(n.p,{children:"Gas Limit for processed blocks"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"gas_used",children:(0,i.jsx)(n.code,{children:"nethermind_gas_used"})}),"\n",(0,i.jsx)(n.p,{children:"Gas Used in processed blocks"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"last_difficulty",children:(0,i.jsx)(n.code,{children:"nethermind_last_difficulty"})}),"\n",(0,i.jsx)(n.p,{children:"Difficulty of the last block"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mgas",children:(0,i.jsx)(n.code,{children:"nethermind_mgas"})}),"\n",(0,i.jsx)(n.p,{children:"Total MGas processed"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mgas_per_sec",children:(0,i.jsx)(n.code,{children:"nethermind_mgas_per_sec"})}),"\n",(0,i.jsx)(n.p,{children:"MGas processed per second"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"processing_queue_size",children:(0,i.jsx)(n.code,{children:"nethermind_processing_queue_size"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blocks awaiting for processing."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"recovery_queue_size",children:(0,i.jsx)(n.code,{children:"nethermind_recovery_queue_size"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blocks awaiting for recovery of public keys from signatures."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reorganizations",children:(0,i.jsx)(n.code,{children:"nethermind_reorganizations"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of chain reorganizations"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"total_difficulty",children:(0,i.jsx)(n.code,{children:"nethermind_total_difficulty"})}),"\n",(0,i.jsx)(n.p,{children:"Total difficulty on the chain"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"transactions",children:(0,i.jsx)(n.code,{children:"nethermind_transactions"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of transactions processed"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"db",children:"Db"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"code_db_cache",children:(0,i.jsx)(n.code,{children:"nethermind_code_db_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Code DB cache reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_block_cache_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_block_cache_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database block cache size per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_compaction_stats",children:(0,i.jsx)(n.code,{children:"nethermind_db_compaction_stats"})}),"\n",(0,i.jsx)(n.p,{children:"Metrics extracted from RocksDB Compaction Stats"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_index_filter_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_index_filter_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database index and filter size per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_memtable_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_memtable_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database memtable per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_reads",children:(0,i.jsx)(n.code,{children:"nethermind_db_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Database reads per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database size per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_stats",children:(0,i.jsx)(n.code,{children:"nethermind_db_stats"})}),"\n",(0,i.jsx)(n.p,{children:"Metrics extracted from RocksDB Compaction Stats and DB Statistics"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_writes",children:(0,i.jsx)(n.code,{children:"nethermind_db_writes"})}),"\n",(0,i.jsx)(n.p,{children:"Database writes per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_db_pruning",children:(0,i.jsx)(n.code,{children:"nethermind_state_db_pruning"})}),"\n",(0,i.jsx)(n.p,{children:"Indicator if StadeDb is being pruned."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_reader_reads",children:(0,i.jsx)(n.code,{children:"nethermind_state_reader_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Reader reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_tree_cache",children:(0,i.jsx)(n.code,{children:"nethermind_state_tree_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Trie cache hits."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_state_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Trie reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_tree_writes",children:(0,i.jsx)(n.code,{children:"nethermind_state_tree_writes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Blocks Trie writes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_reader_reads",children:(0,i.jsx)(n.code,{children:"nethermind_storage_reader_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage reader reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_tree_cache",children:(0,i.jsx)(n.code,{children:"nethermind_storage_tree_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie cache hits."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_storage_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_tree_writes",children:(0,i.jsx)(n.code,{children:"nethermind_storage_tree_writes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie writes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_code_db_cache",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_code_db_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Code DB cache reads on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_state_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_state_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Trie reads on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_storage_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_storage_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie reads on thread."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"evm",children:"Evm"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blockhash_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_blockhash_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLOCKHASH opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_g1_add_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_g1_add_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_G1ADD precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_g1_m_s_m_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_g1_m_s_m_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_G1MSM precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_g1_mul_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_g1_mul_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_G1MUL precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_g2_add_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_g2_add_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_G2ADD precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_g2_m_s_m_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_g2_m_s_m_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_G2MSM precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_g2_mul_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_g2_mul_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_G2MUL precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_map_fp2_to_g2_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_map_fp2_to_g2_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_MAP_FP2_TO_G2 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_map_fp_to_g1_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_map_fp_to_g1_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_MAP_FP_TO_G1 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_pairing_check_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_pairing_check_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_PAIRING_CHECK precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bn254_add_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bn254_add_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BN254_ADD precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bn254_mul_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bn254_mul_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BN254_MUL precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bn254_pairing_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bn254_pairing_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BN254_PAIRING precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"calls",children:(0,i.jsx)(n.code,{children:"nethermind_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls to other contracts."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"contracts_analysed",children:(0,i.jsx)(n.code,{children:"nethermind_contracts_analysed"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contracts' code analysed for jump destinations."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"creates",children:(0,i.jsx)(n.code,{children:"nethermind_creates"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contract create calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ec_recover_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_ec_recover_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of EC_RECOVERY precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"empty_calls",children:(0,i.jsx)(n.code,{children:"nethermind_empty_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls made to addresses without code."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"evm_exceptions",children:(0,i.jsx)(n.code,{children:"nethermind_evm_exceptions"})}),"\n",(0,i.jsx)(n.p,{children:"Number of EVM exceptions thrown by contracts."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"exp_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_exp_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of EXP opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"m_copy_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_m_copy_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of MCOPY opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mod_exp_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_mod_exp_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of MODEXP precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"point_evaluation_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_point_evaluation_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Point Evaluation precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ripemd160_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_ripemd160_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of RIPEMD160 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"secp256r1_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_secp256r1_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Secp256r1 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"self_destructs",children:(0,i.jsx)(n.code,{children:"nethermind_self_destructs"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SELFDESTRUCT calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sha256_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_sha256_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SHA256 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sload_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_sload_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SLOAD opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sstore_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_sstore_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SSTORE opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_calls",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls to other contracts on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_contracts_analysed",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_contracts_analysed"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contracts' code analysed for jump destinations on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_creates",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_creates"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contract create calls on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_empty_calls",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_empty_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls made to addresses without code on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_s_load_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_s_load_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SLOAD opcodes executed on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_s_store_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_s_store_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SSTORE opcodes executed on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tload_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_tload_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of TLOAD opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tstore_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_tstore_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of TSTORE opcodes executed."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"jsonrpc",children:"JsonRpc"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_bytes_received",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_bytes_received"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC bytes received."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_bytes_sent",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_bytes_sent"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC bytes sent."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_errors",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_errors"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests processed with errors."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_invalid_requests",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_invalid_requests"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests that were invalid."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_request_deserialization_failures",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_request_deserialization_failures"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests that failed JSON deserialization."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_requests",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_requests"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of JSON RPC requests received by the node."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_successes",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_successes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests processed successfully."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"merge",children:"Merge"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"forkchoice_upded_execution_time",children:(0,i.jsx)(n.code,{children:"nethermind_forkchoice_upded_execution_time"})}),"\n",(0,i.jsx)(n.p,{children:"ForkchoiceUpded request execution time"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"get_payload_requests",children:(0,i.jsx)(n.code,{children:"nethermind_get_payload_requests"})}),"\n",(0,i.jsx)(n.p,{children:"Number of GetPayload Requests"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"new_payload_execution_time",children:(0,i.jsx)(n.code,{children:"nethermind_new_payload_execution_time"})}),"\n",(0,i.jsx)(n.p,{children:"NewPayload request execution time"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"number_of_transactions_in_get_payload",children:(0,i.jsx)(n.code,{children:"nethermind_number_of_transactions_in_get_payload"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Transactions included in the Last GetPayload Request"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"network",children:"Network"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"handshakes",children:(0,i.jsx)(n.code,{children:"nethermind_handshakes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of devp2p handshakes"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"handshake_timeouts",children:(0,i.jsx)(n.code,{children:"nethermind_handshake_timeouts"})}),"\n",(0,i.jsx)(n.p,{children:"Number of devp2p handshake timeouts"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"incoming_connections",children:(0,i.jsx)(n.code,{children:"nethermind_incoming_connections"})}),"\n",(0,i.jsx)(n.p,{children:"Number of incoming connection."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"incoming_p2_p_message_bytes",children:(0,i.jsx)(n.code,{children:"nethermind_incoming_p2_p_message_bytes"})}),"\n",(0,i.jsx)(n.p,{children:"Bytes of incoming p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"incoming_p2_p_messages",children:(0,i.jsx)(n.code,{children:"nethermind_incoming_p2_p_messages"})}),"\n",(0,i.jsx)(n.p,{children:"Number of incoming p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"local_disconnects_total",children:(0,i.jsx)(n.code,{children:"nethermind_local_disconnects_total"})}),"\n",(0,i.jsx)(n.p,{children:"Number of local disconnects"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"outgoing_connections",children:(0,i.jsx)(n.code,{children:"nethermind_outgoing_connections"})}),"\n",(0,i.jsx)(n.p,{children:"Number of outgoing connection."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"outgoing_p2_p_message_bytes",children:(0,i.jsx)(n.code,{children:"nethermind_outgoing_p2_p_message_bytes"})}),"\n",(0,i.jsx)(n.p,{children:"Bytes of outgoing p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"outgoing_p2_p_messages",children:(0,i.jsx)(n.code,{children:"nethermind_outgoing_p2_p_messages"})}),"\n",(0,i.jsx)(n.p,{children:"Number of outgoing p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"peer_limit",children:(0,i.jsx)(n.code,{children:"nethermind_peer_limit"})}),"\n",(0,i.jsx)(n.p,{children:"The maximum number of peers this node allows to connect."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"remote_disconnects_total",children:(0,i.jsx)(n.code,{children:"nethermind_remote_disconnects_total"})}),"\n",(0,i.jsx)(n.p,{children:"Number of remote disconnects"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"pruning",children:"Pruning"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"cached_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_cached_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that are currently kept in cache (either persisted or not)"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"committed_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_committed_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been committed since the session start. These nodes may have been pruned, persisted or replaced."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"deep_pruned_persisted_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_deep_pruned_persisted_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been removed from the cache during deep pruning because they have been persisted before."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"deep_pruning_time",children:(0,i.jsx)(n.code,{children:"nethermind_deep_pruning_time"})}),"\n",(0,i.jsx)(n.p,{children:"Time taken by the last deep pruning."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"last_persisted_block_number",children:(0,i.jsx)(n.code,{children:"nethermind_last_persisted_block_number"})}),"\n",(0,i.jsx)(n.p,{children:"Last persisted block number (snapshot)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loaded_from_cache_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_loaded_from_cache_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reads from the node cache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loaded_from_db_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_loaded_from_db_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of DB reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loaded_from_rlp_cache_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_loaded_from_rlp_cache_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reads from the RLP cache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"memory_used_by_cache",children:(0,i.jsx)(n.code,{children:"nethermind_memory_used_by_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Estimated memory used by cache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"persisted_node_count",children:(0,i.jsx)(n.code,{children:"nethermind_persisted_node_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been persisted since the session start."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruned_persisted_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_pruned_persisted_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they have been persisted before."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruned_transient_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_pruned_transient_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they were no longer needed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning_time",children:(0,i.jsx)(n.code,{children:"nethermind_pruning_time"})}),"\n",(0,i.jsx)(n.p,{children:"Time taken by the last pruning."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"removed_node_count",children:(0,i.jsx)(n.code,{children:"nethermind_removed_node_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that was removed via live pruning."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"replaced_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_replaced_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of nodes that have been exactly the same as other nodes in the cache when committing."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot_persistence_time",children:(0,i.jsx)(n.code,{children:"nethermind_snapshot_persistence_time"})}),"\n",(0,i.jsx)(n.p,{children:"Time taken by the last snapshot persistence."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"runner",children:"Runner"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"version",children:(0,i.jsx)(n.code,{children:"nethermind_version"})}),"\n",(0,i.jsx)(n.p,{children:"Version number"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"shutter",children:"Shutter"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_bad_transactions",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_bad_transactions"})}),"\n",(0,i.jsx)(n.p,{children:"Number of invalid transactions that could not be included."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_encrypted_gas_used",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_encrypted_gas_used"})}),"\n",(0,i.jsx)(n.p,{children:"Amount of encrypted gas used."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_eon",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_eon"})}),"\n",(0,i.jsx)(n.p,{children:"Eon of the latest block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_keypers",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_keypers"})}),"\n",(0,i.jsx)(n.p,{children:"Size of keyper set in current eon."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_keys_missed",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_keys_missed"})}),"\n",(0,i.jsx)(n.p,{children:"Number of keys not received."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_keys_received_time_offset",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_keys_received_time_offset"})}),"\n",(0,i.jsx)(n.p,{children:"Relative time offset (ms) from slot boundary that keys were received."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_threshold",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_threshold"})}),"\n",(0,i.jsx)(n.p,{children:"Number of keypers assumed to be honest and online for current eon."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_transactions",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_transactions"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions included."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_tx_pointer",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_tx_pointer"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions since Shutter genesis."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"synchronization",children:"Synchronization"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync_peers",children:(0,i.jsx)(n.code,{children:"nethermind_sync_peers"})}),"\n",(0,i.jsx)(n.p,{children:"Number of sync peers."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"trie",children:"Trie"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tree_node_hash_calculations",children:(0,i.jsx)(n.code,{children:"nethermind_tree_node_hash_calculations"})}),"\n",(0,i.jsx)(n.p,{children:"Number of trie node hash calculations."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tree_node_rlp_decodings",children:(0,i.jsx)(n.code,{children:"nethermind_tree_node_rlp_decodings"})}),"\n",(0,i.jsx)(n.p,{children:"Number of trie node RLP decodings."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tree_node_rlp_encodings",children:(0,i.jsx)(n.code,{children:"nethermind_tree_node_rlp_encodings"})}),"\n",(0,i.jsx)(n.p,{children:"Number of trie node RLP encodings."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"txpool",children:"TxPool"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blobs_in_block",children:(0,i.jsx)(n.code,{children:"nethermind_blobs_in_block"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blobs in the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blob_transaction_count",children:(0,i.jsx)(n.code,{children:"nethermind_blob_transaction_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blob transactions in pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blob_transactions_in_block",children:(0,i.jsx)(n.code,{children:"nethermind_blob_transactions_in_block"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blob transactions in the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"dark_pool_ratio_level1",children:(0,i.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level1"})}),"\n",(0,i.jsx)(n.p,{children:"Ratio of transactions in the block absent in hashCache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"dark_pool_ratio_level2",children:(0,i.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level2"})}),"\n",(0,i.jsx)(n.p,{children:"Ratio of transactions in the block absent in pending transactions."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"eip1559_transactions_ratio",children:(0,i.jsx)(n.code,{children:"nethermind_eip1559_transactions_ratio"})}),"\n",(0,i.jsx)(n.p,{children:"Ratio of 1559-type transactions in the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending1559_transactions_added",children:(0,i.jsx)(n.code,{children:"nethermind_pending1559_transactions_added"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending 1559-type transactions added to transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_blob_transactions_added",children:(0,i.jsx)(n.code,{children:"nethermind_pending_blob_transactions_added"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending blob-type transactions added to transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_added",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_added"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions added to transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_balance_below_value",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_balance_below_value"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is less than txn value."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_conflicting_tx_type",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_conflicting_tx_type"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions rejected because of already pending tx of other type (allowed blob txs or others, not both at once)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_discarded",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_discarded"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_evicted",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_evicted"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions evicted from transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_gas_limit_too_high",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_gas_limit_too_high"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the gas limit was to high for the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_hashes_received",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_received"})}),"\n",(0,i.jsx)(n.p,{children:"Number of hashes of pending transactions received from peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_hashes_sent",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_sent"})}),"\n",(0,i.jsx)(n.p,{children:"Number of hashes of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_known",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_known"})}),"\n",(0,i.jsx)(n.p,{children:"Number of already known pending transactions."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_low_nonce",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_low_nonce"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions with already used nonce."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_malformed",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_malformed"})}),"\n",(0,i.jsx)(n.p,{children:"Number of malformed transactions."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_nonce_gap",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_gap"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not having preceding nonce of this sender in TxPool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_nonce_too_far_in_future",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_too_far_in_future"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions with nonce too far in future."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_not_supported_tx_type",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_not_supported_tx_type"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not supported transaction type."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_passed_filters_but_cannot_compete_on_fees",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored after passing early rejections as balance is too low to compete with lowest effective fee in transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_passed_filters_but_cannot_replace",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_replace"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were trying to replace tx with the same sender and nonce and failed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_received",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_received"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received from peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_sent",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_sent"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_too_low_balance",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_balance"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance too low for fee to be higher than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_too_low_fee",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_fee"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of fee lower than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_too_low_priority_fee",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_priority_fee"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of priority fee lower than minimal requirement."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_unresolvable_sender",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_unresolvable_sender"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the sender couldn't be resolved."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_with_expensive_filtering",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_with_expensive_filtering"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions that reached filters which are resource expensive"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_zero_balance",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_zero_balance"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is zero and cannot pay gas."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"transaction_count",children:(0,i.jsx)(n.code,{children:"nethermind_transaction_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions in pool."}),"\n"]}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(_,{...e})}):_(e)}},8453:(e,n,d)=>{d.d(n,{R:()=>c,x:()=>l});var i=d(6540);const s={},r=i.createContext(s);function c(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[5944],{6391:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>a,frontMatter:()=>r,metadata:()=>l,toc:()=>t});var i=d(4848),s=d(8453);const r={title:"Metrics",sidebar_position:0},c=void 0,l={id:"monitoring/metrics/metrics",title:"Metrics",description:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:",source:"@site/docs/monitoring/metrics/metrics.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/",permalink:"/next/monitoring/metrics/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/monitoring/metrics/metrics.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Metrics",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"web3",permalink:"/next/interacting/json-rpc-ns/web3"},next:{title:"Grafana and Prometheus",permalink:"/next/monitoring/metrics/grafana-and-prometheus"}},o={},t=[{value:"Parameters by namespace",id:"parameters-by-namespace",level:2},{value:"Aura",id:"aura",level:3},{value:"nethermind_au_ra_step",id:"au_ra_step",level:4},{value:"nethermind_commit_hash_transaction",id:"commit_hash_transaction",level:4},{value:"nethermind_emit_initiate_change",id:"emit_initiate_change",level:4},{value:"nethermind_reported_benign_misbehaviour",id:"reported_benign_misbehaviour",level:4},{value:"nethermind_reported_malicious_misbehaviour",id:"reported_malicious_misbehaviour",level:4},{value:"nethermind_reveal_number",id:"reveal_number",level:4},{value:"nethermind_sealed_transactions",id:"sealed_transactions",level:4},{value:"nethermind_validators_count",id:"validators_count",level:4},{value:"Blockchain",id:"blockchain",level:3},{value:"nethermind_best_known_block_number",id:"best_known_block_number",level:4},{value:"nethermind_blockchain_height",id:"blockchain_height",level:4},{value:"nethermind_blocks",id:"blocks",level:4},{value:"nethermind_blocks_sealed",id:"blocks_sealed",level:4},{value:"nethermind_failed_block_seals",id:"failed_block_seals",level:4},{value:"nethermind_gas_limit",id:"gas_limit",level:4},{value:"nethermind_gas_used",id:"gas_used",level:4},{value:"nethermind_last_difficulty",id:"last_difficulty",level:4},{value:"nethermind_mgas",id:"mgas",level:4},{value:"nethermind_mgas_per_sec",id:"mgas_per_sec",level:4},{value:"nethermind_processing_queue_size",id:"processing_queue_size",level:4},{value:"nethermind_recovery_queue_size",id:"recovery_queue_size",level:4},{value:"nethermind_reorganizations",id:"reorganizations",level:4},{value:"nethermind_total_difficulty",id:"total_difficulty",level:4},{value:"nethermind_transactions",id:"transactions",level:4},{value:"Db",id:"db",level:3},{value:"nethermind_code_db_cache",id:"code_db_cache",level:4},{value:"nethermind_db_block_cache_size",id:"db_block_cache_size",level:4},{value:"nethermind_db_compaction_stats",id:"db_compaction_stats",level:4},{value:"nethermind_db_index_filter_size",id:"db_index_filter_size",level:4},{value:"nethermind_db_memtable_size",id:"db_memtable_size",level:4},{value:"nethermind_db_reads",id:"db_reads",level:4},{value:"nethermind_db_size",id:"db_size",level:4},{value:"nethermind_db_stats",id:"db_stats",level:4},{value:"nethermind_db_writes",id:"db_writes",level:4},{value:"nethermind_state_db_pruning",id:"state_db_pruning",level:4},{value:"nethermind_state_reader_reads",id:"state_reader_reads",level:4},{value:"nethermind_state_tree_cache",id:"state_tree_cache",level:4},{value:"nethermind_state_tree_reads",id:"state_tree_reads",level:4},{value:"nethermind_state_tree_writes",id:"state_tree_writes",level:4},{value:"nethermind_storage_reader_reads",id:"storage_reader_reads",level:4},{value:"nethermind_storage_tree_cache",id:"storage_tree_cache",level:4},{value:"nethermind_storage_tree_reads",id:"storage_tree_reads",level:4},{value:"nethermind_storage_tree_writes",id:"storage_tree_writes",level:4},{value:"nethermind_thread_local_code_db_cache",id:"thread_local_code_db_cache",level:4},{value:"nethermind_thread_local_state_tree_reads",id:"thread_local_state_tree_reads",level:4},{value:"nethermind_thread_local_storage_tree_reads",id:"thread_local_storage_tree_reads",level:4},{value:"Evm",id:"evm",level:3},{value:"nethermind_blockhash_opcode",id:"blockhash_opcode",level:4},{value:"nethermind_bls_g1_add_precompile",id:"bls_g1_add_precompile",level:4},{value:"nethermind_bls_g1_m_s_m_precompile",id:"bls_g1_m_s_m_precompile",level:4},{value:"nethermind_bls_g1_mul_precompile",id:"bls_g1_mul_precompile",level:4},{value:"nethermind_bls_g2_add_precompile",id:"bls_g2_add_precompile",level:4},{value:"nethermind_bls_g2_m_s_m_precompile",id:"bls_g2_m_s_m_precompile",level:4},{value:"nethermind_bls_g2_mul_precompile",id:"bls_g2_mul_precompile",level:4},{value:"nethermind_bls_map_fp2_to_g2_precompile",id:"bls_map_fp2_to_g2_precompile",level:4},{value:"nethermind_bls_map_fp_to_g1_precompile",id:"bls_map_fp_to_g1_precompile",level:4},{value:"nethermind_bls_pairing_check_precompile",id:"bls_pairing_check_precompile",level:4},{value:"nethermind_bn254_add_precompile",id:"bn254_add_precompile",level:4},{value:"nethermind_bn254_mul_precompile",id:"bn254_mul_precompile",level:4},{value:"nethermind_bn254_pairing_precompile",id:"bn254_pairing_precompile",level:4},{value:"nethermind_calls",id:"calls",level:4},{value:"nethermind_contracts_analysed",id:"contracts_analysed",level:4},{value:"nethermind_creates",id:"creates",level:4},{value:"nethermind_ec_recover_precompile",id:"ec_recover_precompile",level:4},{value:"nethermind_empty_calls",id:"empty_calls",level:4},{value:"nethermind_evm_exceptions",id:"evm_exceptions",level:4},{value:"nethermind_exp_opcode",id:"exp_opcode",level:4},{value:"nethermind_m_copy_opcode",id:"m_copy_opcode",level:4},{value:"nethermind_mod_exp_precompile",id:"mod_exp_precompile",level:4},{value:"nethermind_point_evaluation_precompile",id:"point_evaluation_precompile",level:4},{value:"nethermind_ripemd160_precompile",id:"ripemd160_precompile",level:4},{value:"nethermind_secp256r1_precompile",id:"secp256r1_precompile",level:4},{value:"nethermind_self_destructs",id:"self_destructs",level:4},{value:"nethermind_sha256_precompile",id:"sha256_precompile",level:4},{value:"nethermind_sload_opcode",id:"sload_opcode",level:4},{value:"nethermind_sstore_opcode",id:"sstore_opcode",level:4},{value:"nethermind_thread_local_calls",id:"thread_local_calls",level:4},{value:"nethermind_thread_local_contracts_analysed",id:"thread_local_contracts_analysed",level:4},{value:"nethermind_thread_local_creates",id:"thread_local_creates",level:4},{value:"nethermind_thread_local_empty_calls",id:"thread_local_empty_calls",level:4},{value:"nethermind_thread_local_s_load_opcode",id:"thread_local_s_load_opcode",level:4},{value:"nethermind_thread_local_s_store_opcode",id:"thread_local_s_store_opcode",level:4},{value:"nethermind_tload_opcode",id:"tload_opcode",level:4},{value:"nethermind_tstore_opcode",id:"tstore_opcode",level:4},{value:"JsonRpc",id:"jsonrpc",level:3},{value:"nethermind_json_rpc_bytes_received",id:"json_rpc_bytes_received",level:4},{value:"nethermind_json_rpc_bytes_sent",id:"json_rpc_bytes_sent",level:4},{value:"nethermind_json_rpc_errors",id:"json_rpc_errors",level:4},{value:"nethermind_json_rpc_invalid_requests",id:"json_rpc_invalid_requests",level:4},{value:"nethermind_json_rpc_request_deserialization_failures",id:"json_rpc_request_deserialization_failures",level:4},{value:"nethermind_json_rpc_requests",id:"json_rpc_requests",level:4},{value:"nethermind_json_rpc_successes",id:"json_rpc_successes",level:4},{value:"Merge",id:"merge",level:3},{value:"nethermind_forkchoice_upded_execution_time",id:"forkchoice_upded_execution_time",level:4},{value:"nethermind_get_payload_requests",id:"get_payload_requests",level:4},{value:"nethermind_new_payload_execution_time",id:"new_payload_execution_time",level:4},{value:"nethermind_number_of_transactions_in_get_payload",id:"number_of_transactions_in_get_payload",level:4},{value:"Network",id:"network",level:3},{value:"nethermind_handshakes",id:"handshakes",level:4},{value:"nethermind_handshake_timeouts",id:"handshake_timeouts",level:4},{value:"nethermind_incoming_connections",id:"incoming_connections",level:4},{value:"nethermind_incoming_p2_p_message_bytes",id:"incoming_p2_p_message_bytes",level:4},{value:"nethermind_incoming_p2_p_messages",id:"incoming_p2_p_messages",level:4},{value:"nethermind_local_disconnects_total",id:"local_disconnects_total",level:4},{value:"nethermind_outgoing_connections",id:"outgoing_connections",level:4},{value:"nethermind_outgoing_p2_p_message_bytes",id:"outgoing_p2_p_message_bytes",level:4},{value:"nethermind_outgoing_p2_p_messages",id:"outgoing_p2_p_messages",level:4},{value:"nethermind_peer_limit",id:"peer_limit",level:4},{value:"nethermind_remote_disconnects_total",id:"remote_disconnects_total",level:4},{value:"Pruning",id:"pruning",level:3},{value:"nethermind_cached_nodes_count",id:"cached_nodes_count",level:4},{value:"nethermind_committed_nodes_count",id:"committed_nodes_count",level:4},{value:"nethermind_deep_pruned_persisted_nodes_count",id:"deep_pruned_persisted_nodes_count",level:4},{value:"nethermind_deep_pruning_time",id:"deep_pruning_time",level:4},{value:"nethermind_last_persisted_block_number",id:"last_persisted_block_number",level:4},{value:"nethermind_loaded_from_cache_nodes_count",id:"loaded_from_cache_nodes_count",level:4},{value:"nethermind_loaded_from_db_nodes_count",id:"loaded_from_db_nodes_count",level:4},{value:"nethermind_loaded_from_rlp_cache_nodes_count",id:"loaded_from_rlp_cache_nodes_count",level:4},{value:"nethermind_memory_used_by_cache",id:"memory_used_by_cache",level:4},{value:"nethermind_persisted_node_count",id:"persisted_node_count",level:4},{value:"nethermind_pruned_persisted_nodes_count",id:"pruned_persisted_nodes_count",level:4},{value:"nethermind_pruned_transient_nodes_count",id:"pruned_transient_nodes_count",level:4},{value:"nethermind_pruning_time",id:"pruning_time",level:4},{value:"nethermind_removed_node_count",id:"removed_node_count",level:4},{value:"nethermind_replaced_nodes_count",id:"replaced_nodes_count",level:4},{value:"nethermind_snapshot_persistence_time",id:"snapshot_persistence_time",level:4},{value:"Runner",id:"runner",level:3},{value:"nethermind_version",id:"version",level:4},{value:"Shutter",id:"shutter",level:3},{value:"nethermind_shutter_bad_transactions",id:"shutter_bad_transactions",level:4},{value:"nethermind_shutter_encrypted_gas_used",id:"shutter_encrypted_gas_used",level:4},{value:"nethermind_shutter_eon",id:"shutter_eon",level:4},{value:"nethermind_shutter_keypers",id:"shutter_keypers",level:4},{value:"nethermind_shutter_keys_missed",id:"shutter_keys_missed",level:4},{value:"nethermind_shutter_keys_received_time_offset",id:"shutter_keys_received_time_offset",level:4},{value:"nethermind_shutter_threshold",id:"shutter_threshold",level:4},{value:"nethermind_shutter_transactions",id:"shutter_transactions",level:4},{value:"nethermind_shutter_tx_pointer",id:"shutter_tx_pointer",level:4},{value:"Synchronization",id:"synchronization",level:3},{value:"nethermind_sync_peers",id:"sync_peers",level:4},{value:"Trie",id:"trie",level:3},{value:"nethermind_tree_node_hash_calculations",id:"tree_node_hash_calculations",level:4},{value:"nethermind_tree_node_rlp_decodings",id:"tree_node_rlp_decodings",level:4},{value:"nethermind_tree_node_rlp_encodings",id:"tree_node_rlp_encodings",level:4},{value:"TxPool",id:"txpool",level:3},{value:"nethermind_blobs_in_block",id:"blobs_in_block",level:4},{value:"nethermind_blob_transaction_count",id:"blob_transaction_count",level:4},{value:"nethermind_blob_transactions_in_block",id:"blob_transactions_in_block",level:4},{value:"nethermind_dark_pool_ratio_level1",id:"dark_pool_ratio_level1",level:4},{value:"nethermind_dark_pool_ratio_level2",id:"dark_pool_ratio_level2",level:4},{value:"nethermind_eip1559_transactions_ratio",id:"eip1559_transactions_ratio",level:4},{value:"nethermind_pending1559_transactions_added",id:"pending1559_transactions_added",level:4},{value:"nethermind_pending_blob_transactions_added",id:"pending_blob_transactions_added",level:4},{value:"nethermind_pending_transactions_added",id:"pending_transactions_added",level:4},{value:"nethermind_pending_transactions_balance_below_value",id:"pending_transactions_balance_below_value",level:4},{value:"nethermind_pending_transactions_conflicting_tx_type",id:"pending_transactions_conflicting_tx_type",level:4},{value:"nethermind_pending_transactions_discarded",id:"pending_transactions_discarded",level:4},{value:"nethermind_pending_transactions_evicted",id:"pending_transactions_evicted",level:4},{value:"nethermind_pending_transactions_gas_limit_too_high",id:"pending_transactions_gas_limit_too_high",level:4},{value:"nethermind_pending_transactions_hashes_received",id:"pending_transactions_hashes_received",level:4},{value:"nethermind_pending_transactions_hashes_sent",id:"pending_transactions_hashes_sent",level:4},{value:"nethermind_pending_transactions_known",id:"pending_transactions_known",level:4},{value:"nethermind_pending_transactions_low_nonce",id:"pending_transactions_low_nonce",level:4},{value:"nethermind_pending_transactions_malformed",id:"pending_transactions_malformed",level:4},{value:"nethermind_pending_transactions_nonce_gap",id:"pending_transactions_nonce_gap",level:4},{value:"nethermind_pending_transactions_nonce_too_far_in_future",id:"pending_transactions_nonce_too_far_in_future",level:4},{value:"nethermind_pending_transactions_not_supported_tx_type",id:"pending_transactions_not_supported_tx_type",level:4},{value:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees",id:"pending_transactions_passed_filters_but_cannot_compete_on_fees",level:4},{value:"nethermind_pending_transactions_passed_filters_but_cannot_replace",id:"pending_transactions_passed_filters_but_cannot_replace",level:4},{value:"nethermind_pending_transactions_received",id:"pending_transactions_received",level:4},{value:"nethermind_pending_transactions_sent",id:"pending_transactions_sent",level:4},{value:"nethermind_pending_transactions_too_low_balance",id:"pending_transactions_too_low_balance",level:4},{value:"nethermind_pending_transactions_too_low_fee",id:"pending_transactions_too_low_fee",level:4},{value:"nethermind_pending_transactions_too_low_priority_fee",id:"pending_transactions_too_low_priority_fee",level:4},{value:"nethermind_pending_transactions_unresolvable_sender",id:"pending_transactions_unresolvable_sender",level:4},{value:"nethermind_pending_transactions_with_expensive_filtering",id:"pending_transactions_with_expensive_filtering",level:4},{value:"nethermind_pending_transactions_zero_balance",id:"pending_transactions_zero_balance",level:4},{value:"nethermind_transaction_count",id:"transaction_count",level:4}];function _(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/next/monitoring/metrics/grafana-and-prometheus",children:"Grafana and Prometheus"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/next/monitoring/metrics/dotnet-counters",children:"dotnet-counters"})}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"parameters-by-namespace",children:"Parameters by namespace"}),"\n",(0,i.jsx)(n.h3,{id:"aura",children:"Aura"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"au_ra_step",children:(0,i.jsx)(n.code,{children:"nethermind_au_ra_step"})}),"\n",(0,i.jsx)(n.p,{children:"Current AuRa step"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"commit_hash_transaction",children:(0,i.jsx)(n.code,{children:"nethermind_commit_hash_transaction"})}),"\n",(0,i.jsx)(n.p,{children:"RANDAO number of commit hash transactions"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"emit_initiate_change",children:(0,i.jsx)(n.code,{children:"nethermind_emit_initiate_change"})}),"\n",(0,i.jsx)(n.p,{children:"POSDAO number of emit init change transactions"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reported_benign_misbehaviour",children:(0,i.jsx)(n.code,{children:"nethermind_reported_benign_misbehaviour"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reported benign misbehaviour validators"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reported_malicious_misbehaviour",children:(0,i.jsx)(n.code,{children:"nethermind_reported_malicious_misbehaviour"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reported malicious misbehaviour validators"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reveal_number",children:(0,i.jsx)(n.code,{children:"nethermind_reveal_number"})}),"\n",(0,i.jsx)(n.p,{children:"RANDAO number of reveal number transactions"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sealed_transactions",children:(0,i.jsx)(n.code,{children:"nethermind_sealed_transactions"})}),"\n",(0,i.jsx)(n.p,{children:"Number of sealed transactions generated by engine"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"validators_count",children:(0,i.jsx)(n.code,{children:"nethermind_validators_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of current AuRa validators"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"blockchain",children:"Blockchain"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"best_known_block_number",children:(0,i.jsx)(n.code,{children:"nethermind_best_known_block_number"})}),"\n",(0,i.jsx)(n.p,{children:"The estimated highest block available."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blockchain_height",children:(0,i.jsx)(n.code,{children:"nethermind_blockchain_height"})}),"\n",(0,i.jsx)(n.p,{children:"The current height of the canonical chain."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks",children:(0,i.jsx)(n.code,{children:"nethermind_blocks"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of blocks processed"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blocks_sealed",children:(0,i.jsx)(n.code,{children:"nethermind_blocks_sealed"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of sealed blocks"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"failed_block_seals",children:(0,i.jsx)(n.code,{children:"nethermind_failed_block_seals"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of failed block seals"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"gas_limit",children:(0,i.jsx)(n.code,{children:"nethermind_gas_limit"})}),"\n",(0,i.jsx)(n.p,{children:"Gas Limit for processed blocks"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"gas_used",children:(0,i.jsx)(n.code,{children:"nethermind_gas_used"})}),"\n",(0,i.jsx)(n.p,{children:"Gas Used in processed blocks"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"last_difficulty",children:(0,i.jsx)(n.code,{children:"nethermind_last_difficulty"})}),"\n",(0,i.jsx)(n.p,{children:"Difficulty of the last block"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mgas",children:(0,i.jsx)(n.code,{children:"nethermind_mgas"})}),"\n",(0,i.jsx)(n.p,{children:"Total MGas processed"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mgas_per_sec",children:(0,i.jsx)(n.code,{children:"nethermind_mgas_per_sec"})}),"\n",(0,i.jsx)(n.p,{children:"MGas processed per second"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"processing_queue_size",children:(0,i.jsx)(n.code,{children:"nethermind_processing_queue_size"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blocks awaiting for processing."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"recovery_queue_size",children:(0,i.jsx)(n.code,{children:"nethermind_recovery_queue_size"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blocks awaiting for recovery of public keys from signatures."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"reorganizations",children:(0,i.jsx)(n.code,{children:"nethermind_reorganizations"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of chain reorganizations"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"total_difficulty",children:(0,i.jsx)(n.code,{children:"nethermind_total_difficulty"})}),"\n",(0,i.jsx)(n.p,{children:"Total difficulty on the chain"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"transactions",children:(0,i.jsx)(n.code,{children:"nethermind_transactions"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of transactions processed"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"db",children:"Db"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"code_db_cache",children:(0,i.jsx)(n.code,{children:"nethermind_code_db_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Code DB cache reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_block_cache_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_block_cache_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database block cache size per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_compaction_stats",children:(0,i.jsx)(n.code,{children:"nethermind_db_compaction_stats"})}),"\n",(0,i.jsx)(n.p,{children:"Metrics extracted from RocksDB Compaction Stats"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_index_filter_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_index_filter_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database index and filter size per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_memtable_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_memtable_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database memtable per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_reads",children:(0,i.jsx)(n.code,{children:"nethermind_db_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Database reads per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_size",children:(0,i.jsx)(n.code,{children:"nethermind_db_size"})}),"\n",(0,i.jsx)(n.p,{children:"Database size per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_stats",children:(0,i.jsx)(n.code,{children:"nethermind_db_stats"})}),"\n",(0,i.jsx)(n.p,{children:"Metrics extracted from RocksDB Compaction Stats and DB Statistics"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"db_writes",children:(0,i.jsx)(n.code,{children:"nethermind_db_writes"})}),"\n",(0,i.jsx)(n.p,{children:"Database writes per database"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_db_pruning",children:(0,i.jsx)(n.code,{children:"nethermind_state_db_pruning"})}),"\n",(0,i.jsx)(n.p,{children:"Indicator if StadeDb is being pruned."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_reader_reads",children:(0,i.jsx)(n.code,{children:"nethermind_state_reader_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Reader reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_tree_cache",children:(0,i.jsx)(n.code,{children:"nethermind_state_tree_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Trie cache hits."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_state_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Trie reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"state_tree_writes",children:(0,i.jsx)(n.code,{children:"nethermind_state_tree_writes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Blocks Trie writes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_reader_reads",children:(0,i.jsx)(n.code,{children:"nethermind_storage_reader_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage reader reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_tree_cache",children:(0,i.jsx)(n.code,{children:"nethermind_storage_tree_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie cache hits."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_storage_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"storage_tree_writes",children:(0,i.jsx)(n.code,{children:"nethermind_storage_tree_writes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie writes."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_code_db_cache",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_code_db_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Code DB cache reads on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_state_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_state_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of State Trie reads on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_storage_tree_reads",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_storage_tree_reads"})}),"\n",(0,i.jsx)(n.p,{children:"Number of storage trie reads on thread."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"evm",children:"Evm"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blockhash_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_blockhash_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLOCKHASH opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_g1_add_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_g1_add_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_G1ADD precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_g1_m_s_m_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_g1_m_s_m_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_G1MSM precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_g1_mul_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_g1_mul_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_G1MUL precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_g2_add_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_g2_add_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_G2ADD precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_g2_m_s_m_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_g2_m_s_m_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_G2MSM precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_g2_mul_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_g2_mul_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_G2MUL precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_map_fp2_to_g2_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_map_fp2_to_g2_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_MAP_FP2_TO_G2 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_map_fp_to_g1_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_map_fp_to_g1_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_MAP_FP_TO_G1 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bls_pairing_check_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bls_pairing_check_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BLS12_PAIRING_CHECK precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bn254_add_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bn254_add_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BN254_ADD precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bn254_mul_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bn254_mul_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BN254_MUL precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"bn254_pairing_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_bn254_pairing_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of BN254_PAIRING precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"calls",children:(0,i.jsx)(n.code,{children:"nethermind_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls to other contracts."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"contracts_analysed",children:(0,i.jsx)(n.code,{children:"nethermind_contracts_analysed"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contracts' code analysed for jump destinations."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"creates",children:(0,i.jsx)(n.code,{children:"nethermind_creates"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contract create calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ec_recover_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_ec_recover_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of EC_RECOVERY precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"empty_calls",children:(0,i.jsx)(n.code,{children:"nethermind_empty_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls made to addresses without code."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"evm_exceptions",children:(0,i.jsx)(n.code,{children:"nethermind_evm_exceptions"})}),"\n",(0,i.jsx)(n.p,{children:"Number of EVM exceptions thrown by contracts."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"exp_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_exp_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of EXP opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"m_copy_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_m_copy_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of MCOPY opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"mod_exp_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_mod_exp_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of MODEXP precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"point_evaluation_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_point_evaluation_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Point Evaluation precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"ripemd160_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_ripemd160_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of RIPEMD160 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"secp256r1_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_secp256r1_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Secp256r1 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"self_destructs",children:(0,i.jsx)(n.code,{children:"nethermind_self_destructs"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SELFDESTRUCT calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sha256_precompile",children:(0,i.jsx)(n.code,{children:"nethermind_sha256_precompile"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SHA256 precompile calls."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sload_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_sload_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SLOAD opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sstore_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_sstore_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SSTORE opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_calls",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls to other contracts on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_contracts_analysed",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_contracts_analysed"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contracts' code analysed for jump destinations on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_creates",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_creates"})}),"\n",(0,i.jsx)(n.p,{children:"Number of contract create calls on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_empty_calls",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_empty_calls"})}),"\n",(0,i.jsx)(n.p,{children:"Number of calls made to addresses without code on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_s_load_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_s_load_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SLOAD opcodes executed on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"thread_local_s_store_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_thread_local_s_store_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of SSTORE opcodes executed on thread."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tload_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_tload_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of TLOAD opcodes executed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tstore_opcode",children:(0,i.jsx)(n.code,{children:"nethermind_tstore_opcode"})}),"\n",(0,i.jsx)(n.p,{children:"Number of TSTORE opcodes executed."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"jsonrpc",children:"JsonRpc"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_bytes_received",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_bytes_received"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC bytes received."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_bytes_sent",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_bytes_sent"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC bytes sent."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_errors",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_errors"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests processed with errors."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_invalid_requests",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_invalid_requests"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests that were invalid."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_request_deserialization_failures",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_request_deserialization_failures"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests that failed JSON deserialization."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_requests",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_requests"})}),"\n",(0,i.jsx)(n.p,{children:"Total number of JSON RPC requests received by the node."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"json_rpc_successes",children:(0,i.jsx)(n.code,{children:"nethermind_json_rpc_successes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of JSON RPC requests processed successfully."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"merge",children:"Merge"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"forkchoice_upded_execution_time",children:(0,i.jsx)(n.code,{children:"nethermind_forkchoice_upded_execution_time"})}),"\n",(0,i.jsx)(n.p,{children:"ForkchoiceUpded request execution time"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"get_payload_requests",children:(0,i.jsx)(n.code,{children:"nethermind_get_payload_requests"})}),"\n",(0,i.jsx)(n.p,{children:"Number of GetPayload Requests"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"new_payload_execution_time",children:(0,i.jsx)(n.code,{children:"nethermind_new_payload_execution_time"})}),"\n",(0,i.jsx)(n.p,{children:"NewPayload request execution time"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"number_of_transactions_in_get_payload",children:(0,i.jsx)(n.code,{children:"nethermind_number_of_transactions_in_get_payload"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Transactions included in the Last GetPayload Request"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"network",children:"Network"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"handshakes",children:(0,i.jsx)(n.code,{children:"nethermind_handshakes"})}),"\n",(0,i.jsx)(n.p,{children:"Number of devp2p handshakes"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"handshake_timeouts",children:(0,i.jsx)(n.code,{children:"nethermind_handshake_timeouts"})}),"\n",(0,i.jsx)(n.p,{children:"Number of devp2p handshake timeouts"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"incoming_connections",children:(0,i.jsx)(n.code,{children:"nethermind_incoming_connections"})}),"\n",(0,i.jsx)(n.p,{children:"Number of incoming connection."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"incoming_p2_p_message_bytes",children:(0,i.jsx)(n.code,{children:"nethermind_incoming_p2_p_message_bytes"})}),"\n",(0,i.jsx)(n.p,{children:"Bytes of incoming p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"incoming_p2_p_messages",children:(0,i.jsx)(n.code,{children:"nethermind_incoming_p2_p_messages"})}),"\n",(0,i.jsx)(n.p,{children:"Number of incoming p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"local_disconnects_total",children:(0,i.jsx)(n.code,{children:"nethermind_local_disconnects_total"})}),"\n",(0,i.jsx)(n.p,{children:"Number of local disconnects"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"outgoing_connections",children:(0,i.jsx)(n.code,{children:"nethermind_outgoing_connections"})}),"\n",(0,i.jsx)(n.p,{children:"Number of outgoing connection."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"outgoing_p2_p_message_bytes",children:(0,i.jsx)(n.code,{children:"nethermind_outgoing_p2_p_message_bytes"})}),"\n",(0,i.jsx)(n.p,{children:"Bytes of outgoing p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"outgoing_p2_p_messages",children:(0,i.jsx)(n.code,{children:"nethermind_outgoing_p2_p_messages"})}),"\n",(0,i.jsx)(n.p,{children:"Number of outgoing p2p packets."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"peer_limit",children:(0,i.jsx)(n.code,{children:"nethermind_peer_limit"})}),"\n",(0,i.jsx)(n.p,{children:"The maximum number of peers this node allows to connect."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"remote_disconnects_total",children:(0,i.jsx)(n.code,{children:"nethermind_remote_disconnects_total"})}),"\n",(0,i.jsx)(n.p,{children:"Number of remote disconnects"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"pruning",children:"Pruning"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"cached_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_cached_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that are currently kept in cache (either persisted or not)"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"committed_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_committed_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been committed since the session start. These nodes may have been pruned, persisted or replaced."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"deep_pruned_persisted_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_deep_pruned_persisted_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been removed from the cache during deep pruning because they have been persisted before."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"deep_pruning_time",children:(0,i.jsx)(n.code,{children:"nethermind_deep_pruning_time"})}),"\n",(0,i.jsx)(n.p,{children:"Time taken by the last deep pruning."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"last_persisted_block_number",children:(0,i.jsx)(n.code,{children:"nethermind_last_persisted_block_number"})}),"\n",(0,i.jsx)(n.p,{children:"Last persisted block number (snapshot)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loaded_from_cache_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_loaded_from_cache_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reads from the node cache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loaded_from_db_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_loaded_from_db_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of DB reads."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"loaded_from_rlp_cache_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_loaded_from_rlp_cache_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of reads from the RLP cache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"memory_used_by_cache",children:(0,i.jsx)(n.code,{children:"nethermind_memory_used_by_cache"})}),"\n",(0,i.jsx)(n.p,{children:"Estimated memory used by cache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"persisted_node_count",children:(0,i.jsx)(n.code,{children:"nethermind_persisted_node_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been persisted since the session start."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruned_persisted_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_pruned_persisted_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they have been persisted before."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruned_transient_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_pruned_transient_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they were no longer needed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pruning_time",children:(0,i.jsx)(n.code,{children:"nethermind_pruning_time"})}),"\n",(0,i.jsx)(n.p,{children:"Time taken by the last pruning."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"removed_node_count",children:(0,i.jsx)(n.code,{children:"nethermind_removed_node_count"})}),"\n",(0,i.jsx)(n.p,{children:"Nodes that was removed via live pruning."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"replaced_nodes_count",children:(0,i.jsx)(n.code,{children:"nethermind_replaced_nodes_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of nodes that have been exactly the same as other nodes in the cache when committing."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"snapshot_persistence_time",children:(0,i.jsx)(n.code,{children:"nethermind_snapshot_persistence_time"})}),"\n",(0,i.jsx)(n.p,{children:"Time taken by the last snapshot persistence."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"runner",children:"Runner"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"version",children:(0,i.jsx)(n.code,{children:"nethermind_version"})}),"\n",(0,i.jsx)(n.p,{children:"Version number"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"shutter",children:"Shutter"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_bad_transactions",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_bad_transactions"})}),"\n",(0,i.jsx)(n.p,{children:"Number of invalid transactions that could not be included."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_encrypted_gas_used",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_encrypted_gas_used"})}),"\n",(0,i.jsx)(n.p,{children:"Amount of encrypted gas used."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_eon",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_eon"})}),"\n",(0,i.jsx)(n.p,{children:"Eon of the latest block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_keypers",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_keypers"})}),"\n",(0,i.jsx)(n.p,{children:"Size of keyper set in current eon."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_keys_missed",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_keys_missed"})}),"\n",(0,i.jsx)(n.p,{children:"Number of keys not received."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_keys_received_time_offset",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_keys_received_time_offset"})}),"\n",(0,i.jsx)(n.p,{children:"Relative time offset (ms) from slot boundary that keys were received."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_threshold",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_threshold"})}),"\n",(0,i.jsx)(n.p,{children:"Number of keypers assumed to be honest and online for current eon."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_transactions",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_transactions"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions included."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"shutter_tx_pointer",children:(0,i.jsx)(n.code,{children:"nethermind_shutter_tx_pointer"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions since Shutter genesis."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"synchronization",children:"Synchronization"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"sync_peers",children:(0,i.jsx)(n.code,{children:"nethermind_sync_peers"})}),"\n",(0,i.jsx)(n.p,{children:"Number of sync peers."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"trie",children:"Trie"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tree_node_hash_calculations",children:(0,i.jsx)(n.code,{children:"nethermind_tree_node_hash_calculations"})}),"\n",(0,i.jsx)(n.p,{children:"Number of trie node hash calculations."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tree_node_rlp_decodings",children:(0,i.jsx)(n.code,{children:"nethermind_tree_node_rlp_decodings"})}),"\n",(0,i.jsx)(n.p,{children:"Number of trie node RLP decodings."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"tree_node_rlp_encodings",children:(0,i.jsx)(n.code,{children:"nethermind_tree_node_rlp_encodings"})}),"\n",(0,i.jsx)(n.p,{children:"Number of trie node RLP encodings."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"txpool",children:"TxPool"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blobs_in_block",children:(0,i.jsx)(n.code,{children:"nethermind_blobs_in_block"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blobs in the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blob_transaction_count",children:(0,i.jsx)(n.code,{children:"nethermind_blob_transaction_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blob transactions in pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"blob_transactions_in_block",children:(0,i.jsx)(n.code,{children:"nethermind_blob_transactions_in_block"})}),"\n",(0,i.jsx)(n.p,{children:"Number of blob transactions in the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"dark_pool_ratio_level1",children:(0,i.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level1"})}),"\n",(0,i.jsx)(n.p,{children:"Ratio of transactions in the block absent in hashCache."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"dark_pool_ratio_level2",children:(0,i.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level2"})}),"\n",(0,i.jsx)(n.p,{children:"Ratio of transactions in the block absent in pending transactions."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"eip1559_transactions_ratio",children:(0,i.jsx)(n.code,{children:"nethermind_eip1559_transactions_ratio"})}),"\n",(0,i.jsx)(n.p,{children:"Ratio of 1559-type transactions in the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending1559_transactions_added",children:(0,i.jsx)(n.code,{children:"nethermind_pending1559_transactions_added"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending 1559-type transactions added to transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_blob_transactions_added",children:(0,i.jsx)(n.code,{children:"nethermind_pending_blob_transactions_added"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending blob-type transactions added to transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_added",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_added"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions added to transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_balance_below_value",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_balance_below_value"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is less than txn value."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_conflicting_tx_type",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_conflicting_tx_type"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions rejected because of already pending tx of other type (allowed blob txs or others, not both at once)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_discarded",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_discarded"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_evicted",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_evicted"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions evicted from transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_gas_limit_too_high",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_gas_limit_too_high"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the gas limit was to high for the block."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_hashes_received",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_received"})}),"\n",(0,i.jsx)(n.p,{children:"Number of hashes of pending transactions received from peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_hashes_sent",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_sent"})}),"\n",(0,i.jsx)(n.p,{children:"Number of hashes of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_known",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_known"})}),"\n",(0,i.jsx)(n.p,{children:"Number of already known pending transactions."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_low_nonce",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_low_nonce"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions with already used nonce."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_malformed",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_malformed"})}),"\n",(0,i.jsx)(n.p,{children:"Number of malformed transactions."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_nonce_gap",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_gap"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not having preceding nonce of this sender in TxPool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_nonce_too_far_in_future",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_too_far_in_future"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions with nonce too far in future."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_not_supported_tx_type",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_not_supported_tx_type"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not supported transaction type."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_passed_filters_but_cannot_compete_on_fees",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored after passing early rejections as balance is too low to compete with lowest effective fee in transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_passed_filters_but_cannot_replace",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_replace"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were trying to replace tx with the same sender and nonce and failed."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_received",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_received"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received from peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_sent",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_sent"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_too_low_balance",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_balance"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance too low for fee to be higher than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_too_low_fee",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_fee"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of fee lower than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_too_low_priority_fee",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_priority_fee"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of priority fee lower than minimal requirement."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_unresolvable_sender",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_unresolvable_sender"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the sender couldn't be resolved."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_with_expensive_filtering",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_with_expensive_filtering"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions that reached filters which are resource expensive"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"pending_transactions_zero_balance",children:(0,i.jsx)(n.code,{children:"nethermind_pending_transactions_zero_balance"})}),"\n",(0,i.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is zero and cannot pay gas."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.h4,{id:"transaction_count",children:(0,i.jsx)(n.code,{children:"nethermind_transaction_count"})}),"\n",(0,i.jsx)(n.p,{children:"Number of transactions in pool."}),"\n"]}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(_,{...e})}):_(e)}},8453:(e,n,d)=>{d.d(n,{R:()=>c,x:()=>l});var i=d(6540);const s={},r=i.createContext(s);function c(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f08d67b7.59ff3441.js b/assets/js/f08d67b7.3d5be142.js similarity index 99% rename from assets/js/f08d67b7.59ff3441.js rename to assets/js/f08d67b7.3d5be142.js index 844a1430f..c6927c59f 100644 --- a/assets/js/f08d67b7.59ff3441.js +++ b/assets/js/f08d67b7.3d5be142.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9893],{5793:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>a,frontMatter:()=>i,metadata:()=>r,toc:()=>h});var l=s(4848),c=s(8453);const i={title:"Configuration",sidebar_position:1,toc_max_heading_level:4},d=void 0,r={id:"fundamentals/configuration",title:"Configuration",description:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:",source:"@site/versioned_docs/version-1.26.0/fundamentals/configuration.md",sourceDirName:"fundamentals",slug:"/fundamentals/configuration",permalink:"/1.26.0/fundamentals/configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/configuration.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Configuration",sidebar_position:1,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"Migrating from Geth",permalink:"/1.26.0/get-started/migrating-from-geth"},next:{title:"Sync",permalink:"/1.26.0/fundamentals/sync"}},o={},h=[{value:"Command line options",id:"command-line-options",level:2},{value:"Basic options",id:"basic-options",level:3},{value:"Options by namespaces",id:"options-by-namespaces",level:3},{value:"Aura",id:"aura",level:4},{value:"Blocks",id:"blocks",level:4},{value:"Bloom",id:"bloom",level:4},{value:"EthStats",id:"ethstats",level:4},{value:"HealthChecks",id:"healthchecks",level:4},{value:"Hive",id:"hive",level:4},{value:"Init",id:"init",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"KeyStore",id:"keystore",level:4},{value:"Merge",id:"merge",level:4},{value:"Metrics",id:"metrics",level:4},{value:"Mining",id:"mining",level:4},{value:"Network",id:"network",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Receipt",id:"receipt",level:4},{value:"Seq",id:"seq",level:4},{value:"Snapshot",id:"snapshot",level:4},{value:"Sync",id:"sync",level:4},{value:"TraceStore",id:"tracestore",level:4},{value:"TxPool",id:"txpool",level:4},{value:"Wallet",id:"wallet",level:4},{value:"Environment variables",id:"environment-variables",level:2},{value:"Configuration file",id:"configuration-file",level:2}];function t(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,c.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.p,{children:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"#command-line-options",children:"Command line options"})," (aka arguments or flags)"]}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#environment-variables",children:"Environment variables"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#configuration-file",children:"Configuration file"})}),"\n"]}),"\n",(0,l.jsx)(n.admonition,{type:"note",children:(0,l.jsx)(n.p,{children:"Given the above priority list, an option defined in a more priority way overrides the same option defined elsewhere if any."})}),"\n",(0,l.jsx)(n.h2,{id:"command-line-options",children:"Command line options"}),"\n",(0,l.jsx)(n.p,{children:"The full list of command line options can be displayed by running:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,l.jsx)(n.p,{children:"Below is the list of the basic options followed by an exhaustive list of options by namespace."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsx)(n.p,{children:"The command line options are case-sensitive and can be defined only once unless stated otherwise."})}),"\n",(0,l.jsx)(n.h3,{id:"basic-options",children:"Basic options"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-d, --baseDbPath "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind database directory. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-c, --config "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the ",(0,l.jsx)(n.a,{href:"#configuration-file",children:"configuration file"})," or the name (without extension) of any of the configuration files in the configuration directory. Defaults to ",(0,l.jsx)(n.code,{children:"mainnet"}),"."]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{children:"Available configurations"}),(0,l.jsxs)("p",{children:[(0,l.jsxs)(n.p,{children:["Nethermind provides the following pre-built configurations named as the networks they are for. Their respective versions for archive nodes are suffixed ",(0,l.jsx)(n.code,{children:"_archive"}),"."]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-mainnet"})," ",(0,l.jsx)(n.code,{children:"base-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-sepolia"})," ",(0,l.jsx)(n.code,{children:"base-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chiado"})," ",(0,l.jsx)(n.code,{children:"chiado_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"energyweb"})," ",(0,l.jsx)(n.code,{children:"energyweb_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gnosis"})," ",(0,l.jsx)(n.code,{children:"gnosis_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"holesky"})," ",(0,l.jsx)(n.code,{children:"holesky_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mainnet"})," ",(0,l.jsx)(n.code,{children:"mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-mainnet"})," ",(0,l.jsx)(n.code,{children:"op-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-sepolia"})," ",(0,l.jsx)(n.code,{children:"op-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sepolia"})," ",(0,l.jsx)(n.code,{children:"sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"volta"})," ",(0,l.jsx)(n.code,{children:"volta_archive"})]}),"\n"]})]})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-cd, --configsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the configuration files directory. Defaults to ",(0,l.jsx)(n.code,{children:"configs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-dd, --datadir "})})}),"\n",(0,l.jsx)(n.p,{children:"The path to the Nethermind data directory. Defaults to Nethermind's current directory."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsxs)(n.p,{children:["The absolute paths set by ",(0,l.jsx)(n.code,{children:"Init.BaseDbPath"}),", ",(0,l.jsx)(n.code,{children:"Init.LogDirectory"}),", or ",(0,l.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})," options in a configuration file are not overridden by ",(0,l.jsx)(n.code,{children:"--datadir"}),"."]})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-?, -h, --help"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the full list of available command line options."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-l, --log "})})}),"\n",(0,l.jsxs)(n.p,{children:["Log level (severity). Allowed values: ",(0,l.jsx)(n.code,{children:"TRACE"})," ",(0,l.jsx)(n.code,{children:"DEBUG"})," ",(0,l.jsx)(n.code,{children:"INFO"})," ",(0,l.jsx)(n.code,{children:"WARN"})," ",(0,l.jsx)(n.code,{children:"ERROR"})," ",(0,l.jsx)(n.code,{children:"OFF"}),". Defaults to ",(0,l.jsx)(n.code,{children:"INFO"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-lcs, --loggerConfigSource "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the NLog configuration file. Defaults to ",(0,l.jsx)(n.code,{children:"NLog.config"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-pd, --pluginsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind plugins directory. Defaults to ",(0,l.jsx)(n.code,{children:"plugins"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-v, --version"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the Nethermind version info."}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"options-by-namespaces",children:"Options by namespaces"}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"aura",children:"Aura"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.AllowAuRaPrivateChains "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_ALLOWAURAPRIVATECHAINS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to allow private Aura-based chains only. Do not use with existing Aura-based chains. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.ForceSealing "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_FORCESEALING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal empty blocks if mining. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_MINIMUM2MLNGASPERBLOCKWHENUSINGBLOCKGASLIMITCONTRACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use 2M gas if the contract returns less than that when using ",(0,l.jsx)(n.code,{children:"BlockGasLimitContractTransitions"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityConfigFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONFIGFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the transaction priority rules file to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityContractAddress "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONTRACTADDRESS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The address of the transaction priority contract to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"blocks",children:"Blocks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.ExtraData "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_EXTRADATA"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block header extra data up to 32 bytes in length. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.MinGasPrice "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_MINGASPRICE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum gas premium (or the gas price before the London hard fork) for transactions accepted by the block producer. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.RandomizedBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_RANDOMIZEDBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to change the difficulty of the block randomly within the constraints. Used in NethDev only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.SecondsPerSlot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_SECONDSPERSLOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block time slot, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"12"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.TargetBlockGasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_TARGETBLOCKGASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block gas limit that the block producer should try to reach in the fastest possible way based on the protocol rules. If not specified, then the block producer should follow others. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"bloom",children:"Bloom"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Index "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Bloom index. The Bloom index speeds up the RPC log searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.IndexLevelBucketSizes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEXLEVELBUCKETSIZES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of multipliers for index levels. Can be tweaked per chain to boost performance. Defaults to ",(0,l.jsx)(n.code,{children:"[4, 8, 8]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Migration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the previously downloaded blocks to the Bloom index. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.MigrationStatistics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATIONSTATISTICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether the migration statistics should be calculated and output. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"ethstats",children:"EthStats"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Contact "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_CONTACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node owner contact details displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"hello@nethermind.io"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use Ethstats publishing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Name "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_NAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node name displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Secret "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SECRET"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats secret. Defaults to ",(0,l.jsx)(n.code,{children:"secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.SendInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SENDINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The stats update interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"15"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Server "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SERVER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats server URL. Defaults to ",(0,l.jsx)(n.code,{children:"ws://localhost:3000/api"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"healthchecks",children:"HealthChecks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageCheckAwaitOnStartup "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGECHECKAWAITONSTARTUP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to check for low disk space on startup and suspend until enough space is available. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACESHUTDOWNTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which Nethermind shuts down. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACEWARNINGTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which a warning is displayed. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalClRequestTime "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALCLREQUESTTIME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max request interval, in seconds, in which the consensus client is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProcessedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPROCESSEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block processing is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProducedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPRODUCEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block production is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.PollingInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_POLLINGINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The health check updates polling interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Slug "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_SLUG"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL slug the health checks service is exposed at. Defaults to ",(0,l.jsx)(n.code,{children:"/health"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.UIEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_UIENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health checks UI. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable web hooks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksPayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on failure.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#FFCC00",\n "pretext": "Health Check Status :warning:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "Description",\n "value": "[[DESCRIPTIONS]]",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksRestorePayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSRESTOREPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on recovery.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#36a64f",\n "pretext": "Health Check Status :+1:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "description",\n "value": "The HealthCheck `[[LIVENESS]]` is recovered. Everything is up and running.",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksUri "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSURI"})]}),"\n",(0,l.jsxs)(n.p,{children:["The web hook URL. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"hive",children:"Hive"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.BlocksDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_BLOCKSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory with additional blocks. Defaults to ",(0,l.jsx)(n.code,{children:"/blocks"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.ChainFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_CHAINFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the test chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"/chain.rlp"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable Hive for debugging. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.GenesisFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_GENESISFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the genesis block file. Defaults to ",(0,l.jsx)(n.code,{children:"/genesis.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.KeysDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_KEYSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"/keys"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"init",children:"Init"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.AutoDump "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_AUTODUMP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Auto-dump on bad blocks for diagnostics. ",(0,l.jsx)(n.code,{children:"Default"})," combines ",(0,l.jsx)(n.code,{children:"Receipts"})," and ",(0,l.jsx)(n.code,{children:"Rlp"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Receipts"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Geth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rlp"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RlpLog"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Default"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BadBlocksStored "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BADBLOCKSSTORED"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum number of bad blocks observed on the network that will be stored on disk. Defaults to ",(0,l.jsx)(n.code,{children:"100"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BaseDbPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BASEDBPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The base path for all Nethermind databases. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_CHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/foundation.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiagnosticMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DIAGNOSTICMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"MemDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RpcDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ReadOnlyDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyRewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifySupply"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyTrie"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiscoveryEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DISCOVERYENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the node discovery. If disabled, Nethermind doesn't look for other nodes beyond the bootnodes specified. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.EnableUnsecuredDevWallet "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ENABLEUNSECUREDDEVWALLET"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the in-app wallet/keystore. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.GenesisHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_GENESISHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the genesis block. If not specified, the genesis block validity is not checked which is useful in the case of ad hoc test/private networks. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.HiveChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_HIVECHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file for Hive tests. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/test.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.IsMining "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ISMINING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal/mine new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KeepDevWalletInMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KEEPDEVWALLETINMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to create session-only accounts and delete them on shutdown. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KzgSetupPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KZGSETUPPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to KZG trusted setup file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind logs directory. Defaults to ",(0,l.jsx)(n.code,{children:"logs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the log file. Defaults to ",(0,l.jsx)(n.code,{children:"log.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogRules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGRULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The logs format as ",(0,l.jsx)(n.code,{children:"LogPath:LogLevel;*"})," Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.MemoryHint "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_MEMORYHINT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hint on the max memory limit, in bytes, to configure the database and networking memory allocations. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.PeerManagerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PEERMANAGERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to newly discovered peers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ProcessingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PROCESSINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download/process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.RpcDbUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_RPCDBURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the remote node used as a database source when ",(0,l.jsx)(n.code,{children:"DiagnosticMode"})," is set to ",(0,l.jsx)(n.code,{children:"RpcDb"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.StaticNodesPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_STATICNODESPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the static nodes file. Defaults to ",(0,l.jsx)(n.code,{children:"Data/static-nodes.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.WebSocketsEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_WEBSOCKETSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable WebSocket service for the default JSON-RPC port on startup. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ADDITIONALRPCURLS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list. For instance, ",(0,l.jsx)(n.code,{children:"[http://localhost:8546|http;ws|eth;web3]"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.BufferResponses "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_BUFFERRESPONSES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to buffer responses before sending them. This allows using of ",(0,l.jsx)(n.code,{children:"Content-Length"})," instead of ",(0,l.jsx)(n.code,{children:"Transfer-Encoding: chunked"}),". Note that it may degrade performance on large responses. The max buffered response length is 2GB. Chunked responses can be larger. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.CallsFilterFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_CALLSFILTERFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to a file with the list of new-line-separated JSON-RPC calls. If specified, only the calls from that file are allowed. Defaults to ",(0,l.jsx)(n.code,{children:"Data/jsonrpc.filter"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the JSON-RPC service. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of JSON-RPC namespaces to enable. For instance, ",(0,l.jsx)(n.code,{children:"[debug,eth]"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Built-in namespaces:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"admin"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"client"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"debug"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"engine"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"evm"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"health"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"net"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"personal"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"proof"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"rpc"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"subscribe"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"txpool"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"web3"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"[Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health,Rpc]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineEnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list for Engine API. Defaults to ",(0,l.jsx)(n.code,{children:"[Net,Eth,Subscribe,Web3]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnginePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API port. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EthModuleConcurrentInstances "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ETHMODULECONCURRENTINSTANCES"})]}),"\n",(0,l.jsx)(n.p,{children:"The number of concurrent instances for non-sharable calls:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"This limits the load on the CPU and I/O to reasonable levels. If the limit is exceeded, HTTP 503 is returned along with the JSON-RPC error. Defaults to the number of logical processors."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.GasCap "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_GASCAP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The gas limit for ",(0,l.jsx)(n.code,{children:"eth_call"})," and ",(0,l.jsx)(n.code,{children:"eth_estimateGas"}),". Defaults to ",(0,l.jsx)(n.code,{children:"100000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Host "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_HOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_IPCUNIXDOMAINSOCKETPATH"})]}),"\n",(0,l.jsx)(n.p,{children:"The path to connect a UNIX domain socket over."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the JWT secret file required for the Engine API authentication. Defaults to ",(0,l.jsx)(n.code,{children:"keystore/jwt-secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchResponseBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHRESPONSEBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max batch size limit for batched JSON-RPC calls. Defaults to ",(0,l.jsx)(n.code,{children:"33554432"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of JSON-RPC requests in a batch. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxLoggedRequestParametersCharacters "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGGEDREQUESTPARAMETERSCHARACTERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of characters of a JSON-RPC request parameter printing to the log. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxRequestBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXREQUESTBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max length of HTTP request body, in bytes. Defaults to ",(0,l.jsx)(n.code,{children:"30000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MethodsLoggingFiltering "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_METHODSLOGGINGFILTERING"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of the method names not to log. Defaults to ",(0,l.jsx)(n.code,{children:"[engine_newPayloadV1,engine_newPayloadV2,engine_newPayloadV3,engine_forkchoiceUpdatedV1,engine_forkchoiceUpdatedV2]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Port "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_PORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service HTTP port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.ReportIntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REPORTINTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The interval, in seconds, between the JSON-RPC stats report log. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RequestQueueLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REQUESTQUEUELIMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of concurrent requests in the queue for:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"500"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderBaseFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERBASEFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the base file for diagnostic recording. Defaults to ",(0,l.jsx)(n.code,{children:"logs/rpc.{counter}.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderState "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERSTATE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic recording mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Request"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Response"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Timeout "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_TIMEOUT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The request timeout, in milliseconds. Defaults to ",(0,l.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_WEBSOCKETSPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service WebSockets port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"keystore",children:"KeyStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.BlockAuthorAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_BLOCKAUTHORACCOUNT"})]}),"\n",(0,l.jsx)(n.p,{children:"An account to use as the block author (coinbase)."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Cipher "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_CIPHER"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"aes-128-ctr"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEACCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["An account to use for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeKeyFile"})," option is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeKeyFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEKEYFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the key file to use by for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeAccount"})," is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.IVSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_IVSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Kdf "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDF"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"scrypt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsDklen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSDKLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsN "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"262144"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSP"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsR "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSR"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsSaltLen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSSALTLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"keystore"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreEncoding "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREENCODING"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"UTF-8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.PasswordFiles "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDFILES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of password files paths used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Passwords "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of passwords used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterBlockSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERBLOCKSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterKeySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERKEYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.TestNodeKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_TESTNODEKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"A plaintext private key to use for testing purposes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.UnlockAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_UNLOCKACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of accounts to unlock on startup using passwords either in ",(0,l.jsx)(n.code,{children:"PasswordFiles"})," and ",(0,l.jsx)(n.code,{children:"Passwords"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"merge",children:"Merge"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.BuilderRelayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_BUILDERRELAYURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of a builder relay. If specified, blocks are sent to the relay. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CollectionsPerDecommit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COLLECTIONSPERDECOMMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"Request the garbage collector (GC) to release the process memory."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to disable"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to release every time"]}),"\n",(0,l.jsx)(n.li,{children:"A positive number to release memory after that many Engine API calls"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"25"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CompactMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COMPACTMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory compaction mode. When set to ",(0,l.jsx)(n.code,{children:"Full"}),", compacts the large object heap (LOH) if ",(0,l.jsx)(n.code,{children:"SweepMemory"})," is set to ",(0,l.jsx)(n.code,{children:"Gen2"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"No"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Yes"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Yes"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Merge hard fork. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.FinalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_FINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the last PoW block. Must be greater than or equal to the terminal total difficulty (TTD). Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.PrioritizeBlockLatency "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_PRIORITIZEBLOCKLATENCY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to reduce block latency by disabling garbage collection during Engine API calls. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.SweepMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_SWEEPMEMORY"})]}),"\n",(0,l.jsx)(n.p,{children:"The garbage collection (GC) mode between Engine API calls."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"NoGC"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen0"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen1"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen2"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Gen1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal PoW block hash used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKNUMBER"})]}),"\n",(0,l.jsx)(n.p,{children:"The terminal PoW block number used for the transition."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal total difficulty (TTD) used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"metrics",children:"Metrics"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.CountersEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_COUNTERSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish metrics using .NET diagnostics that can be collected with dotnet-counters. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish various metrics to Prometheus Pushgateway at a given interval. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.EnableDbSizeMetrics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLEDBSIZEMETRICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish database size metrics. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposeHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The IP address to expose Prometheus metrics at. The value of ",(0,l.jsx)(n.code,{children:"+"})," means listening on all available hostnames. Setting this to ",(0,l.jsx)(n.code,{children:"localhost"})," prevents remote access. Defaults to ",(0,l.jsx)(n.code,{children:"+"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The port to expose Prometheus metrics at. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.IntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_INTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The frequency of pushing metrics to Prometheus, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.NodeName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_NODENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name to display on the Grafana dashboard. Defaults to ",(0,l.jsx)(n.code,{children:'"Nethermind"'}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.PushGatewayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_PUSHGATEWAYURL"})]}),"\n",(0,l.jsx)(n.p,{children:"The Prometheus Pushgateway instance URL."}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"mining",children:"Mining"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Mining.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to produce blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"network",children:"Network"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.Bootnodes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_BOOTNODES"})]}),"\n",(0,l.jsx)(n.p,{children:"A comma-separated enode list to be used as boot nodes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiagTracerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DIAGTRACERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable a verbose diagnostic tracing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryDns "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYDNS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Use tree is available through a DNS name. For the default of ",(0,l.jsx)(n.code,{children:".ethdisco.net"}),", leave unspecified. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The UDP port number for incoming discovery connections. It's recommended to keep it the same as the TCP port (",(0,l.jsx)(n.code,{children:"P2PPort"}),") because other values have not been tested yet. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.EnableUPnP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ENABLEUPNP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable automatic port forwarding via UPnP. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.ExternalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_EXTERNALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The external IP. Use only when the external IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.LocalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_LOCALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The local IP. Use only when the local IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxActivePeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max allowed number of connected peers. Defaults to ",(0,l.jsx)(n.code,{children:"50"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxNettyArenaCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXNETTYARENACOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum DotNetty arena count. Increasing this on a high-core CPU without increasing the memory budget may reduce chunk size so much that it causes a huge memory allocation. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.NettyArenaOrder "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_NETTYARENAORDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The size of the DotNetty arena order. ",(0,l.jsx)(n.code,{children:"-1"})," to depend on the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.OnlyStaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ONLYSTATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use static peers only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.P2PPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_P2PPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The TCP port for incoming P2P connections. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.PriorityPeersMaxCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_PRIORITYPEERSMAXCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of priority peers. Can be overridden by a plugin. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.StaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_STATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["A list of peers to keep connection for. Static peers are affected by ",(0,l.jsx)(n.code,{children:"MaxActivePeers"}),". Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"pruning",children:"Pruning"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.AvailableSpaceCheckEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_AVAILABLESPACECHECKENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enables available disk space check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.CacheMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_CACHEMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The in-memory cache size, in MB. The bigger the cache size, the bigger the disk space savings. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningCompletionBehavior "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGCOMPLETIONBEHAVIOR"})]}),"\n",(0,l.jsx)(n.p,{children:"The behavior after pruning completion:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": Do nothing."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Shut Nethermind down if pruning has succeeded but leave it running if failed."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"AlwaysShutdown"}),": Shut Nethermind down when pruning completes, regardless of its status."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AlwaysShutdown"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningDisableLowPriorityWrites "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGDISABLELOWPRIORITYWRITES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable low-priority for pruning writes. Full pruning uses low-priority write operations to prevent blocking block processing. If block processing is not high-priority, set this option to ",(0,l.jsx)(n.code,{children:"true"})," for faster pruning. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMaxDegreeOfParallelism "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMAXDEGREEOFPARALLELISM"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of parallel tasks that can be used by full pruning:"}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to use the number of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to use 25% of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"1"})," to run on single thread"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"The recommended value depends on the type of the node:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["If the node needs to be responsive (serves for RPC or validator), then the recommended value is ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have many other responsibilities but needs to be able to follow the chain reliably without any delays and produce live logs, the ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"1"})," is recommended."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have to be responsive, has very fast I/O (like NVMe) and the shortest pruning time is to be achieved, then ",(0,l.jsx)(n.code,{children:"-1"})," is recommended. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMemoryBudgetMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMEMORYBUDGETMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory budget, in MB, used for the trie visit. Increasing this value significantly reduces the IOPS requirement at the expense of memory usage. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMinimumDelayHours "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMINIMUMDELAYHOURS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum delay, in hours, between full pruning operations not to exhaust disk writes. Defaults to ",(0,l.jsx)(n.code,{children:"240"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningThresholdMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTHRESHOLDMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The threshold, in MB, to trigger full pruning. Depends on ",(0,l.jsx)(n.code,{children:"Mode"})," and ",(0,l.jsx)(n.code,{children:"FullPruningTrigger"}),". Defaults to ",(0,l.jsx)(n.code,{children:"256000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningTrigger "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTRIGGER"})]}),"\n",(0,l.jsx)(n.p,{children:"The full pruning trigger:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Manual"}),": Triggered manually."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StateDbSize"}),": Trigger when the state DB size is above the threshold."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"VolumeFreeSpace"}),": Trigger when the free disk space where the state DB is stored is below the threshold."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Manual"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDbSize"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VolumeFreeSpace"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Manual"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.Mode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_MODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The pruning mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": No pruning (full archive)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Memory"}),": In-memory pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Full"}),": Full pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Hybrid"}),": Combined in-memory and full pruning"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Memory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Hybrid"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Hybrid"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.PersistenceInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PERSISTENCEINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block persistence frequency. If set to ",(0,l.jsx)(n.code,{children:"N"}),", it caches after each ",(0,l.jsx)(n.code,{children:"Nth"})," block even if not required by cache memory usage. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.PruningBoundary "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PRUNINGBOUNDARY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Past N state before state gets pruned Used to determine how old of a state to keep from the head. Defaults to ",(0,l.jsx)(n.code,{children:"64"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.TrackedPastKeyCountMemoryRatio "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_TRACKEDPASTKEYCOUNTMEMORYRATIO"})]}),"\n",(0,l.jsxs)(n.p,{children:["[TECHNICAL] Ratio of memory out of CacheMb to allocate for LRU used to track past keys for live pruning. Defaults to ",(0,l.jsx)(n.code,{children:"0.1"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"receipt",children:"Receipt"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactReceiptStore "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTRECEIPTSTORE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactTxIndex "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTTXINDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts transaction index database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.ReceiptsMigration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_RECEIPTSMIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the receipts database to the new schema. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.StoreReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_STORERECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to store receipts after a new block is processed. This setting is independent from downloading receipts in fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.TxLookupLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_TXLOOKUPLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of recent blocks to maintain transaction index for. ",(0,l.jsx)(n.code,{children:"0"})," to never remove indices, ",(0,l.jsx)(n.code,{children:"-1"})," to never index. Defaults to ",(0,l.jsx)(n.code,{children:"2350000"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"seq",children:"Seq"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ApiKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_APIKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"The Seq API key."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.MinLevel "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_MINLEVEL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The min log level to sent to Seq. Defaults to ",(0,l.jsx)(n.code,{children:"Off"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ServerUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_SERVERURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Seq instance URL. Defaults to ",(0,l.jsx)(n.code,{children:"http://localhost:5341"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"snapshot",children:"Snapshot"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Checksum "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_CHECKSUM"})]}),"\n",(0,l.jsxs)(n.p,{children:["The SHA-256 checksum of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.DownloadUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_DOWNLOADURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Snapshot plugin. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory to store the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot.zip"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"sync",children:"Sync"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientBodiesBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The earliest body downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, AncientBodiesBarrier } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientReceiptsBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The earliest receipt downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as folows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, max{ AncientBodiesBarrier, AncientReceiptsBarrier } } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.BlocksDbTuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_BLOCKSDBTUNEDBMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"Configure the blocks database for write optimizations during sync."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"EnableBlobFiles"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the block bodies in the Fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadHeadersInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADHEADERSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the old block headers in the Fast sync mode. If ",(0,l.jsx)(n.code,{children:"false"}),", Nethermind downloads only recent blocks headers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadReceiptsInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download receipts in the Fast sync mode. This slows down the process by a few hours but allows to interact with dApps that perform extensive historical logs searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSynced "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to shut down Nethermind once sync is finished. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSyncedWaitTimeSec "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCEDWAITTIMESEC"})]}),"\n",(0,l.jsxs)(n.p,{children:["The time, in seconds, to wait before shutting down Nethermind once sync is finished. Defaults to ",(0,l.jsx)(n.code,{children:"60"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Fast sync mode (the eth/63 synchronization algorithm). Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSyncCatchUpHeightDelta "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNCCATCHUPHEIGHTDELTA"})]}),"\n",(0,l.jsxs)(n.p,{children:["In Fast sync mode, the min height threshold limit up to which the Full sync, if already on, stays on when the chain is behind the network head. If the limit is exceeded, it switches back to Fast sync. For regular usage scenarios, setting this value lower than 32 is not recommended as this can cause issues with chain reorgs. Note that the last 2 blocks are always processed in Full sync, so setting it lower than 2 has no effect. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXRECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable receipts validation that checks for receipts that might be missing because of a bug. If needed, receipts are downloaded from the network. If ",(0,l.jsx)(n.code,{children:"true"}),", the pivot number must be same one used originally as it's used as a cut-off point. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to recalculate the total difficulty from ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyStartingBlock"})," to ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyLastBlock"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyLastBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYLASTBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The last block to recalculate the total difficulty for. If not specified, the best known block is used.\nDefaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyStartingBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYSTARTINGBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The first block to recalculate the total difficulty for. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxAttemptsToUpdatePivot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXATTEMPTSTOUPDATEPIVOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of attempts to update the pivot block based on the FCU message from the consensus client. Defaults to ",(0,l.jsx)(n.code,{children:"2147483647"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxProcessingThreads "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXPROCESSINGTHREADS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of threads used for syncing. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NetworkingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NETWORKINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to peers and sync. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NonValidatorNode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NONVALIDATORNODE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to operate as a non-validator. If ",(0,l.jsx)(n.code,{children:"true"}),", the ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," and ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," can be set to ",(0,l.jsx)(n.code,{children:"false"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTNUMBER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Snap sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSyncAccountRangePartitionCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNCACCOUNTRANGEPARTITIONCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of account range partitions to create. Increases the Snap sync request concurrency. Allowed values are between between 1 and 256. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.StrictMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_STRICTMODE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable some optimizations and do a more extensive sync. Useful when sync state is corrupted. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SynchronizationEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SYNCHRONIZATIONENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download and process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.TuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_TUNEDBMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"Configure the database for write optimizations during sync. Significantly reduces the total number of writes and sync time if you are not network limited."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"HeavyWrite"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.UseGethLimitsInFastBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to make smaller requests, in Fast Blocks mode, to avoid Geth from disconnecting. On the Geth-heavy networks (e.g., Mainnet), it's a desired behavior while on Nethermind- or OpenEthereum-heavy networks (Goerli, Aura), it slows down the sync by a factor of ~4. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.WitnessProtocolEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_WITNESSPROTOCOLENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Witness protocol. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"tracestore",children:"TraceStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.BlocksToKeep "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_BLOCKSTOKEEP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of blocks to store, counting from the head. If ",(0,l.jsx)(n.code,{children:"0"}),", all traces of the processed blocks are stored. Defaults to ",(0,l.jsx)(n.code,{children:"10000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.DeserializationParallelization "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_DESERIALIZATIONPARALLELIZATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max parallelization when deserialization requests the ",(0,l.jsx)(n.code,{children:"trace_filter"})," method. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. If you experience a resource shortage, set to a low number. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the TraceStore plugin. If enabled, traces come from the database whenever possible. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.TraceTypes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_TRACETYPES"})]}),"\n",(0,l.jsx)(n.p,{children:"The type of traces to store."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VmTrace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDiff"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Trace, Rewards"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"txpool",children:"TxPool"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions cached in memory. The default value uses max 200MB for 6 blobs where one blob is 33MB (256 * 128KB) Defaults to ",(0,l.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobsSupport "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBSSUPPORT"})]}),"\n",(0,l.jsx)(n.p,{children:"Blobs support mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Disabled"}),": No support for blob transactions"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"InMemory"}),": Blob transactions stored only in memory"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Storage"}),": Blob transactions stored in db"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),": Blob transactions stored in db with support for restoring reorganized blob transactions to blob pool"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Disabled"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"InMemory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Storage"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StorageWithReorgs"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.GasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_GASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max transaction gas allowed. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.HashCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_HASHCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of cached hashes of already known transactions. Set automatically by the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"524288"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.InMemoryBlobPoolSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_INMEMORYBLOBPOOLSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in memory. Used only if persistent storage is disabled. Defaults to ",(0,l.jsx)(n.code,{children:"512"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingBlobTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGBLOBTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending blob transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MinBaseFeeThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MINBASEFEETHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimal percentage of the current base fee that must be surpassed by the max fee (",(0,l.jsx)(n.code,{children:"max_fee_per_gas"}),") for the transaction to be broadcasted. Defaults to ",(0,l.jsx)(n.code,{children:"70"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PeerNotificationThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PEERNOTIFICATIONTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The average percentage of transaction hashes from persistent broadcast sent to a peer together with hashes of the last added transactions. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PersistentBlobStorageSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PERSISTENTBLOBSTORAGESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in the database (increasing the number of transactions in the blob pool also results in higher memory usage). The default value uses max 13GB for 6 blobs where one blob is 2GB (16386 * 128KB). Defaults to ",(0,l.jsx)(n.code,{children:"16384"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.ReportMinutes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_REPORTMINUTES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The current transaction pool state reporting interval, in minutes. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.Size "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_SIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of transactions held in the mempool (the more transactions in the mempool, the more memory used). Defaults to ",(0,l.jsx)(n.code,{children:"2048"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"wallet",children:"Wallet"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Wallet.DevAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_WALLETCONFIG_DEVACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of autogenerated developer accounts to work with. Developer accounts have private keys from ",(0,l.jsx)(n.code,{children:"00...01"})," to ",(0,l.jsx)(n.code,{children:"00...n"}),". Defaults to ",(0,l.jsx)(n.code,{children:"10"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsx)(n.h2,{id:"environment-variables",children:"Environment variables"}),"\n",(0,l.jsx)(n.p,{children:"To configure Nethermind using environment variables, the following naming convention is used in all uppercase:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-text",children:"NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}\n"})}),"\n",(0,l.jsxs)(n.p,{children:["For instance, the environment variable equivalent of the command line ",(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile"})," option is ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"}),". For the list of configuration namespaces and their options, see ",(0,l.jsx)(n.a,{href:"#options-by-namespaces",children:"Options by namespaces"}),"."]}),"\n",(0,l.jsx)(n.h2,{id:"configuration-file",children:"Configuration file"}),"\n",(0,l.jsxs)(n.p,{children:["The configuration file is a JSON file with ",(0,l.jsx)(n.code,{children:".cfg"})," extension. The bundled configuration files are located in the ",(0,l.jsx)(n.code,{children:"configs"})," directory and named after the network they are used for. For instance, see the Mainnet configuration file ",(0,l.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:(0,l.jsx)(n.code,{children:"mainnet.cfg"})}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(t,{...e})}):t(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>r});var l=s(6540);const c={},i=l.createContext(c);function d(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:d(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9893],{5793:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>a,frontMatter:()=>i,metadata:()=>r,toc:()=>h});var l=s(4848),c=s(8453);const i={title:"Configuration",sidebar_position:1,toc_max_heading_level:4},d=void 0,r={id:"fundamentals/configuration",title:"Configuration",description:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:",source:"@site/versioned_docs/version-1.26.0/fundamentals/configuration.md",sourceDirName:"fundamentals",slug:"/fundamentals/configuration",permalink:"/1.26.0/fundamentals/configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/fundamentals/configuration.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Configuration",sidebar_position:1,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"Migrating from Geth",permalink:"/1.26.0/get-started/migrating-from-geth"},next:{title:"Sync",permalink:"/1.26.0/fundamentals/sync"}},o={},h=[{value:"Command line options",id:"command-line-options",level:2},{value:"Basic options",id:"basic-options",level:3},{value:"Options by namespaces",id:"options-by-namespaces",level:3},{value:"Aura",id:"aura",level:4},{value:"Blocks",id:"blocks",level:4},{value:"Bloom",id:"bloom",level:4},{value:"EthStats",id:"ethstats",level:4},{value:"HealthChecks",id:"healthchecks",level:4},{value:"Hive",id:"hive",level:4},{value:"Init",id:"init",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"KeyStore",id:"keystore",level:4},{value:"Merge",id:"merge",level:4},{value:"Metrics",id:"metrics",level:4},{value:"Mining",id:"mining",level:4},{value:"Network",id:"network",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Receipt",id:"receipt",level:4},{value:"Seq",id:"seq",level:4},{value:"Snapshot",id:"snapshot",level:4},{value:"Sync",id:"sync",level:4},{value:"TraceStore",id:"tracestore",level:4},{value:"TxPool",id:"txpool",level:4},{value:"Wallet",id:"wallet",level:4},{value:"Environment variables",id:"environment-variables",level:2},{value:"Configuration file",id:"configuration-file",level:2}];function t(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,c.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.p,{children:"Nethermind is highly configurable. There are 3 ways of configuring it, listed by priority:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"#command-line-options",children:"Command line options"})," (aka arguments or flags)"]}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#environment-variables",children:"Environment variables"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#configuration-file",children:"Configuration file"})}),"\n"]}),"\n",(0,l.jsx)(n.admonition,{type:"note",children:(0,l.jsx)(n.p,{children:"Given the above priority list, an option defined in a more priority way overrides the same option defined elsewhere if any."})}),"\n",(0,l.jsx)(n.h2,{id:"command-line-options",children:"Command line options"}),"\n",(0,l.jsx)(n.p,{children:"The full list of command line options can be displayed by running:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"nethermind -h\n"})}),"\n",(0,l.jsx)(n.p,{children:"Below is the list of the basic options followed by an exhaustive list of options by namespace."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsx)(n.p,{children:"The command line options are case-sensitive and can be defined only once unless stated otherwise."})}),"\n",(0,l.jsx)(n.h3,{id:"basic-options",children:"Basic options"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-d, --baseDbPath "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind database directory. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-c, --config "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the ",(0,l.jsx)(n.a,{href:"#configuration-file",children:"configuration file"})," or the name (without extension) of any of the configuration files in the configuration directory. Defaults to ",(0,l.jsx)(n.code,{children:"mainnet"}),"."]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{children:"Available configurations"}),(0,l.jsxs)("p",{children:[(0,l.jsxs)(n.p,{children:["Nethermind provides the following pre-built configurations named as the networks they are for. Their respective versions for archive nodes are suffixed ",(0,l.jsx)(n.code,{children:"_archive"}),"."]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-mainnet"})," ",(0,l.jsx)(n.code,{children:"base-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"base-sepolia"})," ",(0,l.jsx)(n.code,{children:"base-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chiado"})," ",(0,l.jsx)(n.code,{children:"chiado_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"energyweb"})," ",(0,l.jsx)(n.code,{children:"energyweb_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gnosis"})," ",(0,l.jsx)(n.code,{children:"gnosis_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"holesky"})," ",(0,l.jsx)(n.code,{children:"holesky_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mainnet"})," ",(0,l.jsx)(n.code,{children:"mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-mainnet"})," ",(0,l.jsx)(n.code,{children:"op-mainnet_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"op-sepolia"})," ",(0,l.jsx)(n.code,{children:"op-sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sepolia"})," ",(0,l.jsx)(n.code,{children:"sepolia_archive"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"volta"})," ",(0,l.jsx)(n.code,{children:"volta_archive"})]}),"\n"]})]})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-cd, --configsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the configuration files directory. Defaults to ",(0,l.jsx)(n.code,{children:"configs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-dd, --datadir "})})}),"\n",(0,l.jsx)(n.p,{children:"The path to the Nethermind data directory. Defaults to Nethermind's current directory."}),"\n",(0,l.jsx)(n.admonition,{type:"warning",children:(0,l.jsxs)(n.p,{children:["The absolute paths set by ",(0,l.jsx)(n.code,{children:"Init.BaseDbPath"}),", ",(0,l.jsx)(n.code,{children:"Init.LogDirectory"}),", or ",(0,l.jsx)(n.code,{children:"KeyStore.KeyStoreDirectory"})," options in a configuration file are not overridden by ",(0,l.jsx)(n.code,{children:"--datadir"}),"."]})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-?, -h, --help"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the full list of available command line options."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-l, --log "})})}),"\n",(0,l.jsxs)(n.p,{children:["Log level (severity). Allowed values: ",(0,l.jsx)(n.code,{children:"TRACE"})," ",(0,l.jsx)(n.code,{children:"DEBUG"})," ",(0,l.jsx)(n.code,{children:"INFO"})," ",(0,l.jsx)(n.code,{children:"WARN"})," ",(0,l.jsx)(n.code,{children:"ERROR"})," ",(0,l.jsx)(n.code,{children:"OFF"}),". Defaults to ",(0,l.jsx)(n.code,{children:"INFO"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-lcs, --loggerConfigSource "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the NLog configuration file. Defaults to ",(0,l.jsx)(n.code,{children:"NLog.config"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-pd, --pluginsDirectory "})})}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind plugins directory. Defaults to ",(0,l.jsx)(n.code,{children:"plugins"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"-v, --version"})})}),"\n",(0,l.jsx)(n.p,{children:"Displays the Nethermind version info."}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"options-by-namespaces",children:"Options by namespaces"}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"aura",children:"Aura"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.AllowAuRaPrivateChains "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_ALLOWAURAPRIVATECHAINS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to allow private Aura-based chains only. Do not use with existing Aura-based chains. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.ForceSealing "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_FORCESEALING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal empty blocks if mining. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_MINIMUM2MLNGASPERBLOCKWHENUSINGBLOCKGASLIMITCONTRACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use 2M gas if the contract returns less than that when using ",(0,l.jsx)(n.code,{children:"BlockGasLimitContractTransitions"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityConfigFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONFIGFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the transaction priority rules file to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Aura.TxPriorityContractAddress "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_AURACONFIG_TXPRIORITYCONTRACTADDRESS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The address of the transaction priority contract to use when selecting transactions from the transaction pool. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"blocks",children:"Blocks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.ExtraData "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_EXTRADATA"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block header extra data up to 32 bytes in length. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.MinGasPrice "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_MINGASPRICE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum gas premium (or the gas price before the London hard fork) for transactions accepted by the block producer. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.RandomizedBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_RANDOMIZEDBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to change the difficulty of the block randomly within the constraints. Used in NethDev only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.SecondsPerSlot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_SECONDSPERSLOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block time slot, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"12"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Blocks.TargetBlockGasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOCKSCONFIG_TARGETBLOCKGASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block gas limit that the block producer should try to reach in the fastest possible way based on the protocol rules. If not specified, then the block producer should follow others. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"bloom",children:"Bloom"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Index "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Bloom index. The Bloom index speeds up the RPC log searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.IndexLevelBucketSizes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_INDEXLEVELBUCKETSIZES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of multipliers for index levels. Can be tweaked per chain to boost performance. Defaults to ",(0,l.jsx)(n.code,{children:"[4, 8, 8]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.Migration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the previously downloaded blocks to the Bloom index. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Bloom.MigrationStatistics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_BLOOMCONFIG_MIGRATIONSTATISTICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether the migration statistics should be calculated and output. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"ethstats",children:"EthStats"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Contact "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_CONTACT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node owner contact details displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"hello@nethermind.io"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use Ethstats publishing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Name "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_NAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The node name displayed on Ethstats. Defaults to ",(0,l.jsx)(n.code,{children:"Nethermind"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Secret "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SECRET"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats secret. Defaults to ",(0,l.jsx)(n.code,{children:"secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.SendInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SENDINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The stats update interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"15"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--EthStats.Server "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_ETHSTATSCONFIG_SERVER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Ethstats server URL. Defaults to ",(0,l.jsx)(n.code,{children:"ws://localhost:3000/api"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"healthchecks",children:"HealthChecks"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageCheckAwaitOnStartup "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGECHECKAWAITONSTARTUP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to check for low disk space on startup and suspend until enough space is available. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceShutdownThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACESHUTDOWNTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which Nethermind shuts down. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.LowStorageSpaceWarningThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACEWARNINGTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The percentage of available disk space below which a warning is displayed. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalClRequestTime "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALCLREQUESTTIME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max request interval, in seconds, in which the consensus client is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProcessedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPROCESSEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block processing is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.MaxIntervalWithoutProducedBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPRODUCEDBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max interval, in seconds, in which the block production is assumed healthy. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.PollingInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_POLLINGINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The health check updates polling interval, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.Slug "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_SLUG"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL slug the health checks service is exposed at. Defaults to ",(0,l.jsx)(n.code,{children:"/health"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.UIEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_UIENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the health checks UI. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable web hooks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksPayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on failure.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#FFCC00",\n "pretext": "Health Check Status :warning:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "Description",\n "value": "[[DESCRIPTIONS]]",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksRestorePayload "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSRESTOREPAYLOAD"})]}),"\n",(0,l.jsx)(n.p,{children:"An escaped JSON paylod to be sent to the web hook on recovery.\nDefaults to:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "attachments": [\n {\n "color": "#36a64f",\n "pretext": "Health Check Status :+1:",\n "fields": [\n {\n "title": "Details",\n "value": "More details available at /healthchecks-ui",\n "short": false\n },\n {\n "title": "description",\n "value": "The HealthCheck `[[LIVENESS]]` is recovered. Everything is up and running.",\n "short": false\n }\n ]\n }\n ]\n}\n'})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--HealthChecks.WebhooksUri "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSURI"})]}),"\n",(0,l.jsxs)(n.p,{children:["The web hook URL. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"hive",children:"Hive"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.BlocksDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_BLOCKSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory with additional blocks. Defaults to ",(0,l.jsx)(n.code,{children:"/blocks"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.ChainFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_CHAINFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the test chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"/chain.rlp"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable Hive for debugging. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.GenesisFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_GENESISFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the genesis block file. Defaults to ",(0,l.jsx)(n.code,{children:"/genesis.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Hive.KeysDir "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_HIVECONFIG_KEYSDIR"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"/keys"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"init",children:"Init"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.AutoDump "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_AUTODUMP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Auto-dump on bad blocks for diagnostics. ",(0,l.jsx)(n.code,{children:"Default"})," combines ",(0,l.jsx)(n.code,{children:"Receipts"})," and ",(0,l.jsx)(n.code,{children:"Rlp"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Receipts"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Geth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rlp"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RlpLog"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Default"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BadBlocksStored "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BADBLOCKSSTORED"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum number of bad blocks observed on the network that will be stored on disk. Defaults to ",(0,l.jsx)(n.code,{children:"100"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.BaseDbPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_BASEDBPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The base path for all Nethermind databases. Defaults to ",(0,l.jsx)(n.code,{children:"db"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_CHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/foundation.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiagnosticMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DIAGNOSTICMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"MemDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"RpcDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ReadOnlyDb"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyRewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifySupply"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VerifyTrie"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.DiscoveryEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_DISCOVERYENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the node discovery. If disabled, Nethermind doesn't look for other nodes beyond the bootnodes specified. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.EnableUnsecuredDevWallet "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ENABLEUNSECUREDDEVWALLET"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the in-app wallet/keystore. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.GenesisHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_GENESISHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the genesis block. If not specified, the genesis block validity is not checked which is useful in the case of ad hoc test/private networks. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.HiveChainSpecPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_HIVECHAINSPECPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the chain spec file for Hive tests. Defaults to ",(0,l.jsx)(n.code,{children:"chainspec/test.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.IsMining "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_ISMINING"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to seal/mine new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KeepDevWalletInMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KEEPDEVWALLETINMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to create session-only accounts and delete them on shutdown. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.KzgSetupPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_KZGSETUPPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to KZG trusted setup file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the Nethermind logs directory. Defaults to ",(0,l.jsx)(n.code,{children:"logs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the log file. Defaults to ",(0,l.jsx)(n.code,{children:"log.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.LogRules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_LOGRULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The logs format as ",(0,l.jsx)(n.code,{children:"LogPath:LogLevel;*"})," Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.MemoryHint "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_MEMORYHINT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hint on the max memory limit, in bytes, to configure the database and networking memory allocations. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.PeerManagerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PEERMANAGERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to newly discovered peers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.ProcessingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_PROCESSINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download/process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.RpcDbUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_RPCDBURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the remote node used as a database source when ",(0,l.jsx)(n.code,{children:"DiagnosticMode"})," is set to ",(0,l.jsx)(n.code,{children:"RpcDb"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.StaticNodesPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_STATICNODESPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the static nodes file. Defaults to ",(0,l.jsx)(n.code,{children:"Data/static-nodes.json"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Init.WebSocketsEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_INITCONFIG_WEBSOCKETSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable WebSocket service for the default JSON-RPC port on startup. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ADDITIONALRPCURLS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list. For instance, ",(0,l.jsx)(n.code,{children:"[http://localhost:8546|http;ws|eth;web3]"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.BufferResponses "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_BUFFERRESPONSES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to buffer responses before sending them. This allows using of ",(0,l.jsx)(n.code,{children:"Content-Length"})," instead of ",(0,l.jsx)(n.code,{children:"Transfer-Encoding: chunked"}),". Note that it may degrade performance on large responses. The max buffered response length is 2GB. Chunked responses can be larger. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.CallsFilterFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_CALLSFILTERFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to a file with the list of new-line-separated JSON-RPC calls. If specified, only the calls from that file are allowed. Defaults to ",(0,l.jsx)(n.code,{children:"Data/jsonrpc.filter"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the JSON-RPC service. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of JSON-RPC namespaces to enable. For instance, ",(0,l.jsx)(n.code,{children:"[debug,eth]"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Built-in namespaces:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"admin"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"client"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"debug"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"engine"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"evm"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"health"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"net"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"parity"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"personal"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"proof"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"rpc"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"subscribe"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"txpool"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"web3"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"[Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health,Rpc]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineEnabledModules "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list for Engine API. Defaults to ",(0,l.jsx)(n.code,{children:"[Net,Eth,Subscribe,Web3]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EngineHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EnginePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ENGINEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Engine API port. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.EthModuleConcurrentInstances "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_ETHMODULECONCURRENTINSTANCES"})]}),"\n",(0,l.jsx)(n.p,{children:"The number of concurrent instances for non-sharable calls:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"This limits the load on the CPU and I/O to reasonable levels. If the limit is exceeded, HTTP 503 is returned along with the JSON-RPC error. Defaults to the number of logical processors."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.GasCap "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_GASCAP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The gas limit for ",(0,l.jsx)(n.code,{children:"eth_call"})," and ",(0,l.jsx)(n.code,{children:"eth_estimateGas"}),". Defaults to ",(0,l.jsx)(n.code,{children:"100000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Host "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_HOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service host. Defaults to ",(0,l.jsx)(n.code,{children:"127.0.0.1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_IPCUNIXDOMAINSOCKETPATH"})]}),"\n",(0,l.jsx)(n.p,{children:"The path to connect a UNIX domain socket over."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the JWT secret file required for the Engine API authentication. Defaults to ",(0,l.jsx)(n.code,{children:"keystore/jwt-secret"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchResponseBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHRESPONSEBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max batch size limit for batched JSON-RPC calls. Defaults to ",(0,l.jsx)(n.code,{children:"33554432"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxBatchSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXBATCHSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of JSON-RPC requests in a batch. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxLoggedRequestParametersCharacters "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXLOGGEDREQUESTPARAMETERSCHARACTERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of characters of a JSON-RPC request parameter printing to the log. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MaxRequestBodySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_MAXREQUESTBODYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max length of HTTP request body, in bytes. Defaults to ",(0,l.jsx)(n.code,{children:"30000000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.MethodsLoggingFiltering "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_METHODSLOGGINGFILTERING"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of the method names not to log. Defaults to ",(0,l.jsx)(n.code,{children:"[engine_newPayloadV1,engine_newPayloadV2,engine_newPayloadV3,engine_forkchoiceUpdatedV1,engine_forkchoiceUpdatedV2]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Port "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_PORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service HTTP port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.ReportIntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REPORTINTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The interval, in seconds, between the JSON-RPC stats report log. Defaults to ",(0,l.jsx)(n.code,{children:"300"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RequestQueueLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_REQUESTQUEUELIMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of concurrent requests in the queue for:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_call"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_estimateGas"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_getLogs"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newBlockFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_newPendingTransactionFilter"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"eth_uninstallFilter"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"500"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderBaseFilePath "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERBASEFILEPATH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the base file for diagnostic recording. Defaults to ",(0,l.jsx)(n.code,{children:"logs/rpc.{counter}.txt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.RpcRecorderState "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_RPCRECORDERSTATE"})]}),"\n",(0,l.jsx)(n.p,{children:"The diagnostic recording mode."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Request"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Response"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.Timeout "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_TIMEOUT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The request timeout, in milliseconds. Defaults to ",(0,l.jsx)(n.code,{children:"20000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_WEBSOCKETSPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The JSON-RPC service WebSockets port. Defaults to ",(0,l.jsx)(n.code,{children:"8545"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"keystore",children:"KeyStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.BlockAuthorAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_BLOCKAUTHORACCOUNT"})]}),"\n",(0,l.jsx)(n.p,{children:"An account to use as the block author (coinbase)."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Cipher "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_CIPHER"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"aes-128-ctr"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeAccount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEACCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["An account to use for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeKeyFile"})," option is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.EnodeKeyFile "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_ENODEKEYFILE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the key file to use by for networking (enode). If neither this nor the ",(0,l.jsx)(n.code,{children:"EnodeAccount"})," is specified, the key is autogenerated in ",(0,l.jsx)(n.code,{children:"node.key.plain"})," file."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.IVSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_IVSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Kdf "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDF"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"scrypt"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsDklen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSDKLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsN "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"262144"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSP"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsR "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSR"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KdfparamsSaltLen "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KDFPARAMSSALTLEN"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"32"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the keystore directory. Defaults to ",(0,l.jsx)(n.code,{children:"keystore"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.KeyStoreEncoding "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_KEYSTOREENCODING"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"UTF-8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.PasswordFiles "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDFILES"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of password files paths used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.Passwords "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_PASSWORDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of passwords used to unlock the accounts set with ",(0,l.jsx)(n.code,{children:"UnlockAccounts"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterBlockSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERBLOCKSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.SymmetricEncrypterKeySize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERKEYSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage",children:"Web3 secret storage definition"}),". Defaults to ",(0,l.jsx)(n.code,{children:"128"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.TestNodeKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_TESTNODEKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"A plaintext private key to use for testing purposes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--KeyStore.UnlockAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_KEYSTORECONFIG_UNLOCKACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["An array of accounts to unlock on startup using passwords either in ",(0,l.jsx)(n.code,{children:"PasswordFiles"})," and ",(0,l.jsx)(n.code,{children:"Passwords"}),". Defaults to ",(0,l.jsx)(n.code,{children:"[]"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"merge",children:"Merge"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.BuilderRelayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_BUILDERRELAYURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of a builder relay. If specified, blocks are sent to the relay. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CollectionsPerDecommit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COLLECTIONSPERDECOMMIT"})]}),"\n",(0,l.jsx)(n.p,{children:"Request the garbage collector (GC) to release the process memory."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to disable"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to release every time"]}),"\n",(0,l.jsx)(n.li,{children:"A positive number to release memory after that many Engine API calls"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"25"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.CompactMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_COMPACTMEMORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory compaction mode. When set to ",(0,l.jsx)(n.code,{children:"Full"}),", compacts the large object heap (LOH) if ",(0,l.jsx)(n.code,{children:"SweepMemory"})," is set to ",(0,l.jsx)(n.code,{children:"Gen2"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"No"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Yes"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Yes"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Merge hard fork. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.FinalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_FINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the last PoW block. Must be greater than or equal to the terminal total difficulty (TTD). Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.PrioritizeBlockLatency "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_PRIORITIZEBLOCKLATENCY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to reduce block latency by disabling garbage collection during Engine API calls. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.SweepMemory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_SWEEPMEMORY"})]}),"\n",(0,l.jsx)(n.p,{children:"The garbage collection (GC) mode between Engine API calls."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"NoGC"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen0"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen1"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Gen2"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Gen1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal PoW block hash used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalBlockNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALBLOCKNUMBER"})]}),"\n",(0,l.jsx)(n.p,{children:"The terminal PoW block number used for the transition."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Merge.TerminalTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MERGECONFIG_TERMINALTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The terminal total difficulty (TTD) used for the transition. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"metrics",children:"Metrics"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.CountersEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_COUNTERSENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish metrics using .NET diagnostics that can be collected with dotnet-counters. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish various metrics to Prometheus Pushgateway at a given interval. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.EnableDbSizeMetrics "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_ENABLEDBSIZEMETRICS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to publish database size metrics. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposeHost "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEHOST"})]}),"\n",(0,l.jsxs)(n.p,{children:["The IP address to expose Prometheus metrics at. The value of ",(0,l.jsx)(n.code,{children:"+"})," means listening on all available hostnames. Setting this to ",(0,l.jsx)(n.code,{children:"localhost"})," prevents remote access. Defaults to ",(0,l.jsx)(n.code,{children:"+"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.ExposePort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_EXPOSEPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The port to expose Prometheus metrics at. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.IntervalSeconds "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_INTERVALSECONDS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The frequency of pushing metrics to Prometheus, in seconds. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.NodeName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_NODENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name to display on the Grafana dashboard. Defaults to ",(0,l.jsx)(n.code,{children:'"Nethermind"'}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Metrics.PushGatewayUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_METRICSCONFIG_PUSHGATEWAYURL"})]}),"\n",(0,l.jsx)(n.p,{children:"The Prometheus Pushgateway instance URL."}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"mining",children:"Mining"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Mining.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_MININGCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to produce blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"network",children:"Network"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.Bootnodes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_BOOTNODES"})]}),"\n",(0,l.jsx)(n.p,{children:"A comma-separated enode list to be used as boot nodes."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiagTracerEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DIAGTRACERENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable a verbose diagnostic tracing. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryDns "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYDNS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Use tree is available through a DNS name. For the default of ",(0,l.jsx)(n.code,{children:".ethdisco.net"}),", leave unspecified. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.DiscoveryPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_DISCOVERYPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The UDP port number for incoming discovery connections. It's recommended to keep it the same as the TCP port (",(0,l.jsx)(n.code,{children:"P2PPort"}),") because other values have not been tested yet. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.EnableUPnP "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ENABLEUPNP"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable automatic port forwarding via UPnP. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.ExternalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_EXTERNALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The external IP. Use only when the external IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.LocalIp "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_LOCALIP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The local IP. Use only when the local IP cannot be resolved automatically. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxActivePeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max allowed number of connected peers. Defaults to ",(0,l.jsx)(n.code,{children:"50"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.MaxNettyArenaCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_MAXNETTYARENACOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The maximum DotNetty arena count. Increasing this on a high-core CPU without increasing the memory budget may reduce chunk size so much that it causes a huge memory allocation. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.NettyArenaOrder "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_NETTYARENAORDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The size of the DotNetty arena order. ",(0,l.jsx)(n.code,{children:"-1"})," to depend on the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.OnlyStaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_ONLYSTATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use static peers only. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.P2PPort "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_P2PPORT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The TCP port for incoming P2P connections. Defaults to ",(0,l.jsx)(n.code,{children:"30303"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.PriorityPeersMaxCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_PRIORITYPEERSMAXCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of priority peers. Can be overridden by a plugin. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Network.StaticPeers "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_NETWORKCONFIG_STATICPEERS"})]}),"\n",(0,l.jsxs)(n.p,{children:["A list of peers to keep connection for. Static peers are affected by ",(0,l.jsx)(n.code,{children:"MaxActivePeers"}),". Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"pruning",children:"Pruning"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.AvailableSpaceCheckEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_AVAILABLESPACECHECKENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enables available disk space check. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.CacheMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_CACHEMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The in-memory cache size, in MB. The bigger the cache size, the bigger the disk space savings. Defaults to ",(0,l.jsx)(n.code,{children:"1024"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningCompletionBehavior "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGCOMPLETIONBEHAVIOR"})]}),"\n",(0,l.jsx)(n.p,{children:"The behavior after pruning completion:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": Do nothing."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Shut Nethermind down if pruning has succeeded but leave it running if failed."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"AlwaysShutdown"}),": Shut Nethermind down when pruning completes, regardless of its status."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"ShutdownOnSuccess"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AlwaysShutdown"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"None"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningDisableLowPriorityWrites "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGDISABLELOWPRIORITYWRITES"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable low-priority for pruning writes. Full pruning uses low-priority write operations to prevent blocking block processing. If block processing is not high-priority, set this option to ",(0,l.jsx)(n.code,{children:"true"})," for faster pruning. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMaxDegreeOfParallelism "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMAXDEGREEOFPARALLELISM"})]}),"\n",(0,l.jsx)(n.p,{children:"The max number of parallel tasks that can be used by full pruning:"}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"-1"})," to use the number of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"0"})," to use 25% of logical processors"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"1"})," to run on single thread"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"The recommended value depends on the type of the node:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["If the node needs to be responsive (serves for RPC or validator), then the recommended value is ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"-1"}),"."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have many other responsibilities but needs to be able to follow the chain reliably without any delays and produce live logs, the ",(0,l.jsx)(n.code,{children:"0"})," or ",(0,l.jsx)(n.code,{children:"1"})," is recommended."]}),"\n",(0,l.jsxs)(n.li,{children:["If the node doesn't have to be responsive, has very fast I/O (like NVMe) and the shortest pruning time is to be achieved, then ",(0,l.jsx)(n.code,{children:"-1"})," is recommended. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMemoryBudgetMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMEMORYBUDGETMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The memory budget, in MB, used for the trie visit. Increasing this value significantly reduces the IOPS requirement at the expense of memory usage. ",(0,l.jsx)(n.code,{children:"0"})," to disable. Defaults to ",(0,l.jsx)(n.code,{children:"4000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningMinimumDelayHours "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMINIMUMDELAYHOURS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimum delay, in hours, between full pruning operations not to exhaust disk writes. Defaults to ",(0,l.jsx)(n.code,{children:"240"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningThresholdMb "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTHRESHOLDMB"})]}),"\n",(0,l.jsxs)(n.p,{children:["The threshold, in MB, to trigger full pruning. Depends on ",(0,l.jsx)(n.code,{children:"Mode"})," and ",(0,l.jsx)(n.code,{children:"FullPruningTrigger"}),". Defaults to ",(0,l.jsx)(n.code,{children:"256000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.FullPruningTrigger "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTRIGGER"})]}),"\n",(0,l.jsx)(n.p,{children:"The full pruning trigger:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Manual"}),": Triggered manually."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StateDbSize"}),": Trigger when the state DB size is above the threshold."]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"VolumeFreeSpace"}),": Trigger when the free disk space where the state DB is stored is below the threshold."]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Manual"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDbSize"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VolumeFreeSpace"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Manual"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.Mode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_MODE"})]}),"\n",(0,l.jsx)(n.p,{children:"The pruning mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"None"}),": No pruning (full archive)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Memory"}),": In-memory pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Full"}),": Full pruning"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Hybrid"}),": Combined in-memory and full pruning"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Memory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Full"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Hybrid"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Hybrid"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.PersistenceInterval "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PERSISTENCEINTERVAL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The block persistence frequency. If set to ",(0,l.jsx)(n.code,{children:"N"}),", it caches after each ",(0,l.jsx)(n.code,{children:"Nth"})," block even if not required by cache memory usage. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.PruningBoundary "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_PRUNINGBOUNDARY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Past N state before state gets pruned Used to determine how old of a state to keep from the head. Defaults to ",(0,l.jsx)(n.code,{children:"64"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Pruning.TrackedPastKeyCountMemoryRatio "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_PRUNINGCONFIG_TRACKEDPASTKEYCOUNTMEMORYRATIO"})]}),"\n",(0,l.jsxs)(n.p,{children:["[TECHNICAL] Ratio of memory out of CacheMb to allocate for LRU used to track past keys for live pruning. Defaults to ",(0,l.jsx)(n.code,{children:"0.1"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"receipt",children:"Receipt"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactReceiptStore "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTRECEIPTSTORE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.CompactTxIndex "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_COMPACTTXINDEX"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to compact receipts transaction index database size at the expense of RPC performance. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.ReceiptsMigration "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_RECEIPTSMIGRATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to migrate the receipts database to the new schema. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.StoreReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_STORERECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to store receipts after a new block is processed. This setting is independent from downloading receipts in fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Receipt.TxLookupLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_RECEIPTCONFIG_TXLOOKUPLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of recent blocks to maintain transaction index for. ",(0,l.jsx)(n.code,{children:"0"})," to never remove indices, ",(0,l.jsx)(n.code,{children:"-1"})," to never index. Defaults to ",(0,l.jsx)(n.code,{children:"2350000"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"seq",children:"Seq"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ApiKey "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_APIKEY"})]}),"\n",(0,l.jsx)(n.p,{children:"The Seq API key."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.MinLevel "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_MINLEVEL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The min log level to sent to Seq. Defaults to ",(0,l.jsx)(n.code,{children:"Off"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Seq.ServerUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SEQCONFIG_SERVERURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The Seq instance URL. Defaults to ",(0,l.jsx)(n.code,{children:"http://localhost:5341"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"snapshot",children:"Snapshot"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Checksum "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_CHECKSUM"})]}),"\n",(0,l.jsxs)(n.p,{children:["The SHA-256 checksum of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.DownloadUrl "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_DOWNLOADURL"})]}),"\n",(0,l.jsxs)(n.p,{children:["The URL of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Snapshot plugin. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotDirectory "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTDIRECTORY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The path to the directory to store the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Snapshot.SnapshotFileName "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTFILENAME"})]}),"\n",(0,l.jsxs)(n.p,{children:["The name of the snapshot file. Defaults to ",(0,l.jsx)(n.code,{children:"snapshot.zip"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"sync",children:"Sync"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientBodiesBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The earliest body downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as follows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, AncientBodiesBarrier } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.AncientReceiptsBarrier "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The earliest receipt downloaded with fast sync when ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," is set to ",(0,l.jsx)(n.code,{children:"true"}),". The actual value is determined as folows:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"max{ 1, min{ PivotNumber, max{ AncientBodiesBarrier, AncientReceiptsBarrier } } }\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.BlocksDbTuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_BLOCKSDBTUNEDBMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"Configure the blocks database for write optimizations during sync."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"EnableBlobFiles"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the block bodies in the Fast sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadHeadersInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADHEADERSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download the old block headers in the Fast sync mode. If ",(0,l.jsx)(n.code,{children:"false"}),", Nethermind downloads only recent blocks headers. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.DownloadReceiptsInFastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download receipts in the Fast sync mode. This slows down the process by a few hours but allows to interact with dApps that perform extensive historical logs searches. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSynced "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to shut down Nethermind once sync is finished. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.ExitOnSyncedWaitTimeSec "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_EXITONSYNCEDWAITTIMESEC"})]}),"\n",(0,l.jsxs)(n.p,{children:["The time, in seconds, to wait before shutting down Nethermind once sync is finished. Defaults to ",(0,l.jsx)(n.code,{children:"60"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Fast sync mode (the eth/63 synchronization algorithm). Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FastSyncCatchUpHeightDelta "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FASTSYNCCATCHUPHEIGHTDELTA"})]}),"\n",(0,l.jsxs)(n.p,{children:["In Fast sync mode, the min height threshold limit up to which the Full sync, if already on, stays on when the chain is behind the network head. If the limit is exceeded, it switches back to Fast sync. For regular usage scenarios, setting this value lower than 32 is not recommended as this can cause issues with chain reorgs. Note that the last 2 blocks are always processed in Full sync, so setting it lower than 2 has no effect. Defaults to ",(0,l.jsx)(n.code,{children:"8192"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixReceipts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXRECEIPTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable receipts validation that checks for receipts that might be missing because of a bug. If needed, receipts are downloaded from the network. If ",(0,l.jsx)(n.code,{children:"true"}),", the pivot number must be same one used originally as it's used as a cut-off point. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to recalculate the total difficulty from ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyStartingBlock"})," to ",(0,l.jsx)(n.code,{children:"FixTotalDifficultyLastBlock"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyLastBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYLASTBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The last block to recalculate the total difficulty for. If not specified, the best known block is used.\nDefaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.FixTotalDifficultyStartingBlock "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYSTARTINGBLOCK"})]}),"\n",(0,l.jsxs)(n.p,{children:["The first block to recalculate the total difficulty for. Defaults to ",(0,l.jsx)(n.code,{children:"1"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxAttemptsToUpdatePivot "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXATTEMPTSTOUPDATEPIVOT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of attempts to update the pivot block based on the FCU message from the consensus client. Defaults to ",(0,l.jsx)(n.code,{children:"2147483647"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.MaxProcessingThreads "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_MAXPROCESSINGTHREADS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of threads used for syncing. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NetworkingEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NETWORKINGENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to connect to peers and sync. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.NonValidatorNode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_NONVALIDATORNODE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to operate as a non-validator. If ",(0,l.jsx)(n.code,{children:"true"}),", the ",(0,l.jsx)(n.code,{children:"DownloadReceiptsInFastSync"})," and ",(0,l.jsx)(n.code,{children:"DownloadBodiesInFastSync"})," can be set to ",(0,l.jsx)(n.code,{children:"false"}),". Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotHash "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTHASH"})]}),"\n",(0,l.jsxs)(n.p,{children:["The hash of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotNumber "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTNUMBER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.PivotTotalDifficulty "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTY"})]}),"\n",(0,l.jsxs)(n.p,{children:["The total difficulty of the pivot block for the Fast sync mode. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSync "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNC"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to use the Snap sync mode. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SnapSyncAccountRangePartitionCount "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SNAPSYNCACCOUNTRANGEPARTITIONCOUNT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of account range partitions to create. Increases the Snap sync request concurrency. Allowed values are between between 1 and 256. Defaults to ",(0,l.jsx)(n.code,{children:"8"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.StrictMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_STRICTMODE"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to disable some optimizations and do a more extensive sync. Useful when sync state is corrupted. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.SynchronizationEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_SYNCHRONIZATIONENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to download and process new blocks. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.TuneDbMode "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_TUNEDBMODE"})]}),"\n",(0,l.jsx)(n.p,{children:"Configure the database for write optimizations during sync. Significantly reduces the total number of writes and sync time if you are not network limited."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Default"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"WriteBias"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"AggressiveHeavyWrite"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"DisableCompaction"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"EnableBlobFiles"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"HashDb"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"HeavyWrite"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.UseGethLimitsInFastBlocks "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKS"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to make smaller requests, in Fast Blocks mode, to avoid Geth from disconnecting. On the Geth-heavy networks (e.g., Mainnet), it's a desired behavior while on Nethermind- or OpenEthereum-heavy networks (Goerli, Aura), it slows down the sync by a factor of ~4. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Sync.WitnessProtocolEnabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_SYNCCONFIG_WITNESSPROTOCOLENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the Witness protocol. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"tracestore",children:"TraceStore"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.BlocksToKeep "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_BLOCKSTOKEEP"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of blocks to store, counting from the head. If ",(0,l.jsx)(n.code,{children:"0"}),", all traces of the processed blocks are stored. Defaults to ",(0,l.jsx)(n.code,{children:"10000"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.DeserializationParallelization "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_DESERIALIZATIONPARALLELIZATION"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max parallelization when deserialization requests the ",(0,l.jsx)(n.code,{children:"trace_filter"})," method. ",(0,l.jsx)(n.code,{children:"0"})," to use the number of logical processors. If you experience a resource shortage, set to a low number. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.Enabled "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_ENABLED"})]}),"\n",(0,l.jsxs)(n.p,{children:["Whether to enable the TraceStore plugin. If enabled, traces come from the database whenever possible. Allowed values: ",(0,l.jsx)(n.code,{children:"true"})," ",(0,l.jsx)(n.code,{children:"false"}),". Defaults to ",(0,l.jsx)(n.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TraceStore.TraceTypes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TRACESTORECONFIG_TRACETYPES"})]}),"\n",(0,l.jsx)(n.p,{children:"The type of traces to store."}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"None"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"VmTrace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StateDiff"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Trace"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Rewards"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"All"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"Trace, Rewards"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"txpool",children:"TxPool"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions cached in memory. The default value uses max 200MB for 6 blobs where one blob is 33MB (256 * 128KB) Defaults to ",(0,l.jsx)(n.code,{children:"256"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.BlobsSupport "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_BLOBSSUPPORT"})]}),"\n",(0,l.jsx)(n.p,{children:"Blobs support mode:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Disabled"}),": No support for blob transactions"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"InMemory"}),": Blob transactions stored only in memory"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"Storage"}),": Blob transactions stored in db"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),": Blob transactions stored in db with support for restoring reorganized blob transactions to blob pool"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Allowed values:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Disabled"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"InMemory"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"Storage"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.code,{children:"StorageWithReorgs"})}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Defaults to ",(0,l.jsx)(n.code,{children:"StorageWithReorgs"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.GasLimit "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_GASLIMIT"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max transaction gas allowed. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.HashCacheSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_HASHCACHESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of cached hashes of already known transactions. Set automatically by the memory hint. Defaults to ",(0,l.jsx)(n.code,{children:"524288"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.InMemoryBlobPoolSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_INMEMORYBLOBPOOLSIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in memory. Used only if persistent storage is disabled. Defaults to ",(0,l.jsx)(n.code,{children:"512"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingBlobTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGBLOBTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending blob transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"16"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MaxPendingTxsPerSender "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MAXPENDINGTXSPERSENDER"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of pending transactions per single sender. ",(0,l.jsx)(n.code,{children:"0"})," to lift the limit. Defaults to ",(0,l.jsx)(n.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.MinBaseFeeThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_MINBASEFEETHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The minimal percentage of the current base fee that must be surpassed by the max fee (",(0,l.jsx)(n.code,{children:"max_fee_per_gas"}),") for the transaction to be broadcasted. Defaults to ",(0,l.jsx)(n.code,{children:"70"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PeerNotificationThreshold "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PEERNOTIFICATIONTHRESHOLD"})]}),"\n",(0,l.jsxs)(n.p,{children:["The average percentage of transaction hashes from persistent broadcast sent to a peer together with hashes of the last added transactions. Defaults to ",(0,l.jsx)(n.code,{children:"5"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.PersistentBlobStorageSize "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_PERSISTENTBLOBSTORAGESIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of full blob transactions stored in the database (increasing the number of transactions in the blob pool also results in higher memory usage). The default value uses max 13GB for 6 blobs where one blob is 2GB (16386 * 128KB). Defaults to ",(0,l.jsx)(n.code,{children:"16384"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.ReportMinutes "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_REPORTMINUTES"})]}),"\n",(0,l.jsxs)(n.p,{children:["The current transaction pool state reporting interval, in minutes. Defaults to ",(0,l.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--TxPool.Size "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_TXPOOLCONFIG_SIZE"})]}),"\n",(0,l.jsxs)(n.p,{children:["The max number of transactions held in the mempool (the more transactions in the mempool, the more memory used). Defaults to ",(0,l.jsx)(n.code,{children:"2048"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{className:"nd-details-heading",children:(0,l.jsx)(n.h4,{id:"wallet",children:"Wallet"})}),(0,l.jsx)("p",{children:(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"--Wallet.DevAccounts "})})," ",(0,l.jsx)(n.code,{children:"NETHERMIND_WALLETCONFIG_DEVACCOUNTS"})]}),"\n",(0,l.jsxs)(n.p,{children:["The number of autogenerated developer accounts to work with. Developer accounts have private keys from ",(0,l.jsx)(n.code,{children:"00...01"})," to ",(0,l.jsx)(n.code,{children:"00...n"}),". Defaults to ",(0,l.jsx)(n.code,{children:"10"}),"."]}),"\n"]}),"\n"]})})]}),"\n",(0,l.jsx)(n.h2,{id:"environment-variables",children:"Environment variables"}),"\n",(0,l.jsx)(n.p,{children:"To configure Nethermind using environment variables, the following naming convention is used in all uppercase:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-text",children:"NETHERMIND_{NAMESPACE}CONFIG_{PROPERTY_NAME}\n"})}),"\n",(0,l.jsxs)(n.p,{children:["For instance, the environment variable equivalent of the command line ",(0,l.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile"})," option is ",(0,l.jsx)(n.code,{children:"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"}),". For the list of configuration namespaces and their options, see ",(0,l.jsx)(n.a,{href:"#options-by-namespaces",children:"Options by namespaces"}),"."]}),"\n",(0,l.jsx)(n.h2,{id:"configuration-file",children:"Configuration file"}),"\n",(0,l.jsxs)(n.p,{children:["The configuration file is a JSON file with ",(0,l.jsx)(n.code,{children:".cfg"})," extension. The bundled configuration files are located in the ",(0,l.jsx)(n.code,{children:"configs"})," directory and named after the network they are used for. For instance, see the Mainnet configuration file ",(0,l.jsx)(n.a,{href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg",children:(0,l.jsx)(n.code,{children:"mainnet.cfg"})}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(t,{...e})}):t(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>r});var l=s(6540);const c={},i=l.createContext(c);function d(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:d(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f1e820d1.26a7d548.js b/assets/js/f1e820d1.5cce5e2b.js similarity index 99% rename from assets/js/f1e820d1.26a7d548.js rename to assets/js/f1e820d1.5cce5e2b.js index e93503109..b7601ee40 100644 --- a/assets/js/f1e820d1.26a7d548.js +++ b/assets/js/f1e820d1.5cce5e2b.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8664],{7113:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>t,frontMatter:()=>d,metadata:()=>a,toc:()=>x});var l=s(4848),r=s(8453),i=s(1470),c=s(9365);const d={title:"debug namespace",sidebar_label:"debug",sidebar_position:2},h=void 0,a={id:"interacting/json-rpc-ns/debug",title:"debug namespace",description:"debug_deleteChainSlice",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/debug.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/debug",permalink:"/1.28.0/interacting/json-rpc-ns/debug",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/debug.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:2,frontMatter:{title:"debug namespace",sidebar_label:"debug",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"clique",permalink:"/1.28.0/interacting/json-rpc-ns/clique"},next:{title:"eth",permalink:"/1.28.0/interacting/json-rpc-ns/eth"}},j={},x=[{value:"debug_deleteChainSlice",id:"debug_deletechainslice",level:3},{value:"debug_getBadBlocks",id:"debug_getbadblocks",level:3},{value:"debug_getBlockRlp",id:"debug_getblockrlp",level:3},{value:"debug_getBlockRlpByHash",id:"debug_getblockrlpbyhash",level:3},{value:"debug_getChainLevel",id:"debug_getchainlevel",level:3},{value:"debug_getConfigValue",id:"debug_getconfigvalue",level:3},{value:"debug_getRawBlock",id:"debug_getrawblock",level:3},{value:"debug_getRawHeader",id:"debug_getrawheader",level:3},{value:"debug_getRawReceipts",id:"debug_getrawreceipts",level:3},{value:"debug_getRawTransaction",id:"debug_getrawtransaction",level:3},{value:"debug_getSyncStage",id:"debug_getsyncstage",level:3},{value:"debug_insertReceipts",id:"debug_insertreceipts",level:3},{value:"debug_migrateReceipts",id:"debug_migratereceipts",level:3},{value:"debug_resetHead",id:"debug_resethead",level:3},{value:"debug_standardTraceBadBlockToFile",id:"debug_standardtracebadblocktofile",level:3},{value:"debug_standardTraceBlockToFile",id:"debug_standardtraceblocktofile",level:3},{value:"debug_traceBlock",id:"debug_traceblock",level:3},{value:"debug_traceBlockByHash",id:"debug_traceblockbyhash",level:3},{value:"debug_traceBlockByNumber",id:"debug_traceblockbynumber",level:3},{value:"debug_traceCall",id:"debug_tracecall",level:3},{value:"debug_traceTransaction",id:"debug_tracetransaction",level:3},{value:"debug_traceTransactionByBlockAndIndex",id:"debug_tracetransactionbyblockandindex",level:3},{value:"debug_traceTransactionByBlockhashAndIndex",id:"debug_tracetransactionbyblockhashandindex",level:3},{value:"debug_traceTransactionInBlockByHash",id:"debug_tracetransactioninblockbyhash",level:3},{value:"debug_traceTransactionInBlockByIndex",id:"debug_tracetransactioninblockbyindex",level:3}];function o(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h3,{id:"debug_deletechainslice",children:"debug_deleteChainSlice"}),"\n",(0,l.jsx)(n.p,{children:"Deletes a slice of a chain from the tree on all branches (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"startNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"force"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_deleteChainSlice",\n "params": [startNumber, force]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getbadblocks",children:"debug_getBadBlocks"}),"\n",(0,l.jsx)(n.p,{children:"Return list of invalid blocks."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBadBlocks",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"block"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"author"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"difficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"extraData"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasLimit"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"miner"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mixHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"signature"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"size"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stateRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"step"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timestamp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactions"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"uncles"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInGwei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInWei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"index"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"validatorIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"rlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlp",children:"debug_getBlockRlp"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlp",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlpbyhash",children:"debug_getBlockRlpByHash"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlpByHash",\n "params": [hash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getchainlevel",children:"debug_getChainLevel"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a representation of tree branches on a given chain level (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getChainLevel",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockInfos"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isFinalized"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"wasProcessed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasBlockOnMainChain"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getconfigvalue",children:"debug_getConfigValue"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves the Nethermind configuration value, e.g. JsonRpc.Enabled"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"category"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"name"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getConfigValue",\n "params": [category, name]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawblock",children:"debug_getRawBlock"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Block format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawBlock",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawheader",children:"debug_getRawHeader"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Header format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawHeader",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawreceipts",children:"debug_getRawReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Receipt format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawtransaction",children:"debug_getRawTransaction"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Transaction format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawTransaction",\n "params": [transactionHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getsyncstage",children:"debug_getSyncStage"}),"\n",(0,l.jsx)(n.p,{children:"Retrives Nethermind Sync Stage, With extra Metadata"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getSyncStage",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"currentStage"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_insertreceipts",children:"debug_insertReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Insert receipts for the block after verifying receipts root correctness."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsxs)(c.A,{value:"params",label:"Parameters",children:[(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"receiptForRpc"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"contractAddress"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logs"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"removed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"topics"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"root"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"status"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]})]}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_insertReceipts",\n "params": [blockParameter, receiptForRpc]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_migratereceipts",children:"debug_migrateReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Sets the block number up to which receipts will be migrated to (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_migrateReceipts",\n "params": [blockNumber]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_resethead",children:"debug_resetHead"}),"\n",(0,l.jsx)(n.p,{children:"Updates / resets head block - use only when the node got stuck due to DB / memory corruption (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_resetHead",\n "params": [blockHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtracebadblocktofile",children:"debug_standardTraceBadBlockToFile"}),"\n",(0,l.jsxs)(n.p,{children:["This method is similar to the ",(0,l.jsx)(n.code,{children:"debug_standardTraceBlockToFile"})," method, but can be used to obtain information about a block that has been rejected as invalid."]}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBadBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtraceblocktofile",children:"debug_standardTraceBlockToFile"}),"\n",(0,l.jsx)(n.p,{children:"Writes to a file the full stack trace of all invoked opcodes of the transaction specified (or all transactions if not specified) that was included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblock",children:"debug_traceBlock"}),"\n",(0,l.jsx)(n.p,{children:"Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlock",\n "params": [blockRlp, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbyhash",children:"debug_traceBlockByHash"}),"\n",(0,l.jsx)(n.p,{children:"Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the database."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByHash",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbynumber",children:"debug_traceBlockByNumber"}),"\n",(0,l.jsx)(n.p,{children:'Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block that is already present in the database.'}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByNumber",\n "params": [blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracecall",children:"debug_traceCall"}),"\n",(0,l.jsx)(n.p,{children:"This method lets you run an eth_call within the context of the given block execution using the final state of parent block as the base. The block can be specified either by hash or by number. It takes the same input object as a eth_call. It returns the same output as debug_traceTransaction."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"call"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"accessList"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chainId"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"input"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isSystemTx"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mint"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"r"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"s"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sourceHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"v"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"yParity"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceCall",\n "params": [call, blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransaction",children:"debug_traceTransaction"}),"\n",(0,l.jsx)(n.p,{children:"This 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."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransaction",\n "params": [transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockandindex",children:"debug_traceTransactionByBlockAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockAndIndex",\n "params": [blockParameter, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockhashandindex",children:"debug_traceTransactionByBlockhashAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockhashAndIndex",\n "params": [blockHash, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyhash",children:"debug_traceTransactionInBlockByHash"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByHash",\n "params": [blockRlp, transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyindex",children:"debug_traceTransactionInBlockByIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByIndex",\n "params": [blockRlp, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function t(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(o,{...e})}):o(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var l=s(4164);const r={tabItem:"tabItem_Ymn6"};var i=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,l.A)(r.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var l=s(6540),r=s(4164),i=s(3104),c=s(6347),d=s(205),h=s(7485),a=s(1682),j=s(679);function x(e){return l.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,l.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function o(e){const{values:n,children:s}=e;return(0,l.useMemo)((()=>{const e=n??function(e){return x(e).map((e=>{let{props:{value:n,label:s,attributes:l,default:r}}=e;return{value:n,label:s,attributes:l,default:r}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function t(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const r=(0,c.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(i),(0,l.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,i=o(e),[c,h]=(0,l.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!t({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const l=s.find((e=>e.default))??s[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:n,tabValues:i}))),[a,x]=u({queryString:s,groupId:r}),[m,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,j.Dv)(s);return[r,(0,l.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:r}),b=(()=>{const e=a??m;return t({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{b&&h(b)}),[b]);return{selectedValue:c,selectValue:(0,l.useCallback)((e=>{if(!t({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);h(e),x(e),g(e)}),[x,g,i]),tabValues:i}}var g=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var p=s(4848);function f(e){let{className:n,block:s,selectedValue:l,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),r=d[s].value;r!==l&&(a(n),c(r))},x=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,p.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,p.jsx)("li",{role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,ref:e=>h.push(e),onKeyDown:x,onClick:j,...i,className:(0,r.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":l===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===i));return e?(0,l.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,p.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,l.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=m(e);return(0,p.jsxs)("div",{className:(0,r.A)("tabs-container",b.tabList),children:[(0,p.jsx)(f,{...n,...e}),(0,p.jsx)(v,{...n,...e})]})}function k(e){const n=(0,g.A)();return(0,p.jsx)(y,{...e,children:x(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var l=s(6540);const r={},i=l.createContext(r);function c(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8664],{7113:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>t,frontMatter:()=>d,metadata:()=>a,toc:()=>x});var l=s(4848),r=s(8453),i=s(1470),c=s(9365);const d={title:"debug namespace",sidebar_label:"debug",sidebar_position:2},h=void 0,a={id:"interacting/json-rpc-ns/debug",title:"debug namespace",description:"debug_deleteChainSlice",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/debug.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/debug",permalink:"/1.28.0/interacting/json-rpc-ns/debug",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/debug.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:2,frontMatter:{title:"debug namespace",sidebar_label:"debug",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"clique",permalink:"/1.28.0/interacting/json-rpc-ns/clique"},next:{title:"eth",permalink:"/1.28.0/interacting/json-rpc-ns/eth"}},j={},x=[{value:"debug_deleteChainSlice",id:"debug_deletechainslice",level:3},{value:"debug_getBadBlocks",id:"debug_getbadblocks",level:3},{value:"debug_getBlockRlp",id:"debug_getblockrlp",level:3},{value:"debug_getBlockRlpByHash",id:"debug_getblockrlpbyhash",level:3},{value:"debug_getChainLevel",id:"debug_getchainlevel",level:3},{value:"debug_getConfigValue",id:"debug_getconfigvalue",level:3},{value:"debug_getRawBlock",id:"debug_getrawblock",level:3},{value:"debug_getRawHeader",id:"debug_getrawheader",level:3},{value:"debug_getRawReceipts",id:"debug_getrawreceipts",level:3},{value:"debug_getRawTransaction",id:"debug_getrawtransaction",level:3},{value:"debug_getSyncStage",id:"debug_getsyncstage",level:3},{value:"debug_insertReceipts",id:"debug_insertreceipts",level:3},{value:"debug_migrateReceipts",id:"debug_migratereceipts",level:3},{value:"debug_resetHead",id:"debug_resethead",level:3},{value:"debug_standardTraceBadBlockToFile",id:"debug_standardtracebadblocktofile",level:3},{value:"debug_standardTraceBlockToFile",id:"debug_standardtraceblocktofile",level:3},{value:"debug_traceBlock",id:"debug_traceblock",level:3},{value:"debug_traceBlockByHash",id:"debug_traceblockbyhash",level:3},{value:"debug_traceBlockByNumber",id:"debug_traceblockbynumber",level:3},{value:"debug_traceCall",id:"debug_tracecall",level:3},{value:"debug_traceTransaction",id:"debug_tracetransaction",level:3},{value:"debug_traceTransactionByBlockAndIndex",id:"debug_tracetransactionbyblockandindex",level:3},{value:"debug_traceTransactionByBlockhashAndIndex",id:"debug_tracetransactionbyblockhashandindex",level:3},{value:"debug_traceTransactionInBlockByHash",id:"debug_tracetransactioninblockbyhash",level:3},{value:"debug_traceTransactionInBlockByIndex",id:"debug_tracetransactioninblockbyindex",level:3}];function o(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h3,{id:"debug_deletechainslice",children:"debug_deleteChainSlice"}),"\n",(0,l.jsx)(n.p,{children:"Deletes a slice of a chain from the tree on all branches (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"startNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"force"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_deleteChainSlice",\n "params": [startNumber, force]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getbadblocks",children:"debug_getBadBlocks"}),"\n",(0,l.jsx)(n.p,{children:"Return list of invalid blocks."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBadBlocks",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"block"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"author"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"baseFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"difficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"excessBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"extraData"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasLimit"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"miner"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mixHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentBeaconBlockRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"parentHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"receiptsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sha3Uncles"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"signature"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"size"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stateRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"step"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timestamp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactions"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"uncles"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawals"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInGwei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"amountInWei"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"index"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"validatorIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"withdrawalsRoot"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"rlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlp",children:"debug_getBlockRlp"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlp",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getblockrlpbyhash",children:"debug_getBlockRlpByHash"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a block in the RLP-serialized form."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getBlockRlpByHash",\n "params": [hash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getchainlevel",children:"debug_getChainLevel"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves a representation of tree branches on a given chain level (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"number"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getChainLevel",\n "params": [number]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockInfos"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isFinalized"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"totalDifficulty"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"wasProcessed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasBlockOnMainChain"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getconfigvalue",children:"debug_getConfigValue"}),"\n",(0,l.jsx)(n.p,{children:"Retrieves the Nethermind configuration value, e.g. JsonRpc.Enabled"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"category"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"name"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getConfigValue",\n "params": [category, name]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawblock",children:"debug_getRawBlock"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Block format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawBlock",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawheader",children:"debug_getRawHeader"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Header format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawHeader",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawreceipts",children:"debug_getRawReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Receipt format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getrawtransaction",children:"debug_getRawTransaction"}),"\n",(0,l.jsx)(n.p,{children:"Get Raw Transaction format."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getRawTransaction",\n "params": [transactionHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_getsyncstage",children:"debug_getSyncStage"}),"\n",(0,l.jsx)(n.p,{children:"Retrives Nethermind Sync Stage, With extra Metadata"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_getSyncStage",\n "params": []\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"currentStage"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_insertreceipts",children:"debug_insertReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Insert receipts for the block after verifying receipts root correctness."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsxs)(c.A,{value:"params",label:"Parameters",children:[(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"receiptForRpc"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"contractAddress"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasUsed"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logs"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"removed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"topics"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"logsBloom"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"root"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"status"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]})]}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_insertReceipts",\n "params": [blockParameter, receiptForRpc]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_migratereceipts",children:"debug_migrateReceipts"}),"\n",(0,l.jsx)(n.p,{children:"Sets the block number up to which receipts will be migrated to (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_migrateReceipts",\n "params": [blockNumber]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_resethead",children:"debug_resetHead"}),"\n",(0,l.jsx)(n.p,{children:"Updates / resets head block - use only when the node got stuck due to DB / memory corruption (Nethermind specific)."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_resetHead",\n "params": [blockHash]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtracebadblocktofile",children:"debug_standardTraceBadBlockToFile"}),"\n",(0,l.jsxs)(n.p,{children:["This method is similar to the ",(0,l.jsx)(n.code,{children:"debug_standardTraceBlockToFile"})," method, but can be used to obtain information about a block that has been rejected as invalid."]}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBadBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_standardtraceblocktofile",children:"debug_standardTraceBlockToFile"}),"\n",(0,l.jsx)(n.p,{children:"Writes to a file the full stack trace of all invoked opcodes of the transaction specified (or all transactions if not specified) that was included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_standardTraceBlockToFile",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblock",children:"debug_traceBlock"}),"\n",(0,l.jsx)(n.p,{children:"Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The parent of the block must be present or it will fail."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlock",\n "params": [blockRlp, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbyhash",children:"debug_traceBlockByHash"}),"\n",(0,l.jsx)(n.p,{children:"Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the database."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByHash",\n "params": [blockHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_traceblockbynumber",children:"debug_traceBlockByNumber"}),"\n",(0,l.jsx)(n.p,{children:'Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block that is already present in the database.'}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceBlockByNumber",\n "params": [blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": array of ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracecall",children:"debug_traceCall"}),"\n",(0,l.jsx)(n.p,{children:"This method lets you run an eth_call within the context of the given block execution using the final state of parent block as the base. The block can be specified either by hash or by number. It takes the same input object as a eth_call. It returns the same output as debug_traceTransaction."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"call"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"accessList"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"address"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"blockNumber"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"chainId"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"data"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"from"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasPrice"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"input"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"isSystemTx"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"mint"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"nonce"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"r"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"s"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sourceHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"to"}),": ",(0,l.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"transactionIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"type"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"v"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"yParity"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceCall",\n "params": [call, blockParameter, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransaction",children:"debug_traceTransaction"}),"\n",(0,l.jsx)(n.p,{children:"This 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."}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransaction",\n "params": [transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockandindex",children:"debug_traceTransactionByBlockAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockParameter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,l.jsx)(n.code,{children:"earliest"}),", ",(0,l.jsx)(n.code,{children:"finalized"}),", ",(0,l.jsx)(n.code,{children:"latest"}),", ",(0,l.jsx)(n.code,{children:"pending"}),", or ",(0,l.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockAndIndex",\n "params": [blockParameter, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactionbyblockhashandindex",children:"debug_traceTransactionByBlockhashAndIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionByBlockhashAndIndex",\n "params": [blockHash, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyhash",children:"debug_traceTransactionInBlockByHash"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"transactionHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByHash",\n "params": [blockRlp, transactionHash, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"debug_tracetransactioninblockbyindex",children:"debug_traceTransactionInBlockByIndex"}),"\n",(0,l.jsxs)(i.A,{children:[(0,l.jsx)(c.A,{value:"params",label:"Parameters",children:(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"blockRlp"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"txIndex"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"options"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStack"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"disableStorage"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"enableMemory"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"timeout"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracer"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"tracerConfig"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"hasValue"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"item"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"valueKind"}),": ",(0,l.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"txHash"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n"]}),"\n"]})}),(0,l.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "debug_traceTransactionInBlockByIndex",\n "params": [blockRlp, txIndex, options]\n }\'\n'})})}),(0,l.jsxs)(c.A,{value:"response",label:"Response",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"result"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"customTracerResult"}),": ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"value"}),": ",(0,l.jsx)(n.em,{children:"object"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"entries"}),": array of ",(0,l.jsx)(n.em,{children:"object"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"depth"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"error"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gasCost"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"memory"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"opcode"}),": ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"programCounter"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"stack"}),": array of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storage"}),": map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"failed"}),": ",(0,l.jsx)(n.em,{children:"boolean"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"gas"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"returnValue"}),": ",(0,l.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"storagesByDepth"}),": array of map of ",(0,l.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function t(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(o,{...e})}):o(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var l=s(4164);const r={tabItem:"tabItem_Ymn6"};var i=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,l.A)(r.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>k});var l=s(6540),r=s(4164),i=s(3104),c=s(6347),d=s(205),h=s(7485),a=s(1682),j=s(679);function x(e){return l.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,l.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function o(e){const{values:n,children:s}=e;return(0,l.useMemo)((()=>{const e=n??function(e){return x(e).map((e=>{let{props:{value:n,label:s,attributes:l,default:r}}=e;return{value:n,label:s,attributes:l,default:r}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function t(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const r=(0,c.W6)(),i=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(i),(0,l.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function m(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,i=o(e),[c,h]=(0,l.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!t({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const l=s.find((e=>e.default))??s[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:n,tabValues:i}))),[a,x]=u({queryString:s,groupId:r}),[m,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,j.Dv)(s);return[r,(0,l.useCallback)((e=>{s&&i.set(e)}),[s,i])]}({groupId:r}),b=(()=>{const e=a??m;return t({value:e,tabValues:i})?e:null})();(0,d.A)((()=>{b&&h(b)}),[b]);return{selectedValue:c,selectValue:(0,l.useCallback)((e=>{if(!t({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);h(e),x(e),g(e)}),[x,g,i]),tabValues:i}}var g=s(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var p=s(4848);function f(e){let{className:n,block:s,selectedValue:l,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:a}=(0,i.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),r=d[s].value;r!==l&&(a(n),c(r))},x=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,p.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:i}=e;return(0,p.jsx)("li",{role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,ref:e=>h.push(e),onKeyDown:x,onClick:j,...i,className:(0,r.A)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":l===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:i}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===i));return e?(0,l.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,p.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,l.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function y(e){const n=m(e);return(0,p.jsxs)("div",{className:(0,r.A)("tabs-container",b.tabList),children:[(0,p.jsx)(f,{...n,...e}),(0,p.jsx)(v,{...n,...e})]})}function k(e){const n=(0,g.A)();return(0,p.jsx)(y,{...e,children:x(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var l=s(6540);const r={},i=l.createContext(r);function c(e){const n=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),l.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f29622aa.47db57b1.js b/assets/js/f29622aa.2b189513.js similarity index 98% rename from assets/js/f29622aa.47db57b1.js rename to assets/js/f29622aa.2b189513.js index 5e33c6f50..ba461ab05 100644 --- a/assets/js/f29622aa.47db57b1.js +++ b/assets/js/f29622aa.2b189513.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1036],{9786:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=t(4848),i=t(8453);const o={title:"Performance tuning",sidebar_position:7},r=void 0,a={id:"fundamentals/performance-tuning",title:"Performance tuning",description:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.",source:"@site/versioned_docs/version-1.25.4/fundamentals/performance-tuning.md",sourceDirName:"fundamentals",slug:"/fundamentals/performance-tuning",permalink:"/1.25.4/fundamentals/performance-tuning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/performance-tuning.md",tags:[],version:"1.25.4",lastUpdatedAt:1728683983e3,sidebarPosition:7,frontMatter:{title:"Performance tuning",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Pruning",permalink:"/1.25.4/fundamentals/pruning"},next:{title:"Private networks",permalink:"/1.25.4/fundamentals/private-networks"}},c={},d=[{value:"Peer discovery",id:"peer-discovery",level:2},{value:"Port forwarding",id:"port-forwarding",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Snap sync",id:"snap-sync",level:2},{value:"Old bodies and receipts",id:"old-bodies-and-receipts",level:2},{value:"Block processing time and attestation",id:"block-processing-time-and-attestation",level:2}];function l(e){const n={code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs."}),"\n",(0,s.jsx)(n.h2,{id:"peer-discovery",children:"Peer discovery"}),"\n",(0,s.jsxs)(n.p,{children:["To connect to the Ethereum network, Nethermind needs to maintain connections to other clients. The number of connections can be configured with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers "}),". The default value depends on the network. Increasing this number may reduce syncing time, while reducing this number may help with attestation performance.\nAlso, you can increase the rate at which a new connection is established with ",(0,s.jsx)(n.code,{children:"--Network.MaxOutgoingConnectsPerSec "}),". The default value is 20 while 50 would be a reasonable higher value. This tends to reduce the snap sync time; however, some ISPs may throttle your Internet connection if you set this value too high. Also, some WiFi routers may hang if the value is set too high."]}),"\n",(0,s.jsx)(n.h2,{id:"port-forwarding",children:"Port forwarding"}),"\n",(0,s.jsxs)(n.p,{children:["While port forwarding is not strictly required, it helps significantly with finding peers and is essential for the network's overall health. The exact steps for port forwarding highly depend on your environment, router, and ISP. For most home configurations, automatic port forwarding can be turned on with ",(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true"}),".\nSome ISPs are more restrictive and do not support port forwarding and/or utilize provider-level NAT. In such cases, your best option is to use a VPN that supports port forwarding. Keep in mind that consensus clients need a separate port forwarding."]}),"\n",(0,s.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,s.jsx)(n.p,{children:"On the Ethereum mainnet, most of the syncing time is split into three phases: snap sync, old bodies, and old receipts. Strictly speaking, there are also fast sync, full sync, and state sync phases. However, they usually complete in less than a minute, with state sync usually taking up to 3 minutes."}),"\n",(0,s.jsx)(n.p,{children:"At the moment, the best test case sync time is 1 hour 50 minutes for all phases with the following configuration:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"CPU: AMD Ryzen 9 7950X"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Memory: 128GB RAM"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Storage: Intel Optane SSD 905P Series 900GB"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Network: 1 Gbps Internet with TorGuard VPN with WireGuard protocol. Both execution and consensus clients port forwarding are set up manually."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Command line options:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true\n--Network.MaxOutgoingConnectsPerSec 50\n--Network.ProcessingThreadCount 32\n--Sync.TuneDbMode HeavyWrite\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"snap-sync",children:"Snap sync"}),"\n",(0,s.jsx)(n.p,{children:"Snap sync is the process of downloading the Ethereum state tree. After it is complete, and after the state sync phase, Nethermind can process and follow the chain. The fastest tested snap sync and state sync time is 25 minutes.\nThis phase is the most I/O-intensive sync phase, and therefore, assuming a fast internet, the sync time highly depends on your SSD's write speed. Remember that most SSDs only advertise peak write speed, usually above 5GB/s. However, they tend to slow down significantly to around 0.5GB/s (or even less for a QLC SSD) after a few seconds. Therefore, look for SSDs with high sustained write speed."}),"\n",(0,s.jsxs)(n.p,{children:["Also, ensuring your SSD is sufficiently cooled to prevent thermal throttling is essential. This is often overlooked as most workloads rarely stress SSD as much; however, to reduce sync time, Nethermind will utilize your SSD to its limit. If, for whatever reason, you need to minimize the I/O load, you can specify a rate limit with ",(0,s.jsx)(n.code,{children:"--Db.MaxBytesPerSec 1000000000"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Nethermind temporarily changes the database configuration during sync to optimize it for writing, notably the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode HeavyWrite"})," is turned on by default. On some systems with slow SSDs, the use of the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode AggressiveHeavyWrite"})," may boost. Also, the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode DisableCompaction"})," can be used to disable compaction altogether. This is likely faster for systems using entry-level NVMe SSDs and is also useful to extend the lifespan of your SSD as it provides the lowest total writes possible. However, it uses about 3GB of extra memory during snap sync. The state sync phase may appear to hang for about 10 minutes as the whole database compacts for the first time after snap sync."]}),"\n",(0,s.jsxs)(n.p,{children:["If you are running on a VPS with artificially capped IOPS, or you are using SATA SSD (which is highly not recommended), increasing the state DB block size with ",(0,s.jsx)(n.code,{children:"--Db.StateDbBlockSize 16384"})," may help to reduce snap sync time. However, this negatively affects block processing time. An alternative is to turn on compaction readahead with ",(0,s.jsx)(n.code,{children:"--Db.CompactionReadAhead 128000"}),"; however, this may take up a few extra GB of memory depending on the readahead value."]}),"\n",(0,s.jsx)(n.h2,{id:"old-bodies-and-receipts",children:"Old bodies and receipts"}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and old receipts are the process of downloading block bodies and receipts. This is required for some RPC methods, such as ",(0,s.jsx)(n.code,{children:"eth_getLogs"}),", and for consensus clients to work correctly. If you don't need them, skip this phase with"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync false\n--Sync.DownloadReceiptsInFastSync false\n--Sync.NonValidatorNode true\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and receipts are mainly limited by your Internet connection. With a 1Gbps connection, they consume around 250MB/s and 500MB/s of writes, respectively, which is generally reasonable for most PCIE SSDs. On older systems or VPS with low single thread performance and high Internet speed, the block body deserialization may be a bottleneck, in which case, you can increase the number of network processing threads with ",(0,s.jsx)(n.code,{children:"--Network.ProcessingThreadCount 32"}),". However, this may impact block processing time."]}),"\n",(0,s.jsx)(n.h2,{id:"block-processing-time-and-attestation",children:"Block processing time and attestation"}),"\n",(0,s.jsxs)(n.p,{children:["Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time.\nTo help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option ",(0,s.jsx)(n.code,{children:"--Init.MemoryHint 2000000000"}),". If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time."]}),"\n",(0,s.jsxs)(n.p,{children:["It is also possible to disable compression of the state DB with ",(0,s.jsx)(n.code,{children:"--Db.StateDbDisableCompression true"})," that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers 20"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[1036],{9786:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=t(4848),i=t(8453);const o={title:"Performance tuning",sidebar_position:7},r=void 0,a={id:"fundamentals/performance-tuning",title:"Performance tuning",description:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs.",source:"@site/versioned_docs/version-1.25.4/fundamentals/performance-tuning.md",sourceDirName:"fundamentals",slug:"/fundamentals/performance-tuning",permalink:"/1.25.4/fundamentals/performance-tuning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.25.4/fundamentals/performance-tuning.md",tags:[],version:"1.25.4",lastUpdatedAt:1728684487e3,sidebarPosition:7,frontMatter:{title:"Performance tuning",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Pruning",permalink:"/1.25.4/fundamentals/pruning"},next:{title:"Private networks",permalink:"/1.25.4/fundamentals/private-networks"}},c={},d=[{value:"Peer discovery",id:"peer-discovery",level:2},{value:"Port forwarding",id:"port-forwarding",level:2},{value:"Sync time",id:"sync-time",level:2},{value:"Snap sync",id:"snap-sync",level:2},{value:"Old bodies and receipts",id:"old-bodies-and-receipts",level:2},{value:"Block processing time and attestation",id:"block-processing-time-and-attestation",level:2}];function l(e){const n={code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"By default, Nethermind is configured for general use cases that fit well for most users. However, to improve various aspects of Nethermind performance, there are options for different subsystems that can be configured for your specific needs."}),"\n",(0,s.jsx)(n.h2,{id:"peer-discovery",children:"Peer discovery"}),"\n",(0,s.jsxs)(n.p,{children:["To connect to the Ethereum network, Nethermind needs to maintain connections to other clients. The number of connections can be configured with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers "}),". The default value depends on the network. Increasing this number may reduce syncing time, while reducing this number may help with attestation performance.\nAlso, you can increase the rate at which a new connection is established with ",(0,s.jsx)(n.code,{children:"--Network.MaxOutgoingConnectsPerSec "}),". The default value is 20 while 50 would be a reasonable higher value. This tends to reduce the snap sync time; however, some ISPs may throttle your Internet connection if you set this value too high. Also, some WiFi routers may hang if the value is set too high."]}),"\n",(0,s.jsx)(n.h2,{id:"port-forwarding",children:"Port forwarding"}),"\n",(0,s.jsxs)(n.p,{children:["While port forwarding is not strictly required, it helps significantly with finding peers and is essential for the network's overall health. The exact steps for port forwarding highly depend on your environment, router, and ISP. For most home configurations, automatic port forwarding can be turned on with ",(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true"}),".\nSome ISPs are more restrictive and do not support port forwarding and/or utilize provider-level NAT. In such cases, your best option is to use a VPN that supports port forwarding. Keep in mind that consensus clients need a separate port forwarding."]}),"\n",(0,s.jsx)(n.h2,{id:"sync-time",children:"Sync time"}),"\n",(0,s.jsx)(n.p,{children:"On the Ethereum mainnet, most of the syncing time is split into three phases: snap sync, old bodies, and old receipts. Strictly speaking, there are also fast sync, full sync, and state sync phases. However, they usually complete in less than a minute, with state sync usually taking up to 3 minutes."}),"\n",(0,s.jsx)(n.p,{children:"At the moment, the best test case sync time is 1 hour 50 minutes for all phases with the following configuration:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"CPU: AMD Ryzen 9 7950X"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Memory: 128GB RAM"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Storage: Intel Optane SSD 905P Series 900GB"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Network: 1 Gbps Internet with TorGuard VPN with WireGuard protocol. Both execution and consensus clients port forwarding are set up manually."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Command line options:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Network.EnableUPnP true\n--Network.MaxOutgoingConnectsPerSec 50\n--Network.ProcessingThreadCount 32\n--Sync.TuneDbMode HeavyWrite\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"snap-sync",children:"Snap sync"}),"\n",(0,s.jsx)(n.p,{children:"Snap sync is the process of downloading the Ethereum state tree. After it is complete, and after the state sync phase, Nethermind can process and follow the chain. The fastest tested snap sync and state sync time is 25 minutes.\nThis phase is the most I/O-intensive sync phase, and therefore, assuming a fast internet, the sync time highly depends on your SSD's write speed. Remember that most SSDs only advertise peak write speed, usually above 5GB/s. However, they tend to slow down significantly to around 0.5GB/s (or even less for a QLC SSD) after a few seconds. Therefore, look for SSDs with high sustained write speed."}),"\n",(0,s.jsxs)(n.p,{children:["Also, ensuring your SSD is sufficiently cooled to prevent thermal throttling is essential. This is often overlooked as most workloads rarely stress SSD as much; however, to reduce sync time, Nethermind will utilize your SSD to its limit. If, for whatever reason, you need to minimize the I/O load, you can specify a rate limit with ",(0,s.jsx)(n.code,{children:"--Db.MaxBytesPerSec 1000000000"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Nethermind temporarily changes the database configuration during sync to optimize it for writing, notably the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode HeavyWrite"})," is turned on by default. On some systems with slow SSDs, the use of the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode AggressiveHeavyWrite"})," may boost. Also, the option ",(0,s.jsx)(n.code,{children:"--Sync.TuneDbMode DisableCompaction"})," can be used to disable compaction altogether. This is likely faster for systems using entry-level NVMe SSDs and is also useful to extend the lifespan of your SSD as it provides the lowest total writes possible. However, it uses about 3GB of extra memory during snap sync. The state sync phase may appear to hang for about 10 minutes as the whole database compacts for the first time after snap sync."]}),"\n",(0,s.jsxs)(n.p,{children:["If you are running on a VPS with artificially capped IOPS, or you are using SATA SSD (which is highly not recommended), increasing the state DB block size with ",(0,s.jsx)(n.code,{children:"--Db.StateDbBlockSize 16384"})," may help to reduce snap sync time. However, this negatively affects block processing time. An alternative is to turn on compaction readahead with ",(0,s.jsx)(n.code,{children:"--Db.CompactionReadAhead 128000"}),"; however, this may take up a few extra GB of memory depending on the readahead value."]}),"\n",(0,s.jsx)(n.h2,{id:"old-bodies-and-receipts",children:"Old bodies and receipts"}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and old receipts are the process of downloading block bodies and receipts. This is required for some RPC methods, such as ",(0,s.jsx)(n.code,{children:"eth_getLogs"}),", and for consensus clients to work correctly. If you don't need them, skip this phase with"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"--Sync.DownloadBodiesInFastSync false\n--Sync.DownloadReceiptsInFastSync false\n--Sync.NonValidatorNode true\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Old bodies and receipts are mainly limited by your Internet connection. With a 1Gbps connection, they consume around 250MB/s and 500MB/s of writes, respectively, which is generally reasonable for most PCIE SSDs. On older systems or VPS with low single thread performance and high Internet speed, the block body deserialization may be a bottleneck, in which case, you can increase the number of network processing threads with ",(0,s.jsx)(n.code,{children:"--Network.ProcessingThreadCount 32"}),". However, this may impact block processing time."]}),"\n",(0,s.jsx)(n.h2,{id:"block-processing-time-and-attestation",children:"Block processing time and attestation"}),"\n",(0,s.jsxs)(n.p,{children:["Block processing time is limited mainly by SSD performance. Strictly speaking, it's not the IOPS that matters, but the response time. Nevertheless, the IOPS is a good approximation as most SSDs don't advertise the response time.\nTo help further reduce reads from SSD, Nethermind has multiple levels of caching, which is tuned by the memory hint option ",(0,s.jsx)(n.code,{children:"--Init.MemoryHint 2000000000"}),". If you are running a system with more than 16GB of memory, it is highly recommended to increase this value. In-memory pruning (turned on by default) also improves block processing time."]}),"\n",(0,s.jsxs)(n.p,{children:["It is also possible to disable compression of the state DB with ",(0,s.jsx)(n.code,{children:"--Db.StateDbDisableCompression true"})," that improves block processing time by 3% to 5% but increases disk space usage correspondingly. Block processing is susceptible to the number of peers connected. Therefore, after the node is synced, it makes sense to reduce the number of peers with ",(0,s.jsx)(n.code,{children:"--Network.MaxActivePeers 20"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(6540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f796df1d.4e30400b.js b/assets/js/f796df1d.6167f2df.js similarity index 99% rename from assets/js/f796df1d.4e30400b.js rename to assets/js/f796df1d.6167f2df.js index 616358279..bf422ae8a 100644 --- a/assets/js/f796df1d.4e30400b.js +++ b/assets/js/f796df1d.6167f2df.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[454],{3234:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>l,toc:()=>t});var r=s(4848),i=s(8453);const d={title:"Metrics",sidebar_position:0,toc_max_heading_level:4},c=void 0,l={id:"monitoring/metrics/metrics",title:"Metrics",description:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:",source:"@site/versioned_docs/version-1.26.0/monitoring/metrics/metrics.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/",permalink:"/1.26.0/monitoring/metrics/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/monitoring/metrics/metrics.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Metrics",sidebar_position:0,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"web3",permalink:"/1.26.0/interacting/json-rpc-ns/web3"},next:{title:"Grafana and Prometheus",permalink:"/1.26.0/monitoring/metrics/grafana-and-prometheus"}},h={},t=[{value:"Parameters by namespace",id:"parameters-by-namespace",level:3},{value:"Aura",id:"aura",level:4},{value:"Blockchain",id:"blockchain",level:4},{value:"Db",id:"db",level:4},{value:"Evm",id:"evm",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"Merge",id:"merge",level:4},{value:"Network",id:"network",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Runner",id:"runner",level:4},{value:"Synchronization",id:"synchronization",level:4},{value:"Trie",id:"trie",level:4},{value:"TxPool",id:"txpool",level:4}];function o(e){const n={a:"a",code:"code",em:"em",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.26.0/monitoring/metrics/grafana-and-prometheus",children:"Grafana and Prometheus"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.26.0/monitoring/metrics/dotnet-counters",children:"dotnet-counters"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"parameters-by-namespace",children:"Parameters by namespace"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"aura",children:"Aura"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_au_ra_step"})})}),"\n",(0,r.jsx)(n.p,{children:"Current AuRa step"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_commit_hash_transaction"})})}),"\n",(0,r.jsx)(n.p,{children:"RANDAO number of commit hash transactions"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_emit_initiate_change"})})}),"\n",(0,r.jsx)(n.p,{children:"POSDAO number of emit init change transactions"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reported_benign_misbehaviour"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reported benign misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reported_malicious_misbehaviour"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reported malicious misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reveal_number"})})}),"\n",(0,r.jsx)(n.p,{children:"RANDAO number of reveal number transactions"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sealed_transactions"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of sealed transactions generated by engine"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_validators_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of current AuRa validators"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"blockchain",children:"Blockchain"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_best_known_block_number"})})}),"\n",(0,r.jsx)(n.p,{children:"The estimated highest block available."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blockchain_height"})})}),"\n",(0,r.jsx)(n.p,{children:"The current height of the canonical chain."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of blocks processed"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_sealed"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of sealed blocks"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_failed_block_seals"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of failed block seals"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_gas_limit"})})}),"\n",(0,r.jsx)(n.p,{children:"Gas Limit for processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_gas_used"})})}),"\n",(0,r.jsx)(n.p,{children:"Gas Used in processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_last_difficulty"})})}),"\n",(0,r.jsx)(n.p,{children:"Difficulty of the last block"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_mgas"})})}),"\n",(0,r.jsx)(n.p,{children:"Total MGas processed"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_processing_queue_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blocks awaiting for processing."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_recovery_queue_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blocks awaiting for recovery of public keys from signatures."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reorganizations"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of chain reorganizations"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_total_difficulty"})})}),"\n",(0,r.jsx)(n.p,{children:"Total difficulty on the chain"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_transactions"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of transactions processed"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"db",children:"Db"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bad_blocks_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of BadBlocks DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bad_blocks_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of BadBlocks DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transactions_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of BlobTransactions DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transactions_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of BlobTransactions DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_infos_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Block Infos DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_infos_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of blockInfos DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_infos_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Block Infos DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_number_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of BlockNumbers DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_number_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of BlockNumbers DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Blocks DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of blocks DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Blocks DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bloom_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Bloom DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bloom_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of bloom DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bloom_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Bloom DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_c_h_t_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of CHT DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_cht_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of cht DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_c_h_t_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of CHT DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_code_db_cache"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Code DB cache reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_code_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Code DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_code_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of code DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_code_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Code DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_block_cache_memory_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of unmanaged memory for DB block caches in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_block_cache_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Database block cache size per database"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_compaction_stats"})})}),"\n",(0,r.jsx)(n.p,{children:"Metrics extracted from RocksDB Compaction Stats"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_index_filter_memory_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of unmanaged memory for DB indexes and filters in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_index_filter_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Database index and filter size per database"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_memtable_memory_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of unmanaged memory for DB memtables in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_memtable_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Database memtable per database"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Database reads per database"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Database size per database"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_stats"})})}),"\n",(0,r.jsx)(n.p,{children:"Metrics extracted from RocksDB Compaction Stats and DB Statistics"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_total_memory_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of total unmanaged memory for DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Database writes per database"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_header_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Headers DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_header_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Headers DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_headers_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of headers DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_metadata_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Metadata DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_metadata_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of metadata DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_metadata_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Metadata DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_other_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of other DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_other_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of other DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receipts_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Receipts DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receipts_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of receipts DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receipts_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Receipts DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_pruning"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Indicator if StadeDb is being pruned."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of State DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of state DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of State DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_tree_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of State Trie reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_tree_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Blocks Trie writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_storage_tree_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of storage trie reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_storage_tree_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of storage trie writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_witness_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Witness DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_witness_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of witness DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_witness_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Witness DB writes."]}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"evm",children:"Evm"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blockhash_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BLOCKHASH opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bn254_add_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BN254_ADD precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bn254_mul_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BN254_MUL precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bn254_pairing_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BN254_PAIRING precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_calls"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of calls to other contracts."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_creates"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of contract create calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_ec_recover_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of EC_RECOVERY precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_empty_calls"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of calls made to addresses without code."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_evm_exceptions"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of EVM exceptions thrown by contracts."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_m_copy_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of MCOPY opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_mod_exp_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of MODEXP precompiles executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_mod_exp_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of MODEXP precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_point_evaluation_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Point Evaluation precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_ripemd160_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of RIPEMD160 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_self_destructs"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SELFDESTRUCT calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sha256_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SHA256 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sload_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sstore_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SSTORE opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tload_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of TLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tstore_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of TSTORE opcodes executed."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_bytes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC bytes received."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_bytes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC bytes sent."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_errors"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests processed with errors."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_invalid_requests"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests that were invalid."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_request_deserialization_failures"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests that failed JSON deserialization."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_requests"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of JSON RPC requests received by the node."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_successes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests processed successfully."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"merge",children:"Merge"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_forkchoice_upded_execution_time"})})}),"\n",(0,r.jsx)(n.p,{children:"ForkchoiceUpded request execution time"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_get_payload_requests"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of GetPayload Requests"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_new_payload_execution_time"})})}),"\n",(0,r.jsx)(n.p,{children:"NewPayload request execution time"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_number_of_transactions_in_get_payload"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Transactions included in the Last GetPayload Request"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"network",children:"Network"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_already_connected_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to already connected"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_breach_of_protocol_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to breach of protocol"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_client_quitting_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to client quitting"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_disconnect_requested_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to disconnect requested"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_block_bodies_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.62 BlockBodies messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_block_headers_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.62 BlockHeaders messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_get_block_bodies_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.62 GetBlockBodies messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_get_block_headers_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.62 GetBlockHeaders messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_new_block_hashes_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.62 NewBlockHashes messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_new_block_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.62 NewBlock messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_transactions_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.62 Transactions messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_get_node_data_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.63 GetNodeData messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_get_receipts_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.63 GetReceipts messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_node_data_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.63 NodeData messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_receipts_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.63 Receipts messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_get_pooled_transactions_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.65 GetPooledTransactions messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_get_pooled_transactions_requested"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.65 GetPooledTransactions messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_new_pooled_transaction_hashes_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.65 NewPooledTransactionHashes messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_new_pooled_transaction_hashes_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.65 NewPooledTransactionHashes messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_pooled_transactions_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.65 PooledTransactions messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_block_bodies_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 BlockBodies messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_block_headers_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 BlockHeaders messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_block_bodies_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 GetBlockBodies messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_block_headers_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 GetBlockHeaders messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_node_data_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 GetNodeData messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_pooled_transactions_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 GetPooledTransactions messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_pooled_transactions_requested"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 GetPooledTransactions messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_receipts_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 GetReceipts messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_node_data_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 NodeData messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_pooled_transactions_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 PooledTransactions messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_receipts_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 Receipts messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth68_new_pooled_transaction_hashes_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.68 NewPooledTransactionHashes messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth68_new_pooled_transaction_hashes_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.68 NewPooledTransactionHashes messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_get_node_data_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of GetNodeData messages received via NodeData protocol"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_handshakes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of devp2p handshakes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_handshake_timeouts"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of devp2p handshake timeouts"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_hellos_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of devp2p hello messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_hellos_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of devp2p hello messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_incoming_connections"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of incoming connection."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_incoming_p2_p_message_bytes"})})}),"\n",(0,r.jsx)(n.p,{children:"Bytes of incoming p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_incoming_p2_p_messages"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of incoming p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_incompatible_p2_p_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to incompatible devp2p version"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_les_statuses_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of les status messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_les_statuses_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of les status messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_already_connected_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to already connected"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_breach_of_protocol_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of sent disconnects due to breach of protocol"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_client_quitting_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to client quitting"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_disconnect_requested_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to disconnect requested"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_disconnects_total"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of local disconnects"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_incompatible_p2_p_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to incompatible devp2p"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_null_node_identity_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to missing node identity"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_other_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to other reason"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_receive_message_timeout_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to request timeout"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_same_as_self_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to connection to self"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_tcp_subsystem_error_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to TCP error"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_too_many_peers_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to breach of protocol"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_unexpected_identity_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to node identity info mismatch"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_useless_peer_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of sent disconnects due to useless peer"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_node_data_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of NodeData messages received via NodeData protocol"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_null_node_identity_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to missing peer identity"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_other_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to other reasons"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_outgoing_connections"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of outgoing connection."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_outgoing_p2_p_message_bytes"})})}),"\n",(0,r.jsx)(n.p,{children:"Bytes of outgoing p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_outgoing_p2_p_messages"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of outgoing p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_peer_limit"})})}),"\n",(0,r.jsx)(n.p,{children:"The maximum number of peers this node allows to connect."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receive_message_timeout_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to request timeouts"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_remote_disconnects_total"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of remote disconnects"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_same_as_self_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to connecting to self"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_account_range_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP AccountRange messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_byte_codes_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP ByteCodes messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_account_range_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetAccountRange messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_account_range_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetAccountRange messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_byte_codes_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetByteCodes messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_byte_codes_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetByteCodes messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_storage_ranges_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetStorageRanges messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_storage_ranges_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetStorageRanges messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_trie_nodes_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetTrieNodes messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_trie_nodes_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetTrieNodes messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_storage_ranges_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP StorageRanges messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_trie_nodes_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP TrieNodes messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_statuses_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth status messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_statuses_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth status messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tcp_subsystem_error_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of disconnects due to TCP error"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_too_many_peers_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to too many peers"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_unexpected_identity_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to peer identity information mismatch"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_useless_peer_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to useless peer"]}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"pruning",children:"Pruning"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_cached_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that are currently kept in cache (either persisted or not)"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_committed_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been committed since the session start. These nodes may have been pruned, persisted or replaced."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_deep_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been removed from the cache during deep pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_deep_pruning_time"})})}),"\n",(0,r.jsx)(n.p,{children:"Time taken by the last deep pruning."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_last_persisted_block_number"})})}),"\n",(0,r.jsx)(n.p,{children:"Last persisted block number (snapshot)."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_loaded_from_cache_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reads from the node cache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_loaded_from_db_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_loaded_from_rlp_cache_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reads from the RLP cache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_memory_used_by_cache"})})}),"\n",(0,r.jsx)(n.p,{children:"Estimated memory used by cache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_persisted_node_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been persisted since the session start."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pruned_transient_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they were no longer needed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pruning_time"})})}),"\n",(0,r.jsx)(n.p,{children:"Time taken by the last pruning."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_removed_node_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that was removed via live pruning."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_replaced_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of nodes that have been exactly the same as other nodes in the cache when committing."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snapshot_persistence_time"})})}),"\n",(0,r.jsx)(n.p,{children:"Time taken by the last snapshot persistence."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"runner",children:"Runner"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_version"})})}),"\n",(0,r.jsx)(n.p,{children:"Version number"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"synchronization",children:"Synchronization"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sync_peers"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of sync peers."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"trie",children:"Trie"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tree_node_hash_calculations"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of trie node hash calculations."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tree_node_rlp_decodings"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of trie node RLP decodings."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tree_node_rlp_encodings"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of trie node RLP encodings."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"txpool",children:"TxPool"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blobs_in_block"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blobs in the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transaction_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blob transactions in pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transactions_in_block"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blob transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level1"})})}),"\n",(0,r.jsx)(n.p,{children:"Ratio of transactions in the block absent in hashCache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level2"})})}),"\n",(0,r.jsx)(n.p,{children:"Ratio of transactions in the block absent in pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eip1559_transactions_ratio"})})}),"\n",(0,r.jsx)(n.p,{children:"Ratio of 1559-type transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending1559_transactions_added"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending 1559-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_blob_transactions_added"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending blob-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_added"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_balance_below_value"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is less than txn value."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_conflicting_tx_type"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions rejected because of already pending tx of other type (allowed blob txs or others, not both at once)."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_discarded"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_evicted"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions evicted from transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_gas_limit_too_high"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the gas limit was to high for the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of hashes of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of hashes of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_known"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of already known pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_low_nonce"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions with already used nonce."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_malformed"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of malformed transactions."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_gap"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not having preceding nonce of this sender in TxPool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_too_far_in_future"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions with nonce too far in future."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_not_supported_tx_type"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not supported transaction type."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored after passing early rejections as balance is too low to compete with lowest effective fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_replace"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were trying to replace tx with the same sender and nonce and failed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_balance"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance too low for fee to be higher than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_fee"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of fee lower than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_priority_fee"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of priority fee lower than minimal requirement."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_unresolvable_sender"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the sender couldn't be resolved."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_with_expensive_filtering"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions that reached filters which are resource expensive"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_zero_balance"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is zero and cannot pay gas."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_transaction_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions in pool."}),"\n"]}),"\n"]})})]})]})}function x(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>l});var r=s(6540);const i={},d=r.createContext(i);function c(e){const n=r.useContext(d);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[454],{3234:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>l,toc:()=>t});var r=s(4848),i=s(8453);const d={title:"Metrics",sidebar_position:0,toc_max_heading_level:4},c=void 0,l={id:"monitoring/metrics/metrics",title:"Metrics",description:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:",source:"@site/versioned_docs/version-1.26.0/monitoring/metrics/metrics.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/",permalink:"/1.26.0/monitoring/metrics/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/monitoring/metrics/metrics.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Metrics",sidebar_position:0,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"web3",permalink:"/1.26.0/interacting/json-rpc-ns/web3"},next:{title:"Grafana and Prometheus",permalink:"/1.26.0/monitoring/metrics/grafana-and-prometheus"}},h={},t=[{value:"Parameters by namespace",id:"parameters-by-namespace",level:3},{value:"Aura",id:"aura",level:4},{value:"Blockchain",id:"blockchain",level:4},{value:"Db",id:"db",level:4},{value:"Evm",id:"evm",level:4},{value:"JsonRpc",id:"jsonrpc",level:4},{value:"Merge",id:"merge",level:4},{value:"Network",id:"network",level:4},{value:"Pruning",id:"pruning",level:4},{value:"Runner",id:"runner",level:4},{value:"Synchronization",id:"synchronization",level:4},{value:"Trie",id:"trie",level:4},{value:"TxPool",id:"txpool",level:4}];function o(e){const n={a:"a",code:"code",em:"em",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"Currently, Nethermind provides the following options to monitor and collect metrics about itself:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.26.0/monitoring/metrics/grafana-and-prometheus",children:"Grafana and Prometheus"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/1.26.0/monitoring/metrics/dotnet-counters",children:"dotnet-counters"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"parameters-by-namespace",children:"Parameters by namespace"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"aura",children:"Aura"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_au_ra_step"})})}),"\n",(0,r.jsx)(n.p,{children:"Current AuRa step"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_commit_hash_transaction"})})}),"\n",(0,r.jsx)(n.p,{children:"RANDAO number of commit hash transactions"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_emit_initiate_change"})})}),"\n",(0,r.jsx)(n.p,{children:"POSDAO number of emit init change transactions"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reported_benign_misbehaviour"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reported benign misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reported_malicious_misbehaviour"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reported malicious misbehaviour validators"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reveal_number"})})}),"\n",(0,r.jsx)(n.p,{children:"RANDAO number of reveal number transactions"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sealed_transactions"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of sealed transactions generated by engine"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_validators_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of current AuRa validators"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"blockchain",children:"Blockchain"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_best_known_block_number"})})}),"\n",(0,r.jsx)(n.p,{children:"The estimated highest block available."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blockchain_height"})})}),"\n",(0,r.jsx)(n.p,{children:"The current height of the canonical chain."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of blocks processed"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_sealed"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of sealed blocks"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_failed_block_seals"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of failed block seals"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_gas_limit"})})}),"\n",(0,r.jsx)(n.p,{children:"Gas Limit for processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_gas_used"})})}),"\n",(0,r.jsx)(n.p,{children:"Gas Used in processed blocks"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_last_difficulty"})})}),"\n",(0,r.jsx)(n.p,{children:"Difficulty of the last block"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_mgas"})})}),"\n",(0,r.jsx)(n.p,{children:"Total MGas processed"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_processing_queue_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blocks awaiting for processing."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_recovery_queue_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blocks awaiting for recovery of public keys from signatures."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_reorganizations"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of chain reorganizations"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_total_difficulty"})})}),"\n",(0,r.jsx)(n.p,{children:"Total difficulty on the chain"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_transactions"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of transactions processed"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"db",children:"Db"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bad_blocks_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of BadBlocks DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bad_blocks_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of BadBlocks DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transactions_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of BlobTransactions DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transactions_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of BlobTransactions DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_infos_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Block Infos DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_infos_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of blockInfos DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_infos_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Block Infos DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_number_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of BlockNumbers DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_block_number_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of BlockNumbers DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Blocks DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of blocks DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blocks_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Blocks DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bloom_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Bloom DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bloom_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of bloom DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bloom_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Bloom DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_c_h_t_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of CHT DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_cht_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of cht DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_c_h_t_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of CHT DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_code_db_cache"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Code DB cache reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_code_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Code DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_code_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of code DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_code_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Code DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_block_cache_memory_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of unmanaged memory for DB block caches in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_block_cache_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Database block cache size per database"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_compaction_stats"})})}),"\n",(0,r.jsx)(n.p,{children:"Metrics extracted from RocksDB Compaction Stats"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_index_filter_memory_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of unmanaged memory for DB indexes and filters in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_index_filter_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Database index and filter size per database"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_memtable_memory_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of unmanaged memory for DB memtables in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_memtable_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Database memtable per database"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_reads"})})}),"\n",(0,r.jsx)(n.p,{children:"Database reads per database"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_size"})})}),"\n",(0,r.jsx)(n.p,{children:"Database size per database"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_stats"})})}),"\n",(0,r.jsx)(n.p,{children:"Metrics extracted from RocksDB Compaction Stats and DB Statistics"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_total_memory_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of total unmanaged memory for DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_db_writes"})})}),"\n",(0,r.jsx)(n.p,{children:"Database writes per database"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_header_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Headers DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_header_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Headers DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_headers_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of headers DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_metadata_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Metadata DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_metadata_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of metadata DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_metadata_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Metadata DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_other_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of other DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_other_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of other DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receipts_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Receipts DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receipts_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of receipts DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receipts_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Receipts DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_pruning"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Indicator if StadeDb is being pruned."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of State DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of state DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of State DB writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_tree_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of State Trie reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_state_tree_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Blocks Trie writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_storage_tree_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of storage trie reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_storage_tree_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of storage trie writes."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_witness_db_reads"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Witness DB reads."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_witness_db_size"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Size of witness DB in bytes"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_witness_db_writes"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of Witness DB writes."]}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"evm",children:"Evm"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blockhash_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BLOCKHASH opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bn254_add_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BN254_ADD precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bn254_mul_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BN254_MUL precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_bn254_pairing_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of BN254_PAIRING precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_calls"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of calls to other contracts."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_creates"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of contract create calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_ec_recover_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of EC_RECOVERY precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_empty_calls"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of calls made to addresses without code."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_evm_exceptions"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of EVM exceptions thrown by contracts."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_m_copy_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of MCOPY opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_mod_exp_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of MODEXP precompiles executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_mod_exp_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of MODEXP precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_point_evaluation_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Point Evaluation precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_ripemd160_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of RIPEMD160 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_self_destructs"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SELFDESTRUCT calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sha256_precompile"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SHA256 precompile calls."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sload_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sstore_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of SSTORE opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tload_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of TLOAD opcodes executed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tstore_opcode"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of TSTORE opcodes executed."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"jsonrpc",children:"JsonRpc"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_bytes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC bytes received."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_bytes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC bytes sent."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_errors"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests processed with errors."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_invalid_requests"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests that were invalid."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_request_deserialization_failures"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests that failed JSON deserialization."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_requests"})})}),"\n",(0,r.jsx)(n.p,{children:"Total number of JSON RPC requests received by the node."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_json_rpc_successes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of JSON RPC requests processed successfully."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"merge",children:"Merge"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_forkchoice_upded_execution_time"})})}),"\n",(0,r.jsx)(n.p,{children:"ForkchoiceUpded request execution time"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_get_payload_requests"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of GetPayload Requests"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_new_payload_execution_time"})})}),"\n",(0,r.jsx)(n.p,{children:"NewPayload request execution time"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_number_of_transactions_in_get_payload"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of Transactions included in the Last GetPayload Request"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"network",children:"Network"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_already_connected_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to already connected"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_breach_of_protocol_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to breach of protocol"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_client_quitting_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to client quitting"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_disconnect_requested_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to disconnect requested"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_block_bodies_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.62 BlockBodies messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_block_headers_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.62 BlockHeaders messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_get_block_bodies_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.62 GetBlockBodies messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_get_block_headers_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.62 GetBlockHeaders messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_new_block_hashes_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.62 NewBlockHashes messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_new_block_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.62 NewBlock messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth62_transactions_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.62 Transactions messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_get_node_data_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.63 GetNodeData messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_get_receipts_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.63 GetReceipts messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_node_data_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.63 NodeData messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth63_receipts_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.63 Receipts messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_get_pooled_transactions_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.65 GetPooledTransactions messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_get_pooled_transactions_requested"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.65 GetPooledTransactions messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_new_pooled_transaction_hashes_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.65 NewPooledTransactionHashes messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_new_pooled_transaction_hashes_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.65 NewPooledTransactionHashes messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth65_pooled_transactions_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.65 PooledTransactions messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_block_bodies_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 BlockBodies messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_block_headers_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 BlockHeaders messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_block_bodies_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 GetBlockBodies messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_block_headers_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 GetBlockHeaders messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_node_data_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 GetNodeData messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_pooled_transactions_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 GetPooledTransactions messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_pooled_transactions_requested"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 GetPooledTransactions messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_get_receipts_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 GetReceipts messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_node_data_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 NodeData messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_pooled_transactions_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 PooledTransactions messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth66_receipts_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.66 Receipts messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth68_new_pooled_transaction_hashes_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.68 NewPooledTransactionHashes messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eth68_new_pooled_transaction_hashes_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth.68 NewPooledTransactionHashes messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_get_node_data_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of GetNodeData messages received via NodeData protocol"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_handshakes"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of devp2p handshakes"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_handshake_timeouts"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of devp2p handshake timeouts"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_hellos_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of devp2p hello messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_hellos_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of devp2p hello messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_incoming_connections"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of incoming connection."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_incoming_p2_p_message_bytes"})})}),"\n",(0,r.jsx)(n.p,{children:"Bytes of incoming p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_incoming_p2_p_messages"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of incoming p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_incompatible_p2_p_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to incompatible devp2p version"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_les_statuses_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of les status messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_les_statuses_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of les status messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_already_connected_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to already connected"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_breach_of_protocol_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of sent disconnects due to breach of protocol"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_client_quitting_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to client quitting"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_disconnect_requested_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to disconnect requested"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_disconnects_total"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of local disconnects"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_incompatible_p2_p_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to incompatible devp2p"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_null_node_identity_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to missing node identity"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_other_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to other reason"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_receive_message_timeout_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to request timeout"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_same_as_self_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to connection to self"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_tcp_subsystem_error_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to TCP error"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_too_many_peers_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to breach of protocol"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_unexpected_identity_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of initiated disconnects due to node identity info mismatch"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_local_useless_peer_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of sent disconnects due to useless peer"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_node_data_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of NodeData messages received via NodeData protocol"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_null_node_identity_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to missing peer identity"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_other_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to other reasons"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_outgoing_connections"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of outgoing connection."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_outgoing_p2_p_message_bytes"})})}),"\n",(0,r.jsx)(n.p,{children:"Bytes of outgoing p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_outgoing_p2_p_messages"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of outgoing p2p packets."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_peer_limit"})})}),"\n",(0,r.jsx)(n.p,{children:"The maximum number of peers this node allows to connect."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_receive_message_timeout_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to request timeouts"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_remote_disconnects_total"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of remote disconnects"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_same_as_self_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to connecting to self"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_account_range_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP AccountRange messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_byte_codes_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP ByteCodes messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_account_range_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetAccountRange messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_account_range_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetAccountRange messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_byte_codes_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetByteCodes messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_byte_codes_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetByteCodes messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_storage_ranges_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetStorageRanges messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_storage_ranges_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetStorageRanges messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_trie_nodes_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetTrieNodes messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_get_trie_nodes_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP GetTrieNodes messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_storage_ranges_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP StorageRanges messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snap_trie_nodes_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of SNAP TrieNodes messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_statuses_received"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth status messages received"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_statuses_sent"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of eth status messages sent"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tcp_subsystem_error_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of disconnects due to TCP error"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_too_many_peers_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to too many peers"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_unexpected_identity_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to peer identity information mismatch"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_useless_peer_disconnects"})})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"Deprecated."})," Number of received disconnects due to useless peer"]}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"pruning",children:"Pruning"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_cached_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that are currently kept in cache (either persisted or not)"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_committed_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been committed since the session start. These nodes may have been pruned, persisted or replaced."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_deep_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been removed from the cache during deep pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_deep_pruning_time"})})}),"\n",(0,r.jsx)(n.p,{children:"Time taken by the last deep pruning."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_last_persisted_block_number"})})}),"\n",(0,r.jsx)(n.p,{children:"Last persisted block number (snapshot)."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_loaded_from_cache_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reads from the node cache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_loaded_from_db_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of DB reads."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_loaded_from_rlp_cache_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of reads from the RLP cache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_memory_used_by_cache"})})}),"\n",(0,r.jsx)(n.p,{children:"Estimated memory used by cache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_persisted_node_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been persisted since the session start."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pruned_persisted_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they have been persisted before."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pruned_transient_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that have been removed from the cache during pruning because they were no longer needed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pruning_time"})})}),"\n",(0,r.jsx)(n.p,{children:"Time taken by the last pruning."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_removed_node_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Nodes that was removed via live pruning."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_replaced_nodes_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of nodes that have been exactly the same as other nodes in the cache when committing."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_snapshot_persistence_time"})})}),"\n",(0,r.jsx)(n.p,{children:"Time taken by the last snapshot persistence."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"runner",children:"Runner"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_version"})})}),"\n",(0,r.jsx)(n.p,{children:"Version number"}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"synchronization",children:"Synchronization"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_sync_peers"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of sync peers."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"trie",children:"Trie"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tree_node_hash_calculations"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of trie node hash calculations."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tree_node_rlp_decodings"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of trie node RLP decodings."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_tree_node_rlp_encodings"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of trie node RLP encodings."}),"\n"]}),"\n"]})})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{className:"nd-details-heading",children:(0,r.jsx)(n.h4,{id:"txpool",children:"TxPool"})}),(0,r.jsx)("p",{children:(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blobs_in_block"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blobs in the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transaction_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blob transactions in pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_blob_transactions_in_block"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of blob transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level1"})})}),"\n",(0,r.jsx)(n.p,{children:"Ratio of transactions in the block absent in hashCache."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_dark_pool_ratio_level2"})})}),"\n",(0,r.jsx)(n.p,{children:"Ratio of transactions in the block absent in pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_eip1559_transactions_ratio"})})}),"\n",(0,r.jsx)(n.p,{children:"Ratio of 1559-type transactions in the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending1559_transactions_added"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending 1559-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_blob_transactions_added"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending blob-type transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_added"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions added to transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_balance_below_value"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is less than txn value."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_conflicting_tx_type"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions rejected because of already pending tx of other type (allowed blob txs or others, not both at once)."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_discarded"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_evicted"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions evicted from transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_gas_limit_too_high"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the gas limit was to high for the block."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of hashes of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_hashes_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of hashes of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_known"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of already known pending transactions."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_low_nonce"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions with already used nonce."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_malformed"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of malformed transactions."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_gap"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not having preceding nonce of this sender in TxPool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_nonce_too_far_in_future"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions with nonce too far in future."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_not_supported_tx_type"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of not supported transaction type."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored after passing early rejections as balance is too low to compete with lowest effective fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_passed_filters_but_cannot_replace"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were trying to replace tx with the same sender and nonce and failed."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_received"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received from peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_sent"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions broadcasted to peers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_balance"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance too low for fee to be higher than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_fee"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of fee lower than the lowest fee in transaction pool."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_too_low_priority_fee"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because of priority fee lower than minimal requirement."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_unresolvable_sender"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because the sender couldn't be resolved."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_with_expensive_filtering"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions that reached filters which are resource expensive"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_pending_transactions_zero_balance"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of pending transactions received that were ignored because balance is zero and cannot pay gas."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"nethermind_transaction_count"})})}),"\n",(0,r.jsx)(n.p,{children:"Number of transactions in pool."}),"\n"]}),"\n"]})})]})]})}function x(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>l});var r=s(6540);const i={},d=r.createContext(i);function c(e){const n=r.useContext(d);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f7be9ca1.c4338c47.js b/assets/js/f7be9ca1.521c7b84.js similarity index 99% rename from assets/js/f7be9ca1.c4338c47.js rename to assets/js/f7be9ca1.521c7b84.js index 8e9a6fde0..d7d3d34cd 100644 --- a/assets/js/f7be9ca1.c4338c47.js +++ b/assets/js/f7be9ca1.521c7b84.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3719],{919:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const t={title:"parity namespace",sidebar_label:"parity",sidebar_position:5},d=void 0,a={id:"interacting/json-rpc-ns/parity",title:"parity namespace",description:"parity_clearEngineSigner",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/parity.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/parity",permalink:"/1.26.0/interacting/json-rpc-ns/parity",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/parity.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:5,frontMatter:{title:"parity namespace",sidebar_label:"parity",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"net",permalink:"/1.26.0/interacting/json-rpc-ns/net"},next:{title:"personal",permalink:"/1.26.0/interacting/json-rpc-ns/personal"}},o={},h=[{value:"parity_clearEngineSigner",id:"parity_clearenginesigner",level:3},{value:"parity_enode",id:"parity_enode",level:3},{value:"parity_getBlockReceipts",id:"parity_getblockreceipts",level:3},{value:"parity_netPeers",id:"parity_netpeers",level:3},{value:"parity_pendingTransactions",id:"parity_pendingtransactions",level:3},{value:"parity_setEngineSigner",id:"parity_setenginesigner",level:3},{value:"parity_setEngineSignerSecret",id:"parity_setenginesignersecret",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"parity_clearenginesigner",children:"parity_clearEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_clearEngineSigner",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_enode",children:"parity_enode"}),"\n",(0,r.jsx)(n.p,{children:"Returns the node enode URI."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_enode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_getblockreceipts",children:"parity_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_netpeers",children:"parity_netPeers"}),"\n",(0,r.jsx)(n.p,{children:"Returns connected peers. Peers with non-empty protocols have completed handshake."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_netPeers",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"active"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"connected"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"max"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"peers"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"caps"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"network"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"localAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"remoteAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"version"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_pendingtransactions",children:"parity_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given sender address."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_pendingTransactions",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"condition"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creates"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"publicKey"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prefixedBytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"raw"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"standardV"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesigner",children:"parity_setEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"password"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSigner",\n "params": [address, password]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesignersecret",children:"parity_setEngineSignerSecret"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"privateKey"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSignerSecret",\n "params": [privateKey]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),t=s(205),d=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function p(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[c,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:s,groupId:i}),[p,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),m=(()=>{const e=a??p;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{m&&d(m)}),[m]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,l]),tabValues:l}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),i=t[s].value;i!==r&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",m.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=p(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",m.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,g.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>t});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[3719],{919:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const t={title:"parity namespace",sidebar_label:"parity",sidebar_position:5},d=void 0,a={id:"interacting/json-rpc-ns/parity",title:"parity namespace",description:"parity_clearEngineSigner",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/parity.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/parity",permalink:"/1.26.0/interacting/json-rpc-ns/parity",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/parity.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:5,frontMatter:{title:"parity namespace",sidebar_label:"parity",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"net",permalink:"/1.26.0/interacting/json-rpc-ns/net"},next:{title:"personal",permalink:"/1.26.0/interacting/json-rpc-ns/personal"}},o={},h=[{value:"parity_clearEngineSigner",id:"parity_clearenginesigner",level:3},{value:"parity_enode",id:"parity_enode",level:3},{value:"parity_getBlockReceipts",id:"parity_getblockreceipts",level:3},{value:"parity_netPeers",id:"parity_netpeers",level:3},{value:"parity_pendingTransactions",id:"parity_pendingtransactions",level:3},{value:"parity_setEngineSigner",id:"parity_setenginesigner",level:3},{value:"parity_setEngineSignerSecret",id:"parity_setenginesignersecret",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"parity_clearenginesigner",children:"parity_clearEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_clearEngineSigner",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_enode",children:"parity_enode"}),"\n",(0,r.jsx)(n.p,{children:"Returns the node enode URI."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_enode",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"string"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_getblockreceipts",children:"parity_getBlockReceipts"}),"\n",(0,r.jsx)(n.p,{children:"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_getBlockReceipts",\n "params": [blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"contractAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"removed"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"topics"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logsBloom"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"root"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"status"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_netpeers",children:"parity_netPeers"}),"\n",(0,r.jsx)(n.p,{children:"Returns connected peers. Peers with non-empty protocols have completed handshake."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_netPeers",\n "params": []\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"active"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"connected"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"max"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"peers"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"caps"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"id"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"name"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"network"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"localAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"remoteAddress"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"protocols"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"difficulty"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"headHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"version"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_pendingtransactions",children:"parity_pendingTransactions"}),"\n",(0,r.jsx)(n.p,{children:"Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given sender address."}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_pendingTransactions",\n "params": [address]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"condition"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creates"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"publicKey"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"bytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"prefixedBytes"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"raw"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"standardV"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesigner",children:"parity_setEngineSigner"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"password"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSigner",\n "params": [address, password]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"parity_setenginesignersecret",children:"parity_setEngineSignerSecret"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"privateKey"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "parity_setEngineSignerSecret",\n "params": [privateKey]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),t=s(205),d=s(7485),a=s(1682),o=s(679);function h(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function j(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function p(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=x(e),[c,d]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:s,groupId:i}),[p,g]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),m=(()=>{const e=a??p;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{m&&d(m)}),[m]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),g(e)}),[h,g,l]),tabValues:l}}var g=s(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,s=d.indexOf(n),i=t[s].value;i!==r&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:t.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",m.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=p(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",m.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function _(e){const n=(0,g.A)();return(0,b.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>t});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f81b3c98.5657827f.js b/assets/js/f81b3c98.fbb8af8b.js similarity index 99% rename from assets/js/f81b3c98.5657827f.js rename to assets/js/f81b3c98.fbb8af8b.js index 6e45345dc..7730ac943 100644 --- a/assets/js/f81b3c98.5657827f.js +++ b/assets/js/f81b3c98.fbb8af8b.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2073],{2627:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>t});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"trace namespace",sidebar_label:"trace",sidebar_position:8},h=void 0,x={id:"interacting/json-rpc-ns/trace",title:"trace namespace",description:"trace_block",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/trace.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/trace",permalink:"/1.28.0/interacting/json-rpc-ns/trace",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/trace.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"trace namespace",sidebar_label:"trace",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"proof",permalink:"/1.28.0/interacting/json-rpc-ns/proof"},next:{title:"txpool",permalink:"/1.28.0/interacting/json-rpc-ns/txpool"}},j={},t=[{value:"trace_block",id:"trace_block",level:3},{value:"trace_call",id:"trace_call",level:3},{value:"trace_filter",id:"trace_filter",level:3},{value:"trace_rawTransaction",id:"trace_rawtransaction",level:3},{value:"trace_replayBlockTransactions",id:"trace_replayblocktransactions",level:3},{value:"trace_replayTransaction",id:"trace_replaytransaction",level:3},{value:"trace_transaction",id:"trace_transaction",level:3}];function a(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"trace_block",children:"trace_block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"numberOrTag"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_block",\n "params": [numberOrTag]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_call",children:"trace_call"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"call"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_call",\n "params": [call, traceTypes, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_filter",children:"trace_filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceFilterForRpc"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"count"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_filter",\n "params": [traceFilterForRpc]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_rawtransaction",children:"trace_rawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Traces a call to eth_sendRawTransaction without making the call, returning the traces"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_rawTransaction",\n "params": [data, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replayblocktransactions",children:"trace_replayBlockTransactions"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayBlockTransactions",\n "params": [blockParameter, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replaytransaction",children:"trace_replayTransaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayTransaction",\n "params": [txHash, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_transaction",children:"trace_transaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_transaction",\n "params": [txHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>T});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),j=s(679);function t(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function a(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function g(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=a(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,t]=m({queryString:s,groupId:i}),[g,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,j.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??g;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),t(e),u(e)}),[t,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},t=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:t,onClick:j,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=g(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function T(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:t(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[2073],{2627:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>j,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>x,toc:()=>t});var r=s(4848),i=s(8453),l=s(1470),c=s(9365);const d={title:"trace namespace",sidebar_label:"trace",sidebar_position:8},h=void 0,x={id:"interacting/json-rpc-ns/trace",title:"trace namespace",description:"trace_block",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/trace.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/trace",permalink:"/1.28.0/interacting/json-rpc-ns/trace",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-ns/trace.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"trace namespace",sidebar_label:"trace",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"proof",permalink:"/1.28.0/interacting/json-rpc-ns/proof"},next:{title:"txpool",permalink:"/1.28.0/interacting/json-rpc-ns/txpool"}},j={},t=[{value:"trace_block",id:"trace_block",level:3},{value:"trace_call",id:"trace_call",level:3},{value:"trace_filter",id:"trace_filter",level:3},{value:"trace_rawTransaction",id:"trace_rawtransaction",level:3},{value:"trace_replayBlockTransactions",id:"trace_replayblocktransactions",level:3},{value:"trace_replayTransaction",id:"trace_replaytransaction",level:3},{value:"trace_transaction",id:"trace_transaction",level:3}];function a(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"trace_block",children:"trace_block"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"numberOrTag"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_block",\n "params": [numberOrTag]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_call",children:"trace_call"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"call"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"accessList"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chainId"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasPrice"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"hash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isSystemTx"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"mint"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"r"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"s"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sourceHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionIndex"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"integer"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"v"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"yParity"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_call",\n "params": [call, traceTypes, blockParameter]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_filter",children:"trace_filter"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceFilterForRpc"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"count"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_filter",\n "params": [traceFilterForRpc]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_rawtransaction",children:"trace_rawTransaction"}),"\n",(0,r.jsx)(n.p,{children:"Traces a call to eth_sendRawTransaction without making the call, returning the traces"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_rawTransaction",\n "params": [data, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replayblocktransactions",children:"trace_replayBlockTransactions"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"blockParameter"}),": ",(0,r.jsx)(n.em,{children:"string"})," (block number or hash or either of ",(0,r.jsx)(n.code,{children:"earliest"}),", ",(0,r.jsx)(n.code,{children:"finalized"}),", ",(0,r.jsx)(n.code,{children:"latest"}),", ",(0,r.jsx)(n.code,{children:"pending"}),", or ",(0,r.jsx)(n.code,{children:"safe"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayBlockTransactions",\n "params": [blockParameter, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_replaytransaction",children:"trace_replayTransaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"traceTypes"}),": array of ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_replayTransaction",\n "params": [txHash, traceTypes]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"stateChanges"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"balance"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"nonce"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"storage"}),": map of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"after"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"before"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"vmTrace"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"operations"}),": array of ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"cost"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"memory"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"data"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"offset"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"pc"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"push"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"store"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"key"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"sub"}),": ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"used"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"trace_transaction",children:"trace_transaction"}),"\n",(0,r.jsxs)(l.A,{children:[(0,r.jsx)(c.A,{value:"params",label:"Parameters",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"txHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]})}),(0,r.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "trace_transaction",\n "params": [txHash]\n }\'\n'})})}),(0,r.jsxs)(c.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"result"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"action"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"author"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"callType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"creationMethod"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"includeInTrace"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"isPrecompiled"}),": ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"rewardType"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": array of ",(0,r.jsx)(n.em,{children:"object"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"error"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"result"}),": ",(0,r.jsx)(n.em,{children:"object"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"address"}),": ",(0,r.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"code"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gasUsed"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"output"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"subtraces"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"traceAddress"}),": array of ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionPosition"}),": ",(0,r.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"type"}),": ",(0,r.jsx)(n.em,{children:"string"})]}),"\n"]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(4164);const i={tabItem:"tabItem_Ymn6"};var l=s(4848);function c(e){let{children:n,hidden:s,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,c),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>T});var r=s(6540),i=s(4164),l=s(3104),c=s(6347),d=s(205),h=s(7485),x=s(1682),j=s(679);function t(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function a(e){const{values:n,children:s}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return t(e).map((e=>{let{props:{value:n,label:s,attributes:r,default:i}}=e;return{value:n,label:s,attributes:r,default:i}}))}(s);return function(e){const n=(0,x.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function o(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:s}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,h.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function g(e){const{defaultValue:n,queryString:s=!1,groupId:i}=e,l=a(e),[c,h]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!o({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=s.find((e=>e.default))??s[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l}))),[x,t]=m({queryString:s,groupId:i}),[g,u]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,j.Dv)(s);return[i,(0,r.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:i}),p=(()=>{const e=x??g;return o({value:e,tabValues:l})?e:null})();(0,d.A)((()=>{p&&h(p)}),[p]);return{selectedValue:c,selectValue:(0,r.useCallback)((e=>{if(!o({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);h(e),t(e),u(e)}),[t,u,l]),tabValues:l}}var u=s(2303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=s(4848);function f(e){let{className:n,block:s,selectedValue:r,selectValue:c,tabValues:d}=e;const h=[],{blockElementScrollPositionUntilNextRender:x}=(0,l.a_)(),j=e=>{const n=e.currentTarget,s=h.indexOf(n),i=d[s].value;i!==r&&(x(n),c(i))},t=e=>{let n=null;switch(e.key){case"Enter":j(e);break;case"ArrowRight":{const s=h.indexOf(e.currentTarget)+1;n=h[s]??h[0];break}case"ArrowLeft":{const s=h.indexOf(e.currentTarget)-1;n=h[s]??h[h.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},n),children:d.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>h.push(e),onKeyDown:t,onClick:j,...l,className:(0,i.A)("tabs__item",p.tabItem,l?.className,{"tabs__item--active":r===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:l}=e;const c=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function v(e){const n=g(e);return(0,b.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,b.jsx)(f,{...n,...e}),(0,b.jsx)(y,{...n,...e})]})}function T(e){const n=(0,u.A)();return(0,b.jsx)(v,{...e,children:t(e.children)},String(n))}},8453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},l=r.createContext(i);function c(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/fa412637.4e612e2c.js b/assets/js/fa412637.26b2fa69.js similarity index 99% rename from assets/js/fa412637.4e612e2c.js rename to assets/js/fa412637.26b2fa69.js index f734e84ba..e5d6ba2ae 100644 --- a/assets/js/fa412637.4e612e2c.js +++ b/assets/js/fa412637.26b2fa69.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9135],{1742:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const s={title:"Pruning",sidebar_position:6},o=void 0,a={id:"fundamentals/pruning",title:"Pruning",description:"Overview",source:"@site/versioned_docs/version-1.28.0/fundamentals/pruning.md",sourceDirName:"fundamentals",slug:"/fundamentals/pruning",permalink:"/1.28.0/fundamentals/pruning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/pruning.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:6,frontMatter:{title:"Pruning",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Database",permalink:"/1.28.0/fundamentals/database"},next:{title:"Performance tuning",permalink:"/1.28.0/fundamentals/performance-tuning"}},l={},d=[{value:"Overview",id:"overview",level:2},{value:"How it works",id:"how-it-works",level:2},{value:"Preparation for full pruning",id:"preparation-for-full-pruning",level:2},{value:"Configuring full pruning",id:"configuring-full-pruning",level:2},{value:"Manual",id:"manual",level:3},{value:"State database size threshold",id:"state-db-threshold",level:3},{value:"Remaining storage space threshold",id:"storage-left-threshold",level:3},{value:"Monitoring progress",id:"monitoring-progress",level:2},{value:"Additional settings",id:"additional-settings",level:2},{value:"Memory budget",id:"memory-budget",level:3},{value:"Pruning completion behavior",id:"pruning-completion-behavior",level:3},{value:"Number of pruning concurrent tasks",id:"number-of-pruning-concurrent-tasks",level:3},{value:"In-memory cache size",id:"in-memory-cache-size",level:3},{value:"Side notes",id:"side-notes",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsx)(n.p,{children:"Pruning pertains to eliminating or cleaning obsolete historical data to optimize disk space. Clients are responsible for maintaining the world state, which comprises a database that portrays the current Ethereum network status. The world state encompasses accounts, contracts, and other information."}),"\n",(0,r.jsxs)(n.p,{children:["Pruning aims to reduce disk requirements by storing only the current world state and removing historical data. This differs from archive nodes that retain complete transaction and state history. Pruning is helpful for users who don't require historical data and prefer to interact solely with the current state of the network. However, pruning may limit the client's ability to fulfill requests that depend on historical information. Nethermind provides two kinds of pruning \u2013 ",(0,r.jsx)(n.em,{children:"full pruning"})," and ",(0,r.jsx)(n.em,{children:"in-memory pruning"}),"; both are enabled by default, also called ",(0,r.jsx)(n.em,{children:"hybrid pruning"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,r.jsxs)(n.p,{children:["During synchronization using the snap sync method, Nethermind produces a local copy of the Ethereum network state. Although this size increases by around 30 GB each week, specific historical data is retained that is not necessary for node operation or to maintain the current Ethereum state. For a detailed description of the disk usage usage, check out the ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/database#database-size",children:"database size"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is activated and initiated, a thorough examination of the entire state tree is conducted to determine which data is no longer required and can be treated as historical. It then determines which information corresponds to the current state and duplicates it alongside the existing version. During verification of each node in the state, the new pruned state replaces the previous one. Once the verifier confirms everything is functioning correctly, the old state database is eliminated, resulting in significant savings in disk space. As a result, the size of the database will be close to its initial size again."}),"\n",(0,r.jsx)(n.p,{children:"In-memory pruning is a continuous process that occurs under regular operation. Instead of saving a new state on each block, Nethermind will keep it in memory until a certain threshold is reached. At that point, Nethermind will only store data required by the newer state and discard unnecessary ones. This significantly reduces the total amount of data written while improving block processing performance. In-memory pruning is independent of full pruning."}),"\n",(0,r.jsx)(n.h2,{id:"preparation-for-full-pruning",children:"Preparation for full pruning"}),"\n",(0,r.jsx)(n.p,{children:"Because full pruning is executed while the node is connected to the network, it can affect the node's performance.\nThe process can consume significant memory, CPU, and disk resources, impacting block processing time.\nThis, in turn, can lead to reduced rewards for validator setups, particularly for proof-of-stake chains."}),"\n",(0,r.jsx)(n.p,{children:"Currently, full pruning takes between 20 to 30 hours to complete, although the duration may vary based on the hardware configuration. At least 200 GB of storage is required to ensure pruning runs smoothly. Nevertheless, it's recommended to have 300 GB or more."}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["Do not turn on full pruning on an archive node, as these are two opposing features. Archive nodes are designed to store\ncomplete historical data, whereas full pruning eliminates it. Use the option ",(0,r.jsx)(n.code,{children:"--Pruning.Mode None"})," to ensure that pruning is turned off completely."]})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-full-pruning",children:"Configuring full pruning"}),"\n",(0,r.jsxs)(n.p,{children:["As a very first point, check out the ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#pruning",children:"pruning configuration options"}),".",(0,r.jsx)(n.br,{}),"\n","To activate full pruning, use either the ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," or ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Full"})," command line options."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Setting ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," enables both ",(0,r.jsx)(n.code,{children:"InMemory"})," and ",(0,r.jsx)(n.code,{children:"Full"})," modes. The ",(0,r.jsx)(n.code,{children:"InMemory"})," mode helps the node storage grow slower than the ",(0,r.jsx)(n.code,{children:"Full"})," mode. Because of this, full pruning is executed less frequently, promoting\nhealthier disk operation. Since full pruning is hardware-intensive, this configuration also benefits attestation results."]})}),"\n",(0,r.jsx)(n.p,{children:"The next step is to determine the trigger conditions for full pruning. Currently, there are 3 options available:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#manual",children:"Manual"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#state-db-threshold",children:"State database size threshold"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#storage-left-threshold",children:"Remaining storage space threshold"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"manual",children:"Manual"}),"\n",(0,r.jsxs)(n.p,{children:["Manual mode triggers full pruning only upon request, providing complete control. To configure this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger Manual"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Pruning can also be triggered using the ",(0,r.jsx)(n.a,{href:"/1.28.0/interacting/json-rpc-ns/admin#admin_prune",children:(0,r.jsx)(n.code,{children:"admin_prune"})})," JSON-RPC method. Here's how to configure it:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Add the ",(0,r.jsx)(n.code,{children:"admin"})," namespace to ",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"}),". For instance,",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules [eth,net,...,admin]"})]}),"\n",(0,r.jsxs)(n.li,{children:["Create a separate port for ",(0,r.jsx)(n.code,{children:"admin"})," namespace only:",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls http://localhost:8555|http|admin"})]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Restart the client, and if everything is configured correctly, you should be able to call the ",(0,r.jsx)(n.code,{children:"admin_prune"})," method, and full pruning should start."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"One potential disadvantage of the manual mode is that if full pruning is not triggered on time, it cannot be performed later because of insufficient disk space. In such cases, the only option to free up the disk space is to resync the node from scratch."})}),"\n",(0,r.jsx)(n.h3,{id:"state-db-threshold",children:"State database size threshold"}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning automatically when the state database reaches the specified size.\nTo enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger StateDbSize --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning automatically whenever the state database size exceeds 256,000\nMB (250 GB). Assuming the state database has initially around 160 GB, pruning will be triggered when the database size grows by more than 90 GB."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"To avoid unexpected behavior and ensure that full pruning can be completed in full, it's recommended to set the threshold value to trigger pruning before the free disk space drops below 250 GB as a minimum. This ensures that sufficient free disk space is available for the pruning process."})}),"\n",(0,r.jsx)(n.h3,{id:"storage-left-threshold",children:"Remaining storage space threshold"}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsx)(n.p,{children:"This is the recommended approach as it ensures that pruning is executed on time."})}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning when the storage space reaches the specified minimum. To enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger VolumeFreeSpace --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements. However, it should not be set below the default value of ",(0,r.jsx)(n.code,{children:"256000"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning whenever free disk space drops to 256,000 MB (250 GB) or below. This ensures that pruning is invoked as infrequently as possible while also ensuring that sufficient free storage is always available to trigger it."}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsx)(n.p,{children:"It's recommended not to set the value below 250 GB for stability reasons. In reality, full pruning should require approximately the same amount of storage as a fresh state database (around 160 GB). Still, it also needs a threshold for processing and other operations since it creates a copy of the existing state database. Therefore, it's essential to maintain a minimum amount of storage to ensure a robust pruning performance."})}),"\n",(0,r.jsx)(n.h2,{id:"monitoring-progress",children:"Monitoring progress"}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is triggered correctly, the corresponding messages appear in the Nethermind logs."}),"\n",(0,r.jsx)(n.p,{children:"The very first ones should be:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Ready to start: pruning garbage before state with root .\nWARN: Full Pruning Started on root hash : do not close the node until finished or progress will be lost.\n"})}),"\n",(0,r.jsx)(n.p,{children:"From that moment, ensure that no restarts will be performed on Nethermind to ensure that full pruning runs correctly.\nAfter a few minutes first logs with progress would start to appear. For instance:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning In Progress: 00:00:57.0603307 1.00 mln nodes mirrored.\nFull Pruning In Progress: 00:01:40.3677103 2.00 mln nodes mirrored.\nFull Pruning In Progress: 00:02:25.6437030 3.00 mln nodes mirrored.\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Pruning may take even ",(0,r.jsx)(n.em,{children:"more than 30 hours"}),", depending on hardware configuration."]}),"\n",(0,r.jsx)(n.p,{children:"When pruning is completed, there is a log message similar the following:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Finished: 15:25:59.1620756 1,560.29 mln nodes mirrored.\n"})}),"\n",(0,r.jsx)(n.p,{children:"As you may notice, it took around 15 hours in this example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Since the amount of mirrored nodes is not a static value, providing a simple progress indicator in percentage is impossible. Therefore, the approximate value given should be used to determine when full pruning is expected to be completed."})}),"\n",(0,r.jsx)(n.h2,{id:"additional-settings",children:"Additional settings"}),"\n",(0,r.jsx)(n.h3,{id:"memory-budget",children:"Memory budget"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," configuration option controls the memory budget allocated for the trie visit during\nthe full pruning process. During pruning, pending nodes are queued to a pool of nodes whose size is determined by this value. This allows multiple nodes to share a single I/O. By increasing this value, the required read IOP per second can be significantly reduced, resulting in a faster full pruning operation. However, this improvement comes at the expense of increased memory usage."]}),"\n",(0,r.jsxs)(n.p,{children:["Assuming your system has 64GB of RAM, with Nethermind, the consensus client, and system expenses consuming 20GB,\nyou need to determine the maximum value for ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," while ensuring the system remains stable and respects the given limit. In this case, you have 44 GB (64 GB - 20 GB) of available memory for increasing the ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," value. To calculate the maximum value in MB, multiply the available memory by 1024: ",(0,r.jsx)(n.code,{children:"44 GB * 1024 = 45,056 MB"})]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Because of the workload on Ethereum Mainnet, setting the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," higher than 16 GB may not provide any additional performance benefits."]})}),"\n",(0,r.jsx)(n.p,{children:"Please note that this example assumes the remaining 44 GB of memory is sufficient for the full pruning memory budget.\nDepending on the specific use case and system requirements, it may be necessary to adjust the value further to optimize performance and resource usage."}),"\n",(0,r.jsx)(n.h3,{id:"pruning-completion-behavior",children:"Pruning completion behavior"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})," configuration option determines Nethermind's behavior after full pruning is completed. By default, Nethermind will continue to progress as usual. However, if a user wishes to shut down the node after pruning, there are three options available:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"None"}),": No action taken"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Nethermind shuts down if pruning succeeds"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"AlwaysShutdown"}),": Nethermind shuts down once pruning completes, regardless of whether it succeeds or fails"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"number-of-pruning-concurrent-tasks",children:"Number of pruning concurrent tasks"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})," configuration option determines the number of parallel tasks/threads that can be used by pruning:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"-1"}),": uses the number of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"0"}),": uses 25% of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"1"}),": runs on a single thread"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The recommended value depends on the type of node being used. If the node needs to be responsive (e.g., RPC or validator), using a value below the number of logical processors is recommended. The default value is recommended if the node doesn't have many other responsibilities but needs to follow the chain without delays and produce live logs reliably. If the node doesn't need to be responsive, has very fast I/O (such as NVMe), and the shortest pruning time\nis desired, this can be set to 2\u20133 times the number of logical processors."}),"\n",(0,r.jsx)(n.h3,{id:"in-memory-cache-size",children:"In-memory cache size"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.CacheMb"})," configuration option determines the size, in MB, of the memory pool of nodes used for in-memory pruning. The default value is 1024. Increasing this value can help reduce the rate at which the state database grows."]}),"\n",(0,r.jsx)(n.h2,{id:"side-notes",children:"Side notes"}),"\n",(0,r.jsx)(n.p,{children:"For pruning, keep in mind the following:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Full pruning is a cumbersome task, but it's performed in the background, so the node continues progressing and following the chain."}),"\n",(0,r.jsx)(n.li,{children:"The process' heaviness may affect the effectiveness of the validator rewards. Still, since it's executed only once every few months, it shouldn't have a significant impact on overall results (we've xperienced approximately 5\u201310% loss of rewards during full pruning)."}),"\n",(0,r.jsx)(n.li,{children:"Ensure that your storage has at least 250 GB of free space after syncing the node. Otherwise, full pruning will never complete successfully."}),"\n",(0,r.jsxs)(n.li,{children:["Several things can be done to reduce the size of the database after syncing: setting ",(0,r.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})," and ",(0,r.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})," to a proper value higher than 0, using a consensus client that requires less storage, and setting logs to the lowest level to avoid log spamming."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>a});var r=i(6540);const t={},s=r.createContext(t);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[9135],{1742:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var r=i(4848),t=i(8453);const s={title:"Pruning",sidebar_position:6},o=void 0,a={id:"fundamentals/pruning",title:"Pruning",description:"Overview",source:"@site/versioned_docs/version-1.28.0/fundamentals/pruning.md",sourceDirName:"fundamentals",slug:"/fundamentals/pruning",permalink:"/1.28.0/fundamentals/pruning",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/pruning.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:6,frontMatter:{title:"Pruning",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Database",permalink:"/1.28.0/fundamentals/database"},next:{title:"Performance tuning",permalink:"/1.28.0/fundamentals/performance-tuning"}},l={},d=[{value:"Overview",id:"overview",level:2},{value:"How it works",id:"how-it-works",level:2},{value:"Preparation for full pruning",id:"preparation-for-full-pruning",level:2},{value:"Configuring full pruning",id:"configuring-full-pruning",level:2},{value:"Manual",id:"manual",level:3},{value:"State database size threshold",id:"state-db-threshold",level:3},{value:"Remaining storage space threshold",id:"storage-left-threshold",level:3},{value:"Monitoring progress",id:"monitoring-progress",level:2},{value:"Additional settings",id:"additional-settings",level:2},{value:"Memory budget",id:"memory-budget",level:3},{value:"Pruning completion behavior",id:"pruning-completion-behavior",level:3},{value:"Number of pruning concurrent tasks",id:"number-of-pruning-concurrent-tasks",level:3},{value:"In-memory cache size",id:"in-memory-cache-size",level:3},{value:"Side notes",id:"side-notes",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsx)(n.p,{children:"Pruning pertains to eliminating or cleaning obsolete historical data to optimize disk space. Clients are responsible for maintaining the world state, which comprises a database that portrays the current Ethereum network status. The world state encompasses accounts, contracts, and other information."}),"\n",(0,r.jsxs)(n.p,{children:["Pruning aims to reduce disk requirements by storing only the current world state and removing historical data. This differs from archive nodes that retain complete transaction and state history. Pruning is helpful for users who don't require historical data and prefer to interact solely with the current state of the network. However, pruning may limit the client's ability to fulfill requests that depend on historical information. Nethermind provides two kinds of pruning \u2013 ",(0,r.jsx)(n.em,{children:"full pruning"})," and ",(0,r.jsx)(n.em,{children:"in-memory pruning"}),"; both are enabled by default, also called ",(0,r.jsx)(n.em,{children:"hybrid pruning"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,r.jsxs)(n.p,{children:["During synchronization using the snap sync method, Nethermind produces a local copy of the Ethereum network state. Although this size increases by around 30 GB each week, specific historical data is retained that is not necessary for node operation or to maintain the current Ethereum state. For a detailed description of the disk usage usage, check out the ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/database#database-size",children:"database size"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is activated and initiated, a thorough examination of the entire state tree is conducted to determine which data is no longer required and can be treated as historical. It then determines which information corresponds to the current state and duplicates it alongside the existing version. During verification of each node in the state, the new pruned state replaces the previous one. Once the verifier confirms everything is functioning correctly, the old state database is eliminated, resulting in significant savings in disk space. As a result, the size of the database will be close to its initial size again."}),"\n",(0,r.jsx)(n.p,{children:"In-memory pruning is a continuous process that occurs under regular operation. Instead of saving a new state on each block, Nethermind will keep it in memory until a certain threshold is reached. At that point, Nethermind will only store data required by the newer state and discard unnecessary ones. This significantly reduces the total amount of data written while improving block processing performance. In-memory pruning is independent of full pruning."}),"\n",(0,r.jsx)(n.h2,{id:"preparation-for-full-pruning",children:"Preparation for full pruning"}),"\n",(0,r.jsx)(n.p,{children:"Because full pruning is executed while the node is connected to the network, it can affect the node's performance.\nThe process can consume significant memory, CPU, and disk resources, impacting block processing time.\nThis, in turn, can lead to reduced rewards for validator setups, particularly for proof-of-stake chains."}),"\n",(0,r.jsx)(n.p,{children:"Currently, full pruning takes between 20 to 30 hours to complete, although the duration may vary based on the hardware configuration. At least 200 GB of storage is required to ensure pruning runs smoothly. Nevertheless, it's recommended to have 300 GB or more."}),"\n",(0,r.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,r.jsxs)(n.p,{children:["Do not turn on full pruning on an archive node, as these are two opposing features. Archive nodes are designed to store\ncomplete historical data, whereas full pruning eliminates it. Use the option ",(0,r.jsx)(n.code,{children:"--Pruning.Mode None"})," to ensure that pruning is turned off completely."]})}),"\n",(0,r.jsx)(n.h2,{id:"configuring-full-pruning",children:"Configuring full pruning"}),"\n",(0,r.jsxs)(n.p,{children:["As a very first point, check out the ",(0,r.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#pruning",children:"pruning configuration options"}),".",(0,r.jsx)(n.br,{}),"\n","To activate full pruning, use either the ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," or ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Full"})," command line options."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Setting ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid"})," enables both ",(0,r.jsx)(n.code,{children:"InMemory"})," and ",(0,r.jsx)(n.code,{children:"Full"})," modes. The ",(0,r.jsx)(n.code,{children:"InMemory"})," mode helps the node storage grow slower than the ",(0,r.jsx)(n.code,{children:"Full"})," mode. Because of this, full pruning is executed less frequently, promoting\nhealthier disk operation. Since full pruning is hardware-intensive, this configuration also benefits attestation results."]})}),"\n",(0,r.jsx)(n.p,{children:"The next step is to determine the trigger conditions for full pruning. Currently, there are 3 options available:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#manual",children:"Manual"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#state-db-threshold",children:"State database size threshold"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#storage-left-threshold",children:"Remaining storage space threshold"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"manual",children:"Manual"}),"\n",(0,r.jsxs)(n.p,{children:["Manual mode triggers full pruning only upon request, providing complete control. To configure this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger Manual"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Pruning can also be triggered using the ",(0,r.jsx)(n.a,{href:"/1.28.0/interacting/json-rpc-ns/admin#admin_prune",children:(0,r.jsx)(n.code,{children:"admin_prune"})})," JSON-RPC method. Here's how to configure it:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Add the ",(0,r.jsx)(n.code,{children:"admin"})," namespace to ",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules"}),". For instance,",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.EnabledModules [eth,net,...,admin]"})]}),"\n",(0,r.jsxs)(n.li,{children:["Create a separate port for ",(0,r.jsx)(n.code,{children:"admin"})," namespace only:",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.code,{children:"--JsonRpc.AdditionalRpcUrls http://localhost:8555|http|admin"})]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Restart the client, and if everything is configured correctly, you should be able to call the ",(0,r.jsx)(n.code,{children:"admin_prune"})," method, and full pruning should start."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"One potential disadvantage of the manual mode is that if full pruning is not triggered on time, it cannot be performed later because of insufficient disk space. In such cases, the only option to free up the disk space is to resync the node from scratch."})}),"\n",(0,r.jsx)(n.h3,{id:"state-db-threshold",children:"State database size threshold"}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning automatically when the state database reaches the specified size.\nTo enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger StateDbSize --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning automatically whenever the state database size exceeds 256,000\nMB (250 GB). Assuming the state database has initially around 160 GB, pruning will be triggered when the database size grows by more than 90 GB."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"To avoid unexpected behavior and ensure that full pruning can be completed in full, it's recommended to set the threshold value to trigger pruning before the free disk space drops below 250 GB as a minimum. This ensures that sufficient free disk space is available for the pruning process."})}),"\n",(0,r.jsx)(n.h3,{id:"storage-left-threshold",children:"Remaining storage space threshold"}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsx)(n.p,{children:"This is the recommended approach as it ensures that pruning is executed on time."})}),"\n",(0,r.jsxs)(n.p,{children:["This mode triggers full pruning when the storage space reaches the specified minimum. To enable this mode, use the following options: ",(0,r.jsx)(n.code,{children:"--Pruning.Mode Hybrid --Pruning.FullPruningTrigger VolumeFreeSpace --Pruning.FullPruningThresholdMb 256000"}),", where the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningThresholdMb"})," should be set based on your requirements. However, it should not be set below the default value of ",(0,r.jsx)(n.code,{children:"256000"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"The above configuration triggers full pruning whenever free disk space drops to 256,000 MB (250 GB) or below. This ensures that pruning is invoked as infrequently as possible while also ensuring that sufficient free storage is always available to trigger it."}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsx)(n.p,{children:"It's recommended not to set the value below 250 GB for stability reasons. In reality, full pruning should require approximately the same amount of storage as a fresh state database (around 160 GB). Still, it also needs a threshold for processing and other operations since it creates a copy of the existing state database. Therefore, it's essential to maintain a minimum amount of storage to ensure a robust pruning performance."})}),"\n",(0,r.jsx)(n.h2,{id:"monitoring-progress",children:"Monitoring progress"}),"\n",(0,r.jsx)(n.p,{children:"When full pruning is triggered correctly, the corresponding messages appear in the Nethermind logs."}),"\n",(0,r.jsx)(n.p,{children:"The very first ones should be:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Ready to start: pruning garbage before state with root .\nWARN: Full Pruning Started on root hash : do not close the node until finished or progress will be lost.\n"})}),"\n",(0,r.jsx)(n.p,{children:"From that moment, ensure that no restarts will be performed on Nethermind to ensure that full pruning runs correctly.\nAfter a few minutes first logs with progress would start to appear. For instance:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning In Progress: 00:00:57.0603307 1.00 mln nodes mirrored.\nFull Pruning In Progress: 00:01:40.3677103 2.00 mln nodes mirrored.\nFull Pruning In Progress: 00:02:25.6437030 3.00 mln nodes mirrored.\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Pruning may take even ",(0,r.jsx)(n.em,{children:"more than 30 hours"}),", depending on hardware configuration."]}),"\n",(0,r.jsx)(n.p,{children:"When pruning is completed, there is a log message similar the following:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Full Pruning Finished: 15:25:59.1620756 1,560.29 mln nodes mirrored.\n"})}),"\n",(0,r.jsx)(n.p,{children:"As you may notice, it took around 15 hours in this example."}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Since the amount of mirrored nodes is not a static value, providing a simple progress indicator in percentage is impossible. Therefore, the approximate value given should be used to determine when full pruning is expected to be completed."})}),"\n",(0,r.jsx)(n.h2,{id:"additional-settings",children:"Additional settings"}),"\n",(0,r.jsx)(n.h3,{id:"memory-budget",children:"Memory budget"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," configuration option controls the memory budget allocated for the trie visit during\nthe full pruning process. During pruning, pending nodes are queued to a pool of nodes whose size is determined by this value. This allows multiple nodes to share a single I/O. By increasing this value, the required read IOP per second can be significantly reduced, resulting in a faster full pruning operation. However, this improvement comes at the expense of increased memory usage."]}),"\n",(0,r.jsxs)(n.p,{children:["Assuming your system has 64GB of RAM, with Nethermind, the consensus client, and system expenses consuming 20GB,\nyou need to determine the maximum value for ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," while ensuring the system remains stable and respects the given limit. In this case, you have 44 GB (64 GB - 20 GB) of available memory for increasing the ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," value. To calculate the maximum value in MB, multiply the available memory by 1024: ",(0,r.jsx)(n.code,{children:"44 GB * 1024 = 45,056 MB"})]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:["Because of the workload on Ethereum Mainnet, setting the value of ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMemoryBudgetMb"})," higher than 16 GB may not provide any additional performance benefits."]})}),"\n",(0,r.jsx)(n.p,{children:"Please note that this example assumes the remaining 44 GB of memory is sufficient for the full pruning memory budget.\nDepending on the specific use case and system requirements, it may be necessary to adjust the value further to optimize performance and resource usage."}),"\n",(0,r.jsx)(n.h3,{id:"pruning-completion-behavior",children:"Pruning completion behavior"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningCompletionBehavior"})," configuration option determines Nethermind's behavior after full pruning is completed. By default, Nethermind will continue to progress as usual. However, if a user wishes to shut down the node after pruning, there are three options available:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"None"}),": No action taken"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"ShutdownOnSuccess"}),": Nethermind shuts down if pruning succeeds"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"AlwaysShutdown"}),": Nethermind shuts down once pruning completes, regardless of whether it succeeds or fails"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"number-of-pruning-concurrent-tasks",children:"Number of pruning concurrent tasks"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.FullPruningMaxDegreeOfParallelism"})," configuration option determines the number of parallel tasks/threads that can be used by pruning:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"-1"}),": uses the number of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"0"}),": uses 25% of logical processors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"1"}),": runs on a single thread"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The recommended value depends on the type of node being used. If the node needs to be responsive (e.g., RPC or validator), using a value below the number of logical processors is recommended. The default value is recommended if the node doesn't have many other responsibilities but needs to follow the chain without delays and produce live logs reliably. If the node doesn't need to be responsive, has very fast I/O (such as NVMe), and the shortest pruning time\nis desired, this can be set to 2\u20133 times the number of logical processors."}),"\n",(0,r.jsx)(n.h3,{id:"in-memory-cache-size",children:"In-memory cache size"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Pruning.CacheMb"})," configuration option determines the size, in MB, of the memory pool of nodes used for in-memory pruning. The default value is 1024. Increasing this value can help reduce the rate at which the state database grows."]}),"\n",(0,r.jsx)(n.h2,{id:"side-notes",children:"Side notes"}),"\n",(0,r.jsx)(n.p,{children:"For pruning, keep in mind the following:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Full pruning is a cumbersome task, but it's performed in the background, so the node continues progressing and following the chain."}),"\n",(0,r.jsx)(n.li,{children:"The process' heaviness may affect the effectiveness of the validator rewards. Still, since it's executed only once every few months, it shouldn't have a significant impact on overall results (we've xperienced approximately 5\u201310% loss of rewards during full pruning)."}),"\n",(0,r.jsx)(n.li,{children:"Ensure that your storage has at least 250 GB of free space after syncing the node. Otherwise, full pruning will never complete successfully."}),"\n",(0,r.jsxs)(n.li,{children:["Several things can be done to reduce the size of the database after syncing: setting ",(0,r.jsx)(n.code,{children:"Sync.AncientBodiesBarrier"})," and ",(0,r.jsx)(n.code,{children:"Sync.AncientReceiptsBarrier"})," to a proper value higher than 0, using a consensus client that requires less storage, and setting logs to the lowest level to avoid log spamming."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>a});var r=i(6540);const t={},s=r.createContext(t);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/fb0274c6.0b6e73ed.js b/assets/js/fb0274c6.537c9dac.js similarity index 99% rename from assets/js/fb0274c6.0b6e73ed.js rename to assets/js/fb0274c6.537c9dac.js index cd71574af..1eae368cd 100644 --- a/assets/js/fb0274c6.0b6e73ed.js +++ b/assets/js/fb0274c6.537c9dac.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4623],{8451:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),r=t(8453);const i={title:"dotnet-counters",sidebar_position:1},s=void 0,c={id:"monitoring/metrics/dotnet-counters",title:"dotnet-counters",description:"This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.",source:"@site/versioned_docs/version-1.26.0/monitoring/metrics/dotnet-counters.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/dotnet-counters",permalink:"/1.26.0/monitoring/metrics/dotnet-counters",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/monitoring/metrics/dotnet-counters.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"dotnet-counters",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Grafana and Prometheus",permalink:"/1.26.0/monitoring/metrics/grafana-and-prometheus"},next:{title:"Health check",permalink:"/1.26.0/monitoring/health-check"}},l={},d=[{value:"Step 1: Install dotnet-counters",id:"step-1-install-dotnet-counters",level:2},{value:"Installing locally",id:"installing-locally",level:3},{value:"Installing in a Docker container",id:"installing-in-a-docker-container",level:3},{value:"Step 2: Run Nethermind",id:"step-2-run-nethermind",level:2},{value:"Running locally",id:"running-locally",level:3},{value:"Running in a Docker container",id:"running-in-a-docker-container",level:3},{value:"Step 3: Collect metrics",id:"step-3-collect-metrics",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["This guide will walk you through setting up performance counters using the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"dotnet-counters"})," performance monitoring tool that observes counters published via the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventcounter",children:"EventCounters API"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"step-1-install-dotnet-counters",children:"Step 1: Install dotnet-counters"}),"\n",(0,o.jsx)(n.p,{children:"dotnet-counters can be either installed locally or in a Docker container."}),"\n",(0,o.jsx)(n.h3,{id:"installing-locally",children:"Installing locally"}),"\n",(0,o.jsx)(n.p,{children:"Use the dotnet tool install command as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet tool install -g dotnet-counters\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Once installed, you can run the tool from the command line by typing ",(0,o.jsx)(n.code,{children:"dotnet-counters"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"installing-in-a-docker-container",children:"Installing in a Docker container"}),"\n",(0,o.jsx)(n.p,{children:"To install dotnet-counters in a Docker container, create a Dockerfile with the following content:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-docker",metastring:'title="Dockerfile"',children:'FROM mcr.microsoft.com/dotnet/sdk:8.0\n\nRUN dotnet tool install -g dotnet-counters && \\\n echo \'export PATH="$PATH:/root/.dotnet/tools"\' >> /root/.bashrc\n\nENTRYPOINT ["/bin/bash"]\n'})}),"\n",(0,o.jsx)(n.p,{children:"Then, build the Docker image:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker build -t dotnet-counters .\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-2-run-nethermind",children:"Step 2: Run Nethermind"}),"\n",(0,o.jsxs)(n.p,{children:["To enable performance counters in Nethermind, use the command line option ",(0,o.jsx)(n.code,{children:"--Metrics.CountersEnabled true"}),". For more options, see the ",(0,o.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["A ",(0,o.jsx)(n.a,{href:"/1.26.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,o.jsx)(n.h3,{id:"running-locally",children:"Running locally"}),"\n",(0,o.jsx)(n.p,{children:"To enable performance counters, run Nethermind as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.CountersEnabled true\n"})}),"\n",(0,o.jsx)(n.h3,{id:"running-in-a-docker-container",children:"Running in a Docker container"}),"\n",(0,o.jsxs)(n.p,{children:["The easiest way of collecting metrics in a Docker container is to use Docker Compose. Below, we use the Nethermind official Docker image and the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," image we created earlier:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n\n dotnet-counters:\n image: dotnet-counters\n container_name: dotnet-counters\n stdin_open: true\n tty: true\n pid: service:nethermind\n volumes:\n - metrics:/tmp\n depends_on:\n - nethermind\n \n nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n command: -c mainnet --Metrics.CountersEnabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n - metrics:/tmp\n\nvolumes:\n metrics:\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:["dotnet-counters uses IPC socket communication to monitor the target process. For this, we use the ",(0,o.jsx)(n.code,{children:"metrics"})," volume to share the IPC socket directory with the ",(0,o.jsx)(n.code,{children:"nethermind"})," and ",(0,o.jsx)(n.code,{children:"dotnet-counter"})," services. The ",(0,o.jsx)(n.code,{children:"pid"})," option in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," service is used to share the PID namespace with the ",(0,o.jsx)(n.code,{children:"nethermind"})," service. This is necessary for ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," to be able to see the Nethermind process."]})}),"\n",(0,o.jsx)(n.p,{children:"We can run the above file as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker-compose up\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-3-collect-metrics",children:"Step 3: Collect metrics"}),"\n",(0,o.jsxs)(n.p,{children:["Once dotnet-counters is installed and Nethermind is running, we can start collecting the metrics. If you chose to collect metrics in the containers, run the following command in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," container:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind\n"})}),"\n",(0,o.jsx)(n.p,{children:"By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind -f json -o /tmp/counters.json\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For more info about dotnet-counters, see its ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"official docs"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>c});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4623],{8451:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),r=t(8453);const i={title:"dotnet-counters",sidebar_position:1},s=void 0,c={id:"monitoring/metrics/dotnet-counters",title:"dotnet-counters",description:"This guide will walk you through setting up performance counters using the dotnet-counters performance monitoring tool that observes counters published via the EventCounters API.",source:"@site/versioned_docs/version-1.26.0/monitoring/metrics/dotnet-counters.md",sourceDirName:"monitoring/metrics",slug:"/monitoring/metrics/dotnet-counters",permalink:"/1.26.0/monitoring/metrics/dotnet-counters",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/monitoring/metrics/dotnet-counters.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"dotnet-counters",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Grafana and Prometheus",permalink:"/1.26.0/monitoring/metrics/grafana-and-prometheus"},next:{title:"Health check",permalink:"/1.26.0/monitoring/health-check"}},l={},d=[{value:"Step 1: Install dotnet-counters",id:"step-1-install-dotnet-counters",level:2},{value:"Installing locally",id:"installing-locally",level:3},{value:"Installing in a Docker container",id:"installing-in-a-docker-container",level:3},{value:"Step 2: Run Nethermind",id:"step-2-run-nethermind",level:2},{value:"Running locally",id:"running-locally",level:3},{value:"Running in a Docker container",id:"running-in-a-docker-container",level:3},{value:"Step 3: Collect metrics",id:"step-3-collect-metrics",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["This guide will walk you through setting up performance counters using the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"dotnet-counters"})," performance monitoring tool that observes counters published via the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventcounter",children:"EventCounters API"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"step-1-install-dotnet-counters",children:"Step 1: Install dotnet-counters"}),"\n",(0,o.jsx)(n.p,{children:"dotnet-counters can be either installed locally or in a Docker container."}),"\n",(0,o.jsx)(n.h3,{id:"installing-locally",children:"Installing locally"}),"\n",(0,o.jsx)(n.p,{children:"Use the dotnet tool install command as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet tool install -g dotnet-counters\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Once installed, you can run the tool from the command line by typing ",(0,o.jsx)(n.code,{children:"dotnet-counters"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"installing-in-a-docker-container",children:"Installing in a Docker container"}),"\n",(0,o.jsx)(n.p,{children:"To install dotnet-counters in a Docker container, create a Dockerfile with the following content:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-docker",metastring:'title="Dockerfile"',children:'FROM mcr.microsoft.com/dotnet/sdk:8.0\n\nRUN dotnet tool install -g dotnet-counters && \\\n echo \'export PATH="$PATH:/root/.dotnet/tools"\' >> /root/.bashrc\n\nENTRYPOINT ["/bin/bash"]\n'})}),"\n",(0,o.jsx)(n.p,{children:"Then, build the Docker image:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker build -t dotnet-counters .\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-2-run-nethermind",children:"Step 2: Run Nethermind"}),"\n",(0,o.jsxs)(n.p,{children:["To enable performance counters in Nethermind, use the command line option ",(0,o.jsx)(n.code,{children:"--Metrics.CountersEnabled true"}),". For more options, see the ",(0,o.jsx)(n.a,{href:"/1.26.0/fundamentals/configuration#metrics",children:"Metrics"})," configuration section."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["A ",(0,o.jsx)(n.a,{href:"/1.26.0/get-started/consensus-clients",children:"consensus client"})," of your choice must be running before you start Nethermind."]})}),"\n",(0,o.jsx)(n.h3,{id:"running-locally",children:"Running locally"}),"\n",(0,o.jsx)(n.p,{children:"To enable performance counters, run Nethermind as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"nethermind -c mainnet --Metrics.CountersEnabled true\n"})}),"\n",(0,o.jsx)(n.h3,{id:"running-in-a-docker-container",children:"Running in a Docker container"}),"\n",(0,o.jsxs)(n.p,{children:["The easiest way of collecting metrics in a Docker container is to use Docker Compose. Below, we use the Nethermind official Docker image and the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," image we created earlier:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-yaml",metastring:'title="docker-compose.yml"',children:"services:\n\n dotnet-counters:\n image: dotnet-counters\n container_name: dotnet-counters\n stdin_open: true\n tty: true\n pid: service:nethermind\n volumes:\n - metrics:/tmp\n depends_on:\n - nethermind\n \n nethermind:\n image: nethermind/nethermind:latest\n container_name: nethermind\n restart: unless-stopped\n ports:\n - 8545:8545\n - 8551:8551\n - 30303:30303\n command: -c mainnet --Metrics.CountersEnabled true\n volumes:\n - ./keystore:/nethermind/keystore\n - ./logs:/nethermind/logs\n - ./nethermind_db:/nethermind/nethermind_db\n - metrics:/tmp\n\nvolumes:\n metrics:\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:["dotnet-counters uses IPC socket communication to monitor the target process. For this, we use the ",(0,o.jsx)(n.code,{children:"metrics"})," volume to share the IPC socket directory with the ",(0,o.jsx)(n.code,{children:"nethermind"})," and ",(0,o.jsx)(n.code,{children:"dotnet-counter"})," services. The ",(0,o.jsx)(n.code,{children:"pid"})," option in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," service is used to share the PID namespace with the ",(0,o.jsx)(n.code,{children:"nethermind"})," service. This is necessary for ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," to be able to see the Nethermind process."]})}),"\n",(0,o.jsx)(n.p,{children:"We can run the above file as follows:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker-compose up\n"})}),"\n",(0,o.jsx)(n.h2,{id:"step-3-collect-metrics",children:"Step 3: Collect metrics"}),"\n",(0,o.jsxs)(n.p,{children:["Once dotnet-counters is installed and Nethermind is running, we can start collecting the metrics. If you chose to collect metrics in the containers, run the following command in the ",(0,o.jsx)(n.code,{children:"dotnet-counters"})," container:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind\n"})}),"\n",(0,o.jsx)(n.p,{children:"By default, dotnet-counters stores the collected metrics in the current directory in CSV format. However, you may also store them in JSON format and another directory. For instance:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"dotnet-counters collect -n nethermind -f json -o /tmp/counters.json\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For more info about dotnet-counters, see its ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters",children:"official docs"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>c});var o=t(6540);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/fc855aa1.e36c44e2.js b/assets/js/fc855aa1.365d20e0.js similarity index 99% rename from assets/js/fc855aa1.e36c44e2.js rename to assets/js/fc855aa1.365d20e0.js index ec15b282c..5d0a34180 100644 --- a/assets/js/fc855aa1.e36c44e2.js +++ b/assets/js/fc855aa1.365d20e0.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[47],{1830:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var s=r(4848),i=r(8453),l=r(1470),c=r(9365);const t={title:"proof namespace",sidebar_label:"proof",sidebar_position:7},d=void 0,a={id:"interacting/json-rpc-ns/proof",title:"proof namespace",description:"proof_getTransactionByHash",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/proof.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/proof",permalink:"/1.26.0/interacting/json-rpc-ns/proof",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/proof.md",tags:[],version:"1.26.0",lastUpdatedAt:1728683983e3,sidebarPosition:7,frontMatter:{title:"proof namespace",sidebar_label:"proof",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"personal",permalink:"/1.26.0/interacting/json-rpc-ns/personal"},next:{title:"trace",permalink:"/1.26.0/interacting/json-rpc-ns/trace"}},o={},h=[{value:"proof_getTransactionByHash",id:"proof_gettransactionbyhash",level:3},{value:"proof_getTransactionReceipt",id:"proof_gettransactionreceipt",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"proof_gettransactionbyhash",children:"proof_getTransactionByHash"}),"\n",(0,s.jsxs)(n.p,{children:["This function returns the same result as ",(0,s.jsx)(n.code,{children:"eth_getTransactionReceipt"})," and also a tx proof, receipt proof and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionByHash",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transaction"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"accessList"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"chainId"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"hash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"input"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"isSystemTx"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mint"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nonce"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"r"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"s"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sourceHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"v"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"yParity"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"proof_gettransactionreceipt",children:"proof_getTransactionReceipt"}),"\n",(0,s.jsxs)(n.p,{children:["This function should return the same result as ",(0,s.jsx)(n.code,{children:"eth_call"})," and also proofs of all used accounts and their storages and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionReceipt",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receipt"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"contractAddress"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"error"}),": ",(0,s.jsx)(n.em,{children:"string"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logs"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"removed"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"topics"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logsBloom"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"root"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"status"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receiptProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},9365:(e,n,r)=>{r.d(n,{A:()=>c});r(6540);var s=r(4164);const i={tabItem:"tabItem_Ymn6"};var l=r(4848);function c(e){let{children:n,hidden:r,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,s.A)(i.tabItem,c),hidden:r,children:n})}},1470:(e,n,r)=>{r.d(n,{A:()=>T});var s=r(6540),i=r(4164),l=r(3104),c=r(6347),t=r(205),d=r(7485),a=r(1682),o=r(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:r}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:r,attributes:s,default:i}}=e;return{value:n,label:r,attributes:s,default:i}}))}(r);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,r])}function j(e){let{value:n,tabValues:r}=e;return r.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:r}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:r}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:n,groupId:r});return[(0,d.aZ)(l),(0,s.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:i}=e,l=x(e),[c,d]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=r.find((e=>e.default))??r[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:r,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(r);return[i,(0,s.useCallback)((e=>{r&&l.set(e)}),[r,l])]}({groupId:i}),g=(()=>{const e=a??m;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{g&&d(g)}),[g]);return{selectedValue:c,selectValue:(0,s.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=r(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=r(4848);function b(e){let{className:n,block:r,selectedValue:s,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,r=d.indexOf(n),i=t[r].value;i!==s&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const r=d.indexOf(e.currentTarget)+1;n=d[r]??d[0];break}case"ArrowLeft":{const r=d.indexOf(e.currentTarget)-1;n=d[r]??d[d.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":r},n),children:t.map((e=>{let{value:n,label:r,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":s===n}),children:r??n},n)}))})}function v(e){let{lazy:n,children:r,selectedValue:l}=e;const c=(Array.isArray(r)?r:[r]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,s.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,f.jsx)(b,{...n,...e}),(0,f.jsx)(v,{...n,...e})]})}function T(e){const n=(0,p.A)();return(0,f.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>t});var s=r(6540);const i={},l=s.createContext(i);function c(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[47],{1830:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>j,frontMatter:()=>t,metadata:()=>a,toc:()=>h});var s=r(4848),i=r(8453),l=r(1470),c=r(9365);const t={title:"proof namespace",sidebar_label:"proof",sidebar_position:7},d=void 0,a={id:"interacting/json-rpc-ns/proof",title:"proof namespace",description:"proof_getTransactionByHash",source:"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/proof.md",sourceDirName:"interacting/json-rpc-ns",slug:"/interacting/json-rpc-ns/proof",permalink:"/1.26.0/interacting/json-rpc-ns/proof",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.26.0/interacting/json-rpc-ns/proof.md",tags:[],version:"1.26.0",lastUpdatedAt:1728684487e3,sidebarPosition:7,frontMatter:{title:"proof namespace",sidebar_label:"proof",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"personal",permalink:"/1.26.0/interacting/json-rpc-ns/personal"},next:{title:"trace",permalink:"/1.26.0/interacting/json-rpc-ns/trace"}},o={},h=[{value:"proof_getTransactionByHash",id:"proof_gettransactionbyhash",level:3},{value:"proof_getTransactionReceipt",id:"proof_gettransactionreceipt",level:3}];function x(e){const n={code:"code",em:"em",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"proof_gettransactionbyhash",children:"proof_getTransactionByHash"}),"\n",(0,s.jsxs)(n.p,{children:["This function returns the same result as ",(0,s.jsx)(n.code,{children:"eth_getTransactionReceipt"})," and also a tx proof, receipt proof and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionByHash",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transaction"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"accessList"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"storageKeys"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobVersionedHashes"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"chainId"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"hash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"input"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"isSystemTx"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerBlobGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"maxPriorityFeePerGas"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mint"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nonce"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"r"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"s"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sourceHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"v"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"yParity"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"proof_gettransactionreceipt",children:"proof_getTransactionReceipt"}),"\n",(0,s.jsxs)(n.p,{children:["This function should return the same result as ",(0,s.jsx)(n.code,{children:"eth_call"})," and also proofs of all used accounts and their storages and serialized block headers."]}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsx)(c.A,{value:"params",label:"Parameters",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"txHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"includeHeader"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n"]}),"\n"]})}),(0,s.jsx)(c.A,{value:"request",label:"Request",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl localhost:8545 \\\n -X POST \\\n -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc": "2.0",\n "id": 0,\n "method": "proof_getTransactionReceipt",\n "params": [txHash, includeHeader]\n }\'\n'})})}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 0,\n "result": result\n}\n'})}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"result"}),": ",(0,s.jsx)(n.em,{children:"object"})]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHeader"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receipt"}),": ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blobGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"contractAddress"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cumulativeGasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"effectiveGasPrice"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"error"}),": ",(0,s.jsx)(n.em,{children:"string"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"from"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gasUsed"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logs"}),": array of ",(0,s.jsx)(n.em,{children:"object"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"address"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blockNumber"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"removed"}),": ",(0,s.jsx)(n.em,{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"topics"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"logsBloom"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"root"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"status"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"to"}),": ",(0,s.jsx)(n.em,{children:"string"})," (address)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionHash"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hash)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transactionIndex"}),": ",(0,s.jsx)(n.em,{children:"string"})," (hex integer)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": ",(0,s.jsx)(n.em,{children:"integer"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receiptProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"txProof"}),": array of ",(0,s.jsx)(n.em,{children:"string"})," (hex data)"]}),"\n"]})]})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},9365:(e,n,r)=>{r.d(n,{A:()=>c});r(6540);var s=r(4164);const i={tabItem:"tabItem_Ymn6"};var l=r(4848);function c(e){let{children:n,hidden:r,className:c}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,s.A)(i.tabItem,c),hidden:r,children:n})}},1470:(e,n,r)=>{r.d(n,{A:()=>T});var s=r(6540),i=r(4164),l=r(3104),c=r(6347),t=r(205),d=r(7485),a=r(1682),o=r(679);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:r}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:r,attributes:s,default:i}}=e;return{value:n,label:r,attributes:s,default:i}}))}(r);return function(e){const n=(0,a.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,r])}function j(e){let{value:n,tabValues:r}=e;return r.some((e=>e.value===n))}function u(e){let{queryString:n=!1,groupId:r}=e;const i=(0,c.W6)(),l=function(e){let{queryString:n=!1,groupId:r}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:n,groupId:r});return[(0,d.aZ)(l),(0,s.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(i.location.search);n.set(l,e),i.replace({...i.location,search:n.toString()})}),[l,i])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:i}=e,l=x(e),[c,d]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!j({value:n,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=r.find((e=>e.default))??r[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:l}))),[a,h]=u({queryString:r,groupId:i}),[m,p]=function(e){let{groupId:n}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,l]=(0,o.Dv)(r);return[i,(0,s.useCallback)((e=>{r&&l.set(e)}),[r,l])]}({groupId:i}),g=(()=>{const e=a??m;return j({value:e,tabValues:l})?e:null})();(0,t.A)((()=>{g&&d(g)}),[g]);return{selectedValue:c,selectValue:(0,s.useCallback)((e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),h(e),p(e)}),[h,p,l]),tabValues:l}}var p=r(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=r(4848);function b(e){let{className:n,block:r,selectedValue:s,selectValue:c,tabValues:t}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const n=e.currentTarget,r=d.indexOf(n),i=t[r].value;i!==s&&(a(n),c(i))},h=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const r=d.indexOf(e.currentTarget)+1;n=d[r]??d[0];break}case"ArrowLeft":{const r=d.indexOf(e.currentTarget)-1;n=d[r]??d[d.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":r},n),children:t.map((e=>{let{value:n,label:r,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>d.push(e),onKeyDown:h,onClick:o,...l,className:(0,i.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":s===n}),children:r??n},n)}))})}function v(e){let{lazy:n,children:r,selectedValue:l}=e;const c=(Array.isArray(r)?r:[r]).filter(Boolean);if(n){const e=c.find((e=>e.props.value===l));return e?(0,s.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:c.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==l})))})}function y(e){const n=m(e);return(0,f.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,f.jsx)(b,{...n,...e}),(0,f.jsx)(v,{...n,...e})]})}function T(e){const n=(0,p.A)();return(0,f.jsx)(y,{...e,children:h(e.children)},String(n))}},8453:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>t});var s=r(6540);const i={},l=s.createContext(i);function c(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/fccad8df.39d2aab2.js b/assets/js/fccad8df.deb3aaea.js similarity index 97% rename from assets/js/fccad8df.39d2aab2.js rename to assets/js/fccad8df.deb3aaea.js index 5f856c9bb..ad633bb42 100644 --- a/assets/js/fccad8df.39d2aab2.js +++ b/assets/js/fccad8df.deb3aaea.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4360],{7920:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=t(4848),r=t(8453);const o={title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},a=void 0,s={id:"get-started/intro",title:"Introduction and overview",description:"Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.",source:"@site/docs/get-started/intro.md",sourceDirName:"get-started",slug:"/",permalink:"/next/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/get-started/intro.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},sidebar:"tutorialSidebar",next:{title:"System requirements",permalink:"/next/get-started/system-requirements"}},d={},c=[];function u(e){const n={a:"a",p:"p",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Nethermind is a high-performance, highly configurable Ethereum execution client built on ",(0,i.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/",children:".NET"})," that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with ",(0,i.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,i.jsx)(n.a,{href:"https://datalust.co/seq",children:"Seq"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators."}),"\n",(0,i.jsx)(n.p,{children:"Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding."}),"\n",(0,i.jsx)(n.p,{children:"We hope you find this documentation helpful and welcome your feedback and suggestions!"})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var i=t(6540);const r={},o=i.createContext(r);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4360],{7920:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=t(4848),r=t(8453);const o={title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},a=void 0,s={id:"get-started/intro",title:"Introduction and overview",description:"Nethermind is a high-performance, highly configurable Ethereum execution client built on .NET that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with Grafana and Seq.",source:"@site/docs/get-started/intro.md",sourceDirName:"get-started",slug:"/",permalink:"/next/",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/get-started/intro.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"Introduction and overview",sidebar_label:"Introduction",sidebar_position:0,slug:"/"},sidebar:"tutorialSidebar",next:{title:"System requirements",permalink:"/next/get-started/system-requirements"}},d={},c=[];function u(e){const n={a:"a",p:"p",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Nethermind is a high-performance, highly configurable Ethereum execution client built on ",(0,i.jsx)(n.a,{href:"https://dotnet.microsoft.com/en-us/",children:".NET"})," that runs on Linux, Windows, and macOS and supports Clique, Aura, and Ethash. With breakneck sync speeds and support for external plugins, it provides reliable access to rich on-chain data thanks to a high-performance JSON-RPC interface and node health monitoring with ",(0,i.jsx)(n.a,{href:"https://grafana.com",children:"Grafana"})," and ",(0,i.jsx)(n.a,{href:"https://datalust.co/seq",children:"Seq"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Founded in 2017 and boosted by a grant from the Ethereum Foundation in 2018, we focus on delivering a robust Ethereum client, ensuring outstanding performance and flexibility for node operators."}),"\n",(0,i.jsx)(n.p,{children:"Here, you'll find instructions on installing, configuring, and using Nethermind and its features. We've organized the information by topic and included examples and visuals for better understanding."}),"\n",(0,i.jsx)(n.p,{children:"We hope you find this documentation helpful and welcome your feedback and suggestions!"})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var i=t(6540);const r={},o=i.createContext(r);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/fdbfc520.5fb3c047.js b/assets/js/fdbfc520.84ead8b8.js similarity index 99% rename from assets/js/fdbfc520.5fb3c047.js rename to assets/js/fdbfc520.84ead8b8.js index 4f62ff5a8..2bbdd55df 100644 --- a/assets/js/fdbfc520.5fb3c047.js +++ b/assets/js/fdbfc520.84ead8b8.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7799],{659:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>h,toc:()=>c});var i=t(4848),s=t(8453);const r={title:"Migrating from Geth",sidebar_position:4},o=void 0,h={id:"get-started/migrating-from-geth",title:"Migrating from Geth",description:"This guide will walk you through all the steps required for a seamless and quick transition.",source:"@site/versioned_docs/version-1.28.0/get-started/migrating-from-geth.md",sourceDirName:"get-started",slug:"/get-started/migrating-from-geth",permalink:"/1.28.0/get-started/migrating-from-geth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/get-started/migrating-from-geth.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:4,frontMatter:{title:"Migrating from Geth",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Consensus clients",permalink:"/1.28.0/get-started/consensus-clients"},next:{title:"Configuration",permalink:"/1.28.0/fundamentals/configuration"}},d={},c=[{value:"Option 1: Sync Nethermind next to Geth",id:"option-1",level:2},{value:"Option 2: Sync Nethermind using Sedge next to Geth",id:"option-2",level:2},{value:"Option 3: Remove Geth and sync Nethermind",id:"option-3",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This guide will walk you through all the steps required for a seamless and quick transition."}),"\n",(0,i.jsxs)(n.p,{children:["First, ensure ",(0,i.jsx)(n.em,{children:"the disk has enough space"}),". The most secure way is having a Nethermind synced on the same machine as Geth without shutting Geth down. That allows you to check whether Nethermind is syncing properly, verify whether everything works as expected, and reduce node downtime to a bare minimum. This is a recommended approach for any public JSON-RPC provider or a validator."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the disk has enough space, ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"})," or ",(0,i.jsx)(n.a,{href:"#option-2",children:"option 2"})," are the recommended choices."]}),"\n",(0,i.jsx)(n.li,{children:"If there is not enough disk space, and downtime is not an option, we recommend either extending the disk or, if not possible, hosting Nethermind on another machine, syncing it, and whenever it completes, moving everything validator-related to that machine, and abandoning the first one."}),"\n",(0,i.jsxs)(n.li,{children:["If downtime of around 12 hours or more is not a problem, see the ",(0,i.jsx)(n.a,{href:"#option-3",children:"option 3"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"option-1",children:"Option 1: Sync Nethermind next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:["First, ",(0,i.jsx)(n.a,{href:"/1.28.0/get-started/installing-nethermind",children:"install Nethermind"})," and a ",(0,i.jsx)(n.a,{href:"/1.28.0/get-started/consensus-clients",children:"consensus client"})," of your choice."]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"If you choose the same consensus client for Nethermind that is already being used with Geth, ensure their settings, such as data directories, do not interfere."}),"\n",(0,i.jsx)(n.li,{children:"Ensure the network ports of the consensus client paired with Nethermind and the one paired with Geth do not interfere with each other."}),"\n",(0,i.jsxs)(n.li,{children:["Ensure the JSON-RPC port, Engine API port, and the P2P networking ports of Nethermind are different from the ones used by Geth. These ports are set using the following command line options:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort "})}),"\n"]}),"\n"]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. To check the sync status, use the ",(0,i.jsx)(n.a,{href:"/1.28.0/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method. When it returns ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind is considered fully synced with all block bodies and receipts needed to work properly as a validator. Another option to monitor the sync is a ",(0,i.jsx)(n.a,{href:"/1.28.0/monitoring/health-check",children:"health check"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Once Nethermind is synced, shut down both Geth and Nethermind, along with its paired consensus client. Then, restart Nethermind using the ports assigned for and the JWT secret used by Geth before. Ensure no warnings or errors are present in the logs of both Nethermind and the consensus client. Also, check if Nethermind is following the chain properly. If everything is alright, you can remove Geth and the consensus client paired with Nethermind previously along with their data."}),"\n",(0,i.jsx)(n.h2,{id:"option-2",children:"Option 2: Sync Nethermind using Sedge next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"})," is a setup tool for PoS validators and nodes that runs on Linux and macOS."]}),"\n",(0,i.jsxs)(n.p,{children:["This option is similar to the ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"}),", but Sedge automatically takes care of conflicting settings making the entire process much easier."]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsx)(n.p,{children:"You can add a flag to Sedge as follows. For instance:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["For the execution client, ",(0,i.jsx)(n.code,{children:"--el-extra-flag JsonRpc.Port=8546"})]}),"\n",(0,i.jsxs)(n.li,{children:["For the consensus client, ",(0,i.jsx)(n.code,{children:"--cl-extra-flag rpc-port=4001"})]}),"\n"]})]}),"\n",(0,i.jsxs)(n.p,{children:["Once Nethermind is synced, you can remove extra flags if any from the ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," and restart the node as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"docker compose stop execution\ndocker compose up -d execution\n"})}),"\n",(0,i.jsx)(n.h2,{id:"option-3",children:"Option 3: Remove Geth and sync Nethermind"}),"\n",(0,i.jsx)(n.p,{children:"This is the simplest option as it doesn't require configuration adjustments. However, the node will be down until Nethermind is syncing."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Shut down and remove Geth along with its data."}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/1.28.0/get-started/installing-nethermind",children:"Install Nethermind"})}),"\n",(0,i.jsx)(n.li,{children:"Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the ",(0,i.jsx)(n.a,{href:"/1.28.0/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method or the ",(0,i.jsx)(n.a,{href:"/1.28.0/monitoring/health-check",children:"health check"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>h});var i=t(6540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function h(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[7799],{659:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>h,toc:()=>c});var i=t(4848),s=t(8453);const r={title:"Migrating from Geth",sidebar_position:4},o=void 0,h={id:"get-started/migrating-from-geth",title:"Migrating from Geth",description:"This guide will walk you through all the steps required for a seamless and quick transition.",source:"@site/versioned_docs/version-1.28.0/get-started/migrating-from-geth.md",sourceDirName:"get-started",slug:"/get-started/migrating-from-geth",permalink:"/1.28.0/get-started/migrating-from-geth",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/get-started/migrating-from-geth.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:4,frontMatter:{title:"Migrating from Geth",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Consensus clients",permalink:"/1.28.0/get-started/consensus-clients"},next:{title:"Configuration",permalink:"/1.28.0/fundamentals/configuration"}},d={},c=[{value:"Option 1: Sync Nethermind next to Geth",id:"option-1",level:2},{value:"Option 2: Sync Nethermind using Sedge next to Geth",id:"option-2",level:2},{value:"Option 3: Remove Geth and sync Nethermind",id:"option-3",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This guide will walk you through all the steps required for a seamless and quick transition."}),"\n",(0,i.jsxs)(n.p,{children:["First, ensure ",(0,i.jsx)(n.em,{children:"the disk has enough space"}),". The most secure way is having a Nethermind synced on the same machine as Geth without shutting Geth down. That allows you to check whether Nethermind is syncing properly, verify whether everything works as expected, and reduce node downtime to a bare minimum. This is a recommended approach for any public JSON-RPC provider or a validator."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If the disk has enough space, ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"})," or ",(0,i.jsx)(n.a,{href:"#option-2",children:"option 2"})," are the recommended choices."]}),"\n",(0,i.jsx)(n.li,{children:"If there is not enough disk space, and downtime is not an option, we recommend either extending the disk or, if not possible, hosting Nethermind on another machine, syncing it, and whenever it completes, moving everything validator-related to that machine, and abandoning the first one."}),"\n",(0,i.jsxs)(n.li,{children:["If downtime of around 12 hours or more is not a problem, see the ",(0,i.jsx)(n.a,{href:"#option-3",children:"option 3"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"option-1",children:"Option 1: Sync Nethermind next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:["First, ",(0,i.jsx)(n.a,{href:"/1.28.0/get-started/installing-nethermind",children:"install Nethermind"})," and a ",(0,i.jsx)(n.a,{href:"/1.28.0/get-started/consensus-clients",children:"consensus client"})," of your choice."]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"If you choose the same consensus client for Nethermind that is already being used with Geth, ensure their settings, such as data directories, do not interfere."}),"\n",(0,i.jsx)(n.li,{children:"Ensure the network ports of the consensus client paired with Nethermind and the one paired with Geth do not interfere with each other."}),"\n",(0,i.jsxs)(n.li,{children:["Ensure the JSON-RPC port, Engine API port, and the P2P networking ports of Nethermind are different from the ones used by Geth. These ports are set using the following command line options:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.Port "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--JsonRpc.EnginePort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.DiscoveryPort "})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"--Network.P2PPort "})}),"\n"]}),"\n"]}),"\n"]})}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. To check the sync status, use the ",(0,i.jsx)(n.a,{href:"/1.28.0/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method. When it returns ",(0,i.jsx)(n.code,{children:"false"}),", Nethermind is considered fully synced with all block bodies and receipts needed to work properly as a validator. Another option to monitor the sync is a ",(0,i.jsx)(n.a,{href:"/1.28.0/monitoring/health-check",children:"health check"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Once Nethermind is synced, shut down both Geth and Nethermind, along with its paired consensus client. Then, restart Nethermind using the ports assigned for and the JWT secret used by Geth before. Ensure no warnings or errors are present in the logs of both Nethermind and the consensus client. Also, check if Nethermind is following the chain properly. If everything is alright, you can remove Geth and the consensus client paired with Nethermind previously along with their data."}),"\n",(0,i.jsx)(n.h2,{id:"option-2",children:"Option 2: Sync Nethermind using Sedge next to Geth"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://docs.sedge.nethermind.io",children:"Sedge"})," is a setup tool for PoS validators and nodes that runs on Linux and macOS."]}),"\n",(0,i.jsxs)(n.p,{children:["This option is similar to the ",(0,i.jsx)(n.a,{href:"#option-1",children:"option 1"}),", but Sedge automatically takes care of conflicting settings making the entire process much easier."]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsx)(n.p,{children:"You can add a flag to Sedge as follows. For instance:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["For the execution client, ",(0,i.jsx)(n.code,{children:"--el-extra-flag JsonRpc.Port=8546"})]}),"\n",(0,i.jsxs)(n.li,{children:["For the consensus client, ",(0,i.jsx)(n.code,{children:"--cl-extra-flag rpc-port=4001"})]}),"\n"]})]}),"\n",(0,i.jsxs)(n.p,{children:["Once Nethermind is synced, you can remove extra flags if any from the ",(0,i.jsx)(n.code,{children:"docker-compose.yml"})," and restart the node as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"docker compose stop execution\ndocker compose up -d execution\n"})}),"\n",(0,i.jsx)(n.h2,{id:"option-3",children:"Option 3: Remove Geth and sync Nethermind"}),"\n",(0,i.jsx)(n.p,{children:"This is the simplest option as it doesn't require configuration adjustments. However, the node will be down until Nethermind is syncing."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Shut down and remove Geth along with its data."}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/1.28.0/get-started/installing-nethermind",children:"Install Nethermind"})}),"\n",(0,i.jsx)(n.li,{children:"Ensure Nethermind uses the same network ports as Geth before and the same JWT secret. Otherwise, you must reconfigure the consensus client to the Nethermind settings."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Once you fulfill the above requirements, you can start syncing Nethermind. While Nethermid is syncing, ensure no errors are present in the logs of both Nethermind and the consensus client. Note that sync may take a while, depending on the chain. Also, you can periodically check the ",(0,i.jsx)(n.a,{href:"/1.28.0/interacting/json-rpc-ns/eth#eth_syncing",children:(0,i.jsx)(n.code,{children:"eth_syncing"})})," JSON-RPC method or the ",(0,i.jsx)(n.a,{href:"/1.28.0/monitoring/health-check",children:"health check"}),"."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>h});var i=t(6540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function h(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/fe0ec189.97aeff0f.js b/assets/js/fe0ec189.898e7337.js similarity index 99% rename from assets/js/fe0ec189.97aeff0f.js rename to assets/js/fe0ec189.898e7337.js index b5bb31402..d5ea59500 100644 --- a/assets/js/fe0ec189.97aeff0f.js +++ b/assets/js/fe0ec189.898e7337.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6336],{1137:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var t=i(4848),l=i(8453);const s={title:"Plugins",sidebar_position:1},o=void 0,r={id:"developers/plugins",title:"Plugins",description:"This article is outdated and requires a revision.",source:"@site/docs/developers/plugins.md",sourceDirName:"developers",slug:"/developers/plugins",permalink:"/next/developers/plugins",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/developers/plugins.md",tags:[],version:"current",lastUpdatedAt:1728683983e3,sidebarPosition:1,frontMatter:{title:"Plugins",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Building from source",permalink:"/next/developers/building-from-source"},next:{title:"Custom analytic tools",permalink:"/next/developers/custom-analytic-tools"}},a={},c=[{value:"RPC Plugin example:",id:"rpc-plugin-example",level:2},{value:"CLI Plugin example:",id:"cli-plugin-example",level:2},{value:"Block Tree Visitor Plugin example:",id:"block-tree-visitor-plugin-example",level:2},{value:"Config plugin example:",id:"config-plugin-example",level:2},{value:"State Tree Visitor example:",id:"state-tree-visitor-example",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,t.jsx)(n.p,{children:"Nethermind plugins is a powerful way of extending your local node capabilities."}),"\n",(0,t.jsxs)(n.p,{children:["(see also an article\nhere: ",(0,t.jsx)(n.a,{href:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59",children:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59"}),")"]}),"\n",(0,t.jsx)(n.p,{children:"Plugins that you can write:"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"Plugin Type"}),(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"What can it be used for?"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"RPC"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Adding additional RPC modules to the client that have full access to the internal Nethermind APIs and can extend capabilities of the node when integrating with your infrastructure / systems."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Block Tree Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Code allowing you to analyze entire block tree from genesis to the head block and execute aggregated calculations and checks."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Devp2p"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allows you to create additional devp2p network protocol for your nodes to communicate over TCP/IP. You can also build custom products that will run attached to Nethermind nodes."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"State Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allow you to run aggregated analysis on the entire raw format state (or just some accounts storages)."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Config"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"You can add additional configuration categories to our config files and then use them in env variables, json files or command line to configure behaviour of your plugins."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool behaviours and listeners."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Tracers"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Custom, powerful EVM tracers capable of extracting elements of EVM execution in real time."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"CLI"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Additional modules for Nethermind CLI that can allow you build some quick scratchpad style JavaScript based behaviors."})]})]})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," When writing a plugin be carefull about exceptions you throw. Especially if you are hooking up event handlers\non some core objects like BlockProcessor or BlockTree. Those exceptions can bring the node down. This is by design. Its\nresponsibility of plugin writer to correctly handle those exceptions."]}),"\n",(0,t.jsx)(n.p,{children:"How to build a plugin? We included an example inside the Nethermind.Analytics plugin:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:i(7200).A+"",width:"547",height:"417"})}),"\n",(0,t.jsx)(n.h2,{id:"rpc-plugin-example",children:"RPC Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' [RpcModule(ModuleType.Clique)]\n public interface IAnalyticsModule : IModule\n {\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from state.", IsImplemented = true)]\n ResultWrapper analytics_verifySupply();\n\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from rewards.", IsImplemented = true)]\n ResultWrapper analytics_verifyRewards();\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"cli-plugin-example",children:"CLI Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'[CliModule("analytics")]\npublic class AnalyticsCliModule : CliModuleBase\n{\n [CliFunction("analytics", "verifySupply")]\n public string VerifySupply()\n {\n return NodeManager.Post("analytics_verifySupply").Result;\n }\n\n [CliFunction("analytics", "verifyRewards")]\n public string VerifyRewards()\n {\n return NodeManager.Post("analytics_verifyRewards").Result;\n }\n\n public AnalyticsCliModule(ICliEngine cliEngine, INodeManager nodeManager)\n : base(cliEngine, nodeManager) { }\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"block-tree-visitor-plugin-example",children:"Block Tree Visitor Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive { get; }\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n\n public UInt256 BlockRewards { get; private set; }\n\n public RewardsVerifier(ILogManager logManager, long endLevelExclusive)\n {\n _logger = logManager.GetClassLogger();\n EndLevelExclusive = endLevelExclusive;\n BlockRewards = _genesisAllocations;\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n BlockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {BlockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(HeaderVisitOutcome.None);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"config-plugin-example",children:"Config plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:"public class AnalyticsConfig : IAnalyticsConfig\n{\n public bool PluginsEnabled { get; set; }\n public bool StreamTransactions { get; set; }\n public bool StreamBlocks { get; set; }\n public bool LogPublishedData { get; set; }\n}\n"})}),"\n",(0,t.jsx)(n.h2,{id:"state-tree-visitor-example",children:"State Tree Visitor example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'public class SupplyVerifier : ITreeVisitor\n{\n private readonly ILogger _logger;\n private HashSet _ignoreThisOne = new HashSet();\n private int _accountsVisited;\n private int _nodesVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public UInt256 Balance { get; set; } = UInt256.Zero;\n\n public bool ShouldVisit(Keccak nextNode)\n {\n if (_ignoreThisOne.Count > 16)\n {\n _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");\n }\n\n if (_ignoreThisOne.Contains(nextNode))\n {\n _ignoreThisOne.Remove(nextNode);\n return false;\n }\n\n return true;\n }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)\n {\n }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)\n {\n _logger.Warn($"Missing node {nodeHash}");\n }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n for (int i = 0; i < 16; i++)\n {\n Keccak childHash = node.GetChildHash(i);\n if (childHash != null)\n {\n _ignoreThisOne.Add(childHash);\n }\n }\n }\n }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n if (trieVisitContext.IsStorage)\n {\n _ignoreThisOne.Add(node.GetChildHash(0));\n }\n }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n Balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n }\n}\n'})})]})}function u(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},7200:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png"},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var t=i(6540);const l={},s=t.createContext(l);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6336],{1137:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var t=i(4848),l=i(8453);const s={title:"Plugins",sidebar_position:1},o=void 0,r={id:"developers/plugins",title:"Plugins",description:"This article is outdated and requires a revision.",source:"@site/docs/developers/plugins.md",sourceDirName:"developers",slug:"/developers/plugins",permalink:"/next/developers/plugins",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/developers/plugins.md",tags:[],version:"current",lastUpdatedAt:1728684487e3,sidebarPosition:1,frontMatter:{title:"Plugins",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Building from source",permalink:"/next/developers/building-from-source"},next:{title:"Custom analytic tools",permalink:"/next/developers/custom-analytic-tools"}},a={},c=[{value:"RPC Plugin example:",id:"rpc-plugin-example",level:2},{value:"CLI Plugin example:",id:"cli-plugin-example",level:2},{value:"Block Tree Visitor Plugin example:",id:"block-tree-visitor-plugin-example",level:2},{value:"Config plugin example:",id:"config-plugin-example",level:2},{value:"State Tree Visitor example:",id:"state-tree-visitor-example",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"This article is outdated and requires a revision."})}),"\n",(0,t.jsx)(n.p,{children:"Nethermind plugins is a powerful way of extending your local node capabilities."}),"\n",(0,t.jsxs)(n.p,{children:["(see also an article\nhere: ",(0,t.jsx)(n.a,{href:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59",children:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59"}),")"]}),"\n",(0,t.jsx)(n.p,{children:"Plugins that you can write:"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"Plugin Type"}),(0,t.jsx)(n.th,{style:{textAlign:"left"},children:"What can it be used for?"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"RPC"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Adding additional RPC modules to the client that have full access to the internal Nethermind APIs and can extend capabilities of the node when integrating with your infrastructure / systems."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Block Tree Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Code allowing you to analyze entire block tree from genesis to the head block and execute aggregated calculations and checks."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Devp2p"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allows you to create additional devp2p network protocol for your nodes to communicate over TCP/IP. You can also build custom products that will run attached to Nethermind nodes."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"State Visitors"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Allow you to run aggregated analysis on the entire raw format state (or just some accounts storages)."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Config"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"You can add additional configuration categories to our config files and then use them in env variables, json files or command line to configure behaviour of your plugins."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"TxPool behaviours and listeners."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Tracers"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Custom, powerful EVM tracers capable of extracting elements of EVM execution in real time."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"CLI"}),(0,t.jsx)(n.td,{style:{textAlign:"left"},children:"Additional modules for Nethermind CLI that can allow you build some quick scratchpad style JavaScript based behaviors."})]})]})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," When writing a plugin be carefull about exceptions you throw. Especially if you are hooking up event handlers\non some core objects like BlockProcessor or BlockTree. Those exceptions can bring the node down. This is by design. Its\nresponsibility of plugin writer to correctly handle those exceptions."]}),"\n",(0,t.jsx)(n.p,{children:"How to build a plugin? We included an example inside the Nethermind.Analytics plugin:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:i(7200).A+"",width:"547",height:"417"})}),"\n",(0,t.jsx)(n.h2,{id:"rpc-plugin-example",children:"RPC Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' [RpcModule(ModuleType.Clique)]\n public interface IAnalyticsModule : IModule\n {\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from state.", IsImplemented = true)]\n ResultWrapper analytics_verifySupply();\n\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from rewards.", IsImplemented = true)]\n ResultWrapper analytics_verifyRewards();\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"cli-plugin-example",children:"CLI Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'[CliModule("analytics")]\npublic class AnalyticsCliModule : CliModuleBase\n{\n [CliFunction("analytics", "verifySupply")]\n public string VerifySupply()\n {\n return NodeManager.Post("analytics_verifySupply").Result;\n }\n\n [CliFunction("analytics", "verifyRewards")]\n public string VerifyRewards()\n {\n return NodeManager.Post("analytics_verifyRewards").Result;\n }\n\n public AnalyticsCliModule(ICliEngine cliEngine, INodeManager nodeManager)\n : base(cliEngine, nodeManager) { }\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"block-tree-visitor-plugin-example",children:"Block Tree Visitor Plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive { get; }\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n\n public UInt256 BlockRewards { get; private set; }\n\n public RewardsVerifier(ILogManager logManager, long endLevelExclusive)\n {\n _logger = logManager.GetClassLogger();\n EndLevelExclusive = endLevelExclusive;\n BlockRewards = _genesisAllocations;\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n BlockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {BlockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(HeaderVisitOutcome.None);\n\n public Task VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n'})}),"\n",(0,t.jsx)(n.h2,{id:"config-plugin-example",children:"Config plugin example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:"public class AnalyticsConfig : IAnalyticsConfig\n{\n public bool PluginsEnabled { get; set; }\n public bool StreamTransactions { get; set; }\n public bool StreamBlocks { get; set; }\n public bool LogPublishedData { get; set; }\n}\n"})}),"\n",(0,t.jsx)(n.h2,{id:"state-tree-visitor-example",children:"State Tree Visitor example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'public class SupplyVerifier : ITreeVisitor\n{\n private readonly ILogger _logger;\n private HashSet _ignoreThisOne = new HashSet();\n private int _accountsVisited;\n private int _nodesVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public UInt256 Balance { get; set; } = UInt256.Zero;\n\n public bool ShouldVisit(Keccak nextNode)\n {\n if (_ignoreThisOne.Count > 16)\n {\n _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");\n }\n\n if (_ignoreThisOne.Contains(nextNode))\n {\n _ignoreThisOne.Remove(nextNode);\n return false;\n }\n\n return true;\n }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)\n {\n }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)\n {\n _logger.Warn($"Missing node {nodeHash}");\n }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n for (int i = 0; i < 16; i++)\n {\n Keccak childHash = node.GetChildHash(i);\n if (childHash != null)\n {\n _ignoreThisOne.Add(childHash);\n }\n }\n }\n }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n if (trieVisitContext.IsStorage)\n {\n _ignoreThisOne.Add(node.GetChildHash(0));\n }\n }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n Balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n }\n}\n'})})]})}function u(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},7200:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png"},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var t=i(6540);const l={},s=t.createContext(l);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ff14b4b6.2ec9925e.js b/assets/js/ff14b4b6.2590fac9.js similarity index 99% rename from assets/js/ff14b4b6.2ec9925e.js rename to assets/js/ff14b4b6.2590fac9.js index 20a73a627..0bee18b41 100644 --- a/assets/js/ff14b4b6.2ec9925e.js +++ b/assets/js/ff14b4b6.2590fac9.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4458],{8552:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=n(4848),o=n(8453);const r={title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},i=void 0,a={id:"fundamentals/private-networks",title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",source:"@site/versioned_docs/version-1.28.0/fundamentals/private-networks.md",sourceDirName:"fundamentals",slug:"/fundamentals/private-networks",permalink:"/1.28.0/fundamentals/private-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/private-networks.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:8,frontMatter:{title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Performance tuning",permalink:"/1.28.0/fundamentals/performance-tuning"},next:{title:"JSON-RPC server",permalink:"/1.28.0/interacting/json-rpc-server"}},c={},d=[{value:"Step 1: Prerequisites",id:"step-1-prerequisites",level:2},{value:"Step 2: Configure your network",id:"step-2-configure-your-network",level:2},{value:"Step 3: Deploy",id:"step-3-deploy",level:2},{value:"Step 4: Optional workflows",id:"step-4-optional-workflows",level:2},{value:"Simulating MEV workflows with mev-boost",id:"simulating-mev-workflows-with-mev-boost",level:3},{value:"Observability tools",id:"observability-tools",level:3},{value:"Deploying on Kubernetes",id:"deploying-on-kubernetes",level:3},{value:"Questions and feedback",id:"questions-and-feedback",level:2}];function l(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["This guide will walk you through using ",(0,s.jsxs)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:["Kurtosis ",(0,s.jsx)(t.code,{children:"ethereum-package"})]})," to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure to simulate MEV workflows."]}),"\n",(0,s.jsx)(t.h2,{id:"step-1-prerequisites",children:"Step 1: Prerequisites"}),"\n",(0,s.jsxs)(t.p,{children:["Before you begin, ensure you have ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/install",children:"Kurtosis CLI"})," and ",(0,s.jsx)(t.a,{href:"https://docs.docker.com/get-docker",children:"Docker"})," installed. The ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:(0,s.jsx)(t.code,{children:"ethereum-package"})})," is a Kurtosis environment definition known as a ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/packages",children:"package"}),". For more info about Kurtosis, see the ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com",children:"Kurtosis docs"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-2-configure-your-network",children:"Step 2: Configure your network"}),"\n",(0,s.jsxs)(t.p,{children:["Next, in your home directory, create a file with the name ",(0,s.jsx)(t.code,{children:"network_params.json"})," and populate it with the following contents:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-json",metastring:'title="network_params.json"',children:'{\n "participants": [\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lighthouse",\n "cl_client_image": "sigp/lighthouse:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "teku",\n "cl_client_image": "consensys/teku:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lodestar",\n "cl_client_image": "chainsafe/lodestar:next",\n "count": 1\n }\n ],\n "mev_type": "None",\n "launch_additional_services": false\n}\n'})}),"\n",(0,s.jsxs)(t.p,{children:["As you can see above, you have effectively created a network configuration file that Kurtosis will use to pass in the necessary parameters at runtime for your network. Notice that the ",(0,s.jsx)(t.code,{children:"participant"})," key describes the execution and consensus client pairing desired for each full node and how many nodes of that type to instantiate."]}),"\n",(0,s.jsxs)(t.p,{children:["There are many other configurations and flags you can use, including metrics and observability tools (e.g., Grafana, Prometheus, etc). For all supported options, see the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package#configuration",children:"configuration"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-3-deploy",children:"Step 3: Deploy"}),"\n",(0,s.jsxs)(t.p,{children:["Finally, once you have saved the ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, it is time to deploy the private net:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'kurtosis run github.com/ethpandaops/ethereum-package "$(cat ~/network_params.json)"\n'})}),"\n",(0,s.jsxs)(t.p,{children:["Kurtosis will use the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," environment definition and your custom network configuration (defined in ",(0,s.jsx)(t.code,{children:"network_params.json"}),") to spin up your network. Kurtosis will first spin up an ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"})," (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 and used to start up the private testnet."]}),"\n",(0,s.jsx)(t.p,{children:"Here is a sample output:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{children:"INFO[2023-09-01T16:10:45-04:00] ====================================================\nINFO[2023-09-01T16:10:45-04:00] || Created enclave: timid-knoll ||\nINFO[2023-09-01T16:10:45-04:00] ====================================================\nName: timid-knoll\nUUID: 939dfb5d59b0\nStatus: RUNNING\nCreation Time: Fri, 01 Sep 2023 16:08:57 EDT\n\n========================================= Files Artifacts =========================================\nUUID Name\na876b06035b7 1-lighthouse-nethermind-0-63\n87955ef69845 2-teku-nethermind-64-127\n4f77377da494 3-lodestar-nethermind-128-191\n9734313101e3 cl-genesis-data\n4164ed5c594c el-genesis-data\na49a3d2774b5 genesis-generation-config-cl\n16fcc4f96236 genesis-generation-config-el\n5fc72346f646 geth-prefunded-keys\n96ae153a0b51 prysm-password\n\n========================================== User Services ==========================================\nUUID Name Ports Status\nf369802ad2ae cl-1-lighthouse-nethermind http: 4000/tcp -> http://127.0.0.1:49894 RUNNING\n metrics: 5054/tcp -> http://127.0.0.1:49892\n tcp-discovery: 9000/tcp -> 127.0.0.1:49893\n udp-discovery: 9000/udp -> 127.0.0.1:64949\n5e14eb26ef45 cl-1-lighthouse-nethermind-validator http: 5042/tcp -> 127.0.0.1:49895 RUNNING\n metrics: 5064/tcp -> http://127.0.0.1:49896\nfed533d0e143 cl-2-teku-nethermind http: 4000/tcp -> 127.0.0.1:49899 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49897\n tcp-discovery: 9000/tcp -> 127.0.0.1:49898\n udp-discovery: 9000/udp -> 127.0.0.1:55521\n69cd832de246 cl-3-lodestar-nethermind http: 4000/tcp -> 127.0.0.1:49903 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49901\n tcp-discovery: 9000/tcp -> 127.0.0.1:49902\n udp-discovery: 9000/udp -> 127.0.0.1:50507\n75e3eec0c7d1 cl-3-lodestar-nethermind-validator metrics: 8008/tcp -> 127.0.0.1:49904 RUNNING\ne10c3f07e0e0 el-1-nethermind-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:49872 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49870\n tcp-discovery: 30303/tcp -> 127.0.0.1:49869\n udp-discovery: 30303/udp -> 127.0.0.1:64508\n ws: 8546/tcp -> 127.0.0.1:49871\nc6a28d3136fe el-2-nethermind-teku engine-rpc: 8551/tcp -> 127.0.0.1:49873 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49875\n tcp-discovery: 30303/tcp -> 127.0.0.1:49874\n udp-discovery: 30303/udp -> 127.0.0.1:52495\n ws: 8546/tcp -> 127.0.0.1:49876\n2fae3b3c41d3 el-3-nethermind-lodestar engine-rpc: 8551/tcp -> 127.0.0.1:49890 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49888\n tcp-discovery: 30303/tcp -> 127.0.0.1:49891\n udp-discovery: 30303/udp -> 127.0.0.1:62119\n ws: 8546/tcp -> 127.0.0.1:49889\n403cafe8416e prelaunch-data-generator-cl-genesis-data RUNNING\nebea71008cf4 prelaunch-data-generator-el-genesis-data RUNNING\n"})}),"\n",(0,s.jsx)(t.p,{children:"And that is it! You now have a 3-node, private Ethereum devnet with Nethermind/Lodestar, Nethermind/Teku, and Nethermind/Lighthouse execution and consensus client combinations."}),"\n",(0,s.jsxs)(t.p,{children:["Notice how, at the end, Kurtosis will print out the contents of your enclave, which includes both the various ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/files-artifacts",children:"files artifacts"})," and services that form your network. Kurtosis also maps the container ports to ephemeral local ports on your machine."]}),"\n",(0,s.jsxs)(t.p,{children:["Genesis data was generated using this ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-genesis-generator",children:"genesis-generator"})," to bootstrap the execution and consensus 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 ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"Kurtosis packages are modular, reproducible, and will work over Docker or Kubernetes. Read on to learn about additional services and configurations you may want to add to your private network."}),"\n",(0,s.jsx)(t.h2,{id:"step-4-optional-workflows",children:"Step 4: Optional workflows"}),"\n",(0,s.jsx)(t.p,{children:"This section briefly covers some optional configurations for your private devnet that are commonly used for validating and testing node-level behavior."}),"\n",(0,s.jsxs)(t.h3,{id:"simulating-mev-workflows-with-mev-boost",children:["Simulating MEV workflows with ",(0,s.jsx)(t.code,{children:"mev-boost"})]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," can simulate out-of-protocol Proposer Builder Separation (PBS) workflows using Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure. With a single flag, you can configure your network's validators to be instantiated with ",(0,s.jsx)(t.code,{children:"mev-boost"})," and be registered with a relayer to receive payloads from builders."]}),"\n",(0,s.jsxs)(t.p,{children:["To enable this in your ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, set ",(0,s.jsx)(t.code,{children:'"mev_type":'})," to ",(0,s.jsx)(t.code,{children:'"full"'})," or ",(0,s.jsx)(t.code,{children:'"mock"'}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["To learn more about how the ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure works with your private network, check out ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/how-to-full-mev-with-ethereum-package",children:"this guide"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"observability-tools",children:"Observability tools"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," comes out of the box with a few observability tools, including:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"A Grafana and Prometheus instance"}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/dapplion/beacon-metrics-gazer",children:"beacon metrics gazer service"})," to collect network-wide participation metrics"]}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/ethDreamer/json_rpc_snoop",children:"JSON-RPC Snooper"})," to log responses & requests between the execution engine API and the consensus client"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["To add your own custom Grafana dashboard template, fork the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," repository and add your configuration ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package/tree/main/static_files/grafana-config/dashboards",children:"here"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"deploying-on-kubernetes",children:"Deploying on Kubernetes"}),"\n",(0,s.jsxs)(t.p,{children:["As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," on Kubernetes, see ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/k8s",children:"Running Kurtosis in Kubernetes"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"questions-and-feedback",children:"Questions and feedback"}),"\n",(0,s.jsxs)(t.p,{children:["If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:"GitHub"})," or ",(0,s.jsx)(t.a,{href:"https://discord.gg/jJFG7XBqcY",children:"Discord"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[4458],{8552:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=n(4848),o=n(8453);const r={title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},i=void 0,a={id:"fundamentals/private-networks",title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",source:"@site/versioned_docs/version-1.28.0/fundamentals/private-networks.md",sourceDirName:"fundamentals",slug:"/fundamentals/private-networks",permalink:"/1.28.0/fundamentals/private-networks",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/fundamentals/private-networks.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:8,frontMatter:{title:"Private networks",description:"Use Kurtosis to deploy a private Ethereum devnet with Nethermind and any consensus client at any scale you need, wherever you need it.",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Performance tuning",permalink:"/1.28.0/fundamentals/performance-tuning"},next:{title:"JSON-RPC server",permalink:"/1.28.0/interacting/json-rpc-server"}},c={},d=[{value:"Step 1: Prerequisites",id:"step-1-prerequisites",level:2},{value:"Step 2: Configure your network",id:"step-2-configure-your-network",level:2},{value:"Step 3: Deploy",id:"step-3-deploy",level:2},{value:"Step 4: Optional workflows",id:"step-4-optional-workflows",level:2},{value:"Simulating MEV workflows with mev-boost",id:"simulating-mev-workflows-with-mev-boost",level:3},{value:"Observability tools",id:"observability-tools",level:3},{value:"Deploying on Kubernetes",id:"deploying-on-kubernetes",level:3},{value:"Questions and feedback",id:"questions-and-feedback",level:2}];function l(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["This guide will walk you through using ",(0,s.jsxs)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:["Kurtosis ",(0,s.jsx)(t.code,{children:"ethereum-package"})]})," to spin up a private, proof-of-stake (PoS) Ethereum devnet with three full Ethereum nodes locally over Docker. At the end of the guide, you will learn how to scale up your testnet on Kubernetes as well as enable optional services for your local testnet, such as network observability tools (e.g., Grafana, Prometheus) and Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure to simulate MEV workflows."]}),"\n",(0,s.jsx)(t.h2,{id:"step-1-prerequisites",children:"Step 1: Prerequisites"}),"\n",(0,s.jsxs)(t.p,{children:["Before you begin, ensure you have ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/install",children:"Kurtosis CLI"})," and ",(0,s.jsx)(t.a,{href:"https://docs.docker.com/get-docker",children:"Docker"})," installed. The ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:(0,s.jsx)(t.code,{children:"ethereum-package"})})," is a Kurtosis environment definition known as a ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/packages",children:"package"}),". For more info about Kurtosis, see the ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com",children:"Kurtosis docs"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-2-configure-your-network",children:"Step 2: Configure your network"}),"\n",(0,s.jsxs)(t.p,{children:["Next, in your home directory, create a file with the name ",(0,s.jsx)(t.code,{children:"network_params.json"})," and populate it with the following contents:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-json",metastring:'title="network_params.json"',children:'{\n "participants": [\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lighthouse",\n "cl_client_image": "sigp/lighthouse:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "teku",\n "cl_client_image": "consensys/teku:latest",\n "count": 1\n },\n {\n "el_client_type": "nethermind",\n "el_client_image": "nethermind/nethermind:latest",\n "cl_client_type": "lodestar",\n "cl_client_image": "chainsafe/lodestar:next",\n "count": 1\n }\n ],\n "mev_type": "None",\n "launch_additional_services": false\n}\n'})}),"\n",(0,s.jsxs)(t.p,{children:["As you can see above, you have effectively created a network configuration file that Kurtosis will use to pass in the necessary parameters at runtime for your network. Notice that the ",(0,s.jsx)(t.code,{children:"participant"})," key describes the execution and consensus client pairing desired for each full node and how many nodes of that type to instantiate."]}),"\n",(0,s.jsxs)(t.p,{children:["There are many other configurations and flags you can use, including metrics and observability tools (e.g., Grafana, Prometheus, etc). For all supported options, see the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package#configuration",children:"configuration"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"step-3-deploy",children:"Step 3: Deploy"}),"\n",(0,s.jsxs)(t.p,{children:["Finally, once you have saved the ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, it is time to deploy the private net:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'kurtosis run github.com/ethpandaops/ethereum-package "$(cat ~/network_params.json)"\n'})}),"\n",(0,s.jsxs)(t.p,{children:["Kurtosis will use the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," environment definition and your custom network configuration (defined in ",(0,s.jsx)(t.code,{children:"network_params.json"}),") to spin up your network. Kurtosis will first spin up an ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"})," (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 and used to start up the private testnet."]}),"\n",(0,s.jsx)(t.p,{children:"Here is a sample output:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{children:"INFO[2023-09-01T16:10:45-04:00] ====================================================\nINFO[2023-09-01T16:10:45-04:00] || Created enclave: timid-knoll ||\nINFO[2023-09-01T16:10:45-04:00] ====================================================\nName: timid-knoll\nUUID: 939dfb5d59b0\nStatus: RUNNING\nCreation Time: Fri, 01 Sep 2023 16:08:57 EDT\n\n========================================= Files Artifacts =========================================\nUUID Name\na876b06035b7 1-lighthouse-nethermind-0-63\n87955ef69845 2-teku-nethermind-64-127\n4f77377da494 3-lodestar-nethermind-128-191\n9734313101e3 cl-genesis-data\n4164ed5c594c el-genesis-data\na49a3d2774b5 genesis-generation-config-cl\n16fcc4f96236 genesis-generation-config-el\n5fc72346f646 geth-prefunded-keys\n96ae153a0b51 prysm-password\n\n========================================== User Services ==========================================\nUUID Name Ports Status\nf369802ad2ae cl-1-lighthouse-nethermind http: 4000/tcp -> http://127.0.0.1:49894 RUNNING\n metrics: 5054/tcp -> http://127.0.0.1:49892\n tcp-discovery: 9000/tcp -> 127.0.0.1:49893\n udp-discovery: 9000/udp -> 127.0.0.1:64949\n5e14eb26ef45 cl-1-lighthouse-nethermind-validator http: 5042/tcp -> 127.0.0.1:49895 RUNNING\n metrics: 5064/tcp -> http://127.0.0.1:49896\nfed533d0e143 cl-2-teku-nethermind http: 4000/tcp -> 127.0.0.1:49899 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49897\n tcp-discovery: 9000/tcp -> 127.0.0.1:49898\n udp-discovery: 9000/udp -> 127.0.0.1:55521\n69cd832de246 cl-3-lodestar-nethermind http: 4000/tcp -> 127.0.0.1:49903 RUNNING\n metrics: 8008/tcp -> 127.0.0.1:49901\n tcp-discovery: 9000/tcp -> 127.0.0.1:49902\n udp-discovery: 9000/udp -> 127.0.0.1:50507\n75e3eec0c7d1 cl-3-lodestar-nethermind-validator metrics: 8008/tcp -> 127.0.0.1:49904 RUNNING\ne10c3f07e0e0 el-1-nethermind-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:49872 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49870\n tcp-discovery: 30303/tcp -> 127.0.0.1:49869\n udp-discovery: 30303/udp -> 127.0.0.1:64508\n ws: 8546/tcp -> 127.0.0.1:49871\nc6a28d3136fe el-2-nethermind-teku engine-rpc: 8551/tcp -> 127.0.0.1:49873 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49875\n tcp-discovery: 30303/tcp -> 127.0.0.1:49874\n udp-discovery: 30303/udp -> 127.0.0.1:52495\n ws: 8546/tcp -> 127.0.0.1:49876\n2fae3b3c41d3 el-3-nethermind-lodestar engine-rpc: 8551/tcp -> 127.0.0.1:49890 RUNNING\n rpc: 8545/tcp -> 127.0.0.1:49888\n tcp-discovery: 30303/tcp -> 127.0.0.1:49891\n udp-discovery: 30303/udp -> 127.0.0.1:62119\n ws: 8546/tcp -> 127.0.0.1:49889\n403cafe8416e prelaunch-data-generator-cl-genesis-data RUNNING\nebea71008cf4 prelaunch-data-generator-el-genesis-data RUNNING\n"})}),"\n",(0,s.jsx)(t.p,{children:"And that is it! You now have a 3-node, private Ethereum devnet with Nethermind/Lodestar, Nethermind/Teku, and Nethermind/Lighthouse execution and consensus client combinations."}),"\n",(0,s.jsxs)(t.p,{children:["Notice how, at the end, Kurtosis will print out the contents of your enclave, which includes both the various ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/files-artifacts",children:"files artifacts"})," and services that form your network. Kurtosis also maps the container ports to ephemeral local ports on your machine."]}),"\n",(0,s.jsxs)(t.p,{children:["Genesis data was generated using this ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-genesis-generator",children:"genesis-generator"})," to bootstrap the execution and consensus 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 ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/concepts-reference/enclaves",children:"enclave"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"Kurtosis packages are modular, reproducible, and will work over Docker or Kubernetes. Read on to learn about additional services and configurations you may want to add to your private network."}),"\n",(0,s.jsx)(t.h2,{id:"step-4-optional-workflows",children:"Step 4: Optional workflows"}),"\n",(0,s.jsx)(t.p,{children:"This section briefly covers some optional configurations for your private devnet that are commonly used for validating and testing node-level behavior."}),"\n",(0,s.jsxs)(t.h3,{id:"simulating-mev-workflows-with-mev-boost",children:["Simulating MEV workflows with ",(0,s.jsx)(t.code,{children:"mev-boost"})]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," can simulate out-of-protocol Proposer Builder Separation (PBS) workflows using Flashbot's ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure. With a single flag, you can configure your network's validators to be instantiated with ",(0,s.jsx)(t.code,{children:"mev-boost"})," and be registered with a relayer to receive payloads from builders."]}),"\n",(0,s.jsxs)(t.p,{children:["To enable this in your ",(0,s.jsx)(t.code,{children:"network_params.json"})," file, set ",(0,s.jsx)(t.code,{children:'"mev_type":'})," to ",(0,s.jsx)(t.code,{children:'"full"'})," or ",(0,s.jsx)(t.code,{children:'"mock"'}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["To learn more about how the ",(0,s.jsx)(t.code,{children:"mev-boost"})," infrastructure works with your private network, check out ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/how-to-full-mev-with-ethereum-package",children:"this guide"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"observability-tools",children:"Observability tools"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ethereum-package"})," comes out of the box with a few observability tools, including:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"A Grafana and Prometheus instance"}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/dapplion/beacon-metrics-gazer",children:"beacon metrics gazer service"})," to collect network-wide participation metrics"]}),"\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.a,{href:"https://github.com/ethDreamer/json_rpc_snoop",children:"JSON-RPC Snooper"})," to log responses & requests between the execution engine API and the consensus client"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["To add your own custom Grafana dashboard template, fork the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," repository and add your configuration ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package/tree/main/static_files/grafana-config/dashboards",children:"here"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"deploying-on-kubernetes",children:"Deploying on Kubernetes"}),"\n",(0,s.jsxs)(t.p,{children:["As mentioned earlier, Kurtosis packages (i.e. environment definitions) are portable and will work the same way over Docker or on Kubernetes. Should you require a larger scale devnet, Kurtosis can deploy any package, including the ",(0,s.jsx)(t.code,{children:"ethereum-package"})," on Kubernetes, see ",(0,s.jsx)(t.a,{href:"https://docs.kurtosis.com/k8s",children:"Running Kurtosis in Kubernetes"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"questions-and-feedback",children:"Questions and feedback"}),"\n",(0,s.jsxs)(t.p,{children:["If you need help with your Nethermind full node in the private devnet, please don't hesitate to contact the Kurtosis team on ",(0,s.jsx)(t.a,{href:"https://github.com/ethpandaops/ethereum-package",children:"GitHub"})," or ",(0,s.jsx)(t.a,{href:"https://discord.gg/jJFG7XBqcY",children:"Discord"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ff5d55e1.9090ce63.js b/assets/js/ff5d55e1.021e216d.js similarity index 99% rename from assets/js/ff5d55e1.9090ce63.js rename to assets/js/ff5d55e1.021e216d.js index 71316e515..52ac15ff3 100644 --- a/assets/js/ff5d55e1.9090ce63.js +++ b/assets/js/ff5d55e1.021e216d.js @@ -1 +1 @@ -"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6340],{4453:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),s=t(8453);const i={title:"JSON-RPC server",sidebar_position:0},r=void 0,c={id:"interacting/json-rpc-server",title:"JSON-RPC server",description:"Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over HTTP, WebSocket, and IPC socket transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the JSON-RPC configuration options.",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-server.md",sourceDirName:"interacting",slug:"/interacting/json-rpc-server",permalink:"/1.28.0/interacting/json-rpc-server",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-server.md",tags:[],version:"1.28.0",lastUpdatedAt:1728683983e3,sidebarPosition:0,frontMatter:{title:"JSON-RPC server",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Private networks",permalink:"/1.28.0/fundamentals/private-networks"},next:{title:"admin",permalink:"/1.28.0/interacting/json-rpc-ns/admin"}},a={},d=[{value:"Transports",id:"transports",level:2},{value:"HTTP",id:"http",level:3},{value:"WebSocket",id:"websocket",level:3},{value:"IPC socket",id:"ipc-socket",level:3},{value:"Engine API",id:"engine-api",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over ",(0,o.jsx)(n.a,{href:"#http",children:"HTTP"}),", ",(0,o.jsx)(n.a,{href:"#websocket",children:"WebSocket"}),", and ",(0,o.jsx)(n.a,{href:"#ipc-socket",children:"IPC socket"})," transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the ",(0,o.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#jsonrpc",children:"JSON-RPC configuration options"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The JSON-RPC API methods are grouped into several categories (namespaces) depending on their purpose. All API method names are composed of the namespace and the actual method name in that namespace. For instance, the ",(0,o.jsx)(n.code,{children:"eth_call"})," method belongs to the ",(0,o.jsx)(n.code,{children:"eth"})," namespace. See the sidebar for all supported namespaces and methods."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["Not all of the JSON-RPC namespaces are enabled by default. Instead, they must be enabled explicitly with the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})," command line option. Otherwise, error code ",(0,o.jsx)(n.code,{children:"-32600"})," is returned. The enabled namespaces can be found in the configuration file specified with the ",(0,o.jsx)(n.code,{children:"--config"})," command line option."]})}),"\n",(0,o.jsx)(n.h2,{id:"transports",children:"Transports"}),"\n",(0,o.jsxs)(n.admonition,{type:"tip",children:[(0,o.jsx)(n.p,{children:"The right choice of transport depends on the specific use case."}),(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"HTTP is a familiar and idempotent transport that closes connections between requests and can, therefore, have lower overall overhead for a relatively low number of requests."}),"\n",(0,o.jsx)(n.li,{children:"WebSocket provides a continuous open channel that enables event subscriptions and streaming and handles large volumes of requests with more negligible per-message overhead."}),"\n",(0,o.jsx)(n.li,{children:"IPC is generally the most secure as it is limited to local interactions and cannot be exposed to external traffic. It can also be used for event subscriptions."}),"\n"]})]}),"\n",(0,o.jsx)(n.h3,{id:"http",children:"HTTP"}),"\n",(0,o.jsxs)(n.p,{children:["HTTP is the most widely used transport for Nethermind. To enable the HTTP server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Enabled true"})," command line option. By default, Nethermind uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8545"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Host"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.Port"})," command line options, respectively."]}),"\n",(0,o.jsx)(n.h3,{id:"websocket",children:"WebSocket"}),"\n",(0,o.jsxs)(n.p,{children:["The configuration of the WebSocket server follows the same pattern as the HTTP server. The WebSocket server is enabled automatically when the HTTP server is enabled and uses the same host and port. To disable the WebSocket server, use the ",(0,o.jsx)(n.code,{children:"--Init.WebSocketsEnabled false"})," command line option. To use a different a port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort"})," command line option."]}),"\n",(0,o.jsx)(n.h3,{id:"ipc-socket",children:"IPC socket"}),"\n",(0,o.jsxs)(n.p,{children:["Nethermind uses IPC based on Unix domain socket. To enable the IPC server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath path/to/ipc"})," command line option. If the ",(0,o.jsx)(n.code,{children:"path/to/ipc"})," doesn't exist, Nethermind creates one."]}),"\n",(0,o.jsx)(n.h2,{id:"engine-api",children:"Engine API"}),"\n",(0,o.jsx)(n.p,{children:"The Engine API is a set of RPC methods that enable communication between an execution and consensus client. The clients call these methods automatically when they need to exchange information. Engine API is enabled automatically by default and is not designed to be exposed to the user."}),"\n",(0,o.jsxs)(n.p,{children:["By default, the Engine API uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8551"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," command line options, respectively. For example, this can be useful when execution and consensus clients are on different machines."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["When the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," option is specified, the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," option must be specified as well."]})}),"\n",(0,o.jsxs)(n.p,{children:["The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at ",(0,o.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory. To use a different path, specify the ",(0,o.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option."]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var o=t(6540);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[6340],{4453:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=t(4848),s=t(8453);const i={title:"JSON-RPC server",sidebar_position:0},r=void 0,c={id:"interacting/json-rpc-server",title:"JSON-RPC server",description:"Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over HTTP, WebSocket, and IPC socket transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the JSON-RPC configuration options.",source:"@site/versioned_docs/version-1.28.0/interacting/json-rpc-server.md",sourceDirName:"interacting",slug:"/interacting/json-rpc-server",permalink:"/1.28.0/interacting/json-rpc-server",draft:!1,unlisted:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/versioned_docs/version-1.28.0/interacting/json-rpc-server.md",tags:[],version:"1.28.0",lastUpdatedAt:1728684487e3,sidebarPosition:0,frontMatter:{title:"JSON-RPC server",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Private networks",permalink:"/1.28.0/fundamentals/private-networks"},next:{title:"admin",permalink:"/1.28.0/interacting/json-rpc-ns/admin"}},a={},d=[{value:"Transports",id:"transports",level:2},{value:"HTTP",id:"http",level:3},{value:"WebSocket",id:"websocket",level:3},{value:"IPC socket",id:"ipc-socket",level:3},{value:"Engine API",id:"engine-api",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Interacting with Nethermind requires using the JSON-RPC 2.0 protocol. Nethermind provides JSON-RPC over ",(0,o.jsx)(n.a,{href:"#http",children:"HTTP"}),", ",(0,o.jsx)(n.a,{href:"#websocket",children:"WebSocket"}),", and ",(0,o.jsx)(n.a,{href:"#ipc-socket",children:"IPC socket"})," transports. Each transport must be enabled with the respective configuration option, as shown below. For more details, see the ",(0,o.jsx)(n.a,{href:"/1.28.0/fundamentals/configuration#jsonrpc",children:"JSON-RPC configuration options"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The JSON-RPC API methods are grouped into several categories (namespaces) depending on their purpose. All API method names are composed of the namespace and the actual method name in that namespace. For instance, the ",(0,o.jsx)(n.code,{children:"eth_call"})," method belongs to the ",(0,o.jsx)(n.code,{children:"eth"})," namespace. See the sidebar for all supported namespaces and methods."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["Not all of the JSON-RPC namespaces are enabled by default. Instead, they must be enabled explicitly with the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnabledModules"})," command line option. Otherwise, error code ",(0,o.jsx)(n.code,{children:"-32600"})," is returned. The enabled namespaces can be found in the configuration file specified with the ",(0,o.jsx)(n.code,{children:"--config"})," command line option."]})}),"\n",(0,o.jsx)(n.h2,{id:"transports",children:"Transports"}),"\n",(0,o.jsxs)(n.admonition,{type:"tip",children:[(0,o.jsx)(n.p,{children:"The right choice of transport depends on the specific use case."}),(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"HTTP is a familiar and idempotent transport that closes connections between requests and can, therefore, have lower overall overhead for a relatively low number of requests."}),"\n",(0,o.jsx)(n.li,{children:"WebSocket provides a continuous open channel that enables event subscriptions and streaming and handles large volumes of requests with more negligible per-message overhead."}),"\n",(0,o.jsx)(n.li,{children:"IPC is generally the most secure as it is limited to local interactions and cannot be exposed to external traffic. It can also be used for event subscriptions."}),"\n"]})]}),"\n",(0,o.jsx)(n.h3,{id:"http",children:"HTTP"}),"\n",(0,o.jsxs)(n.p,{children:["HTTP is the most widely used transport for Nethermind. To enable the HTTP server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Enabled true"})," command line option. By default, Nethermind uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8545"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.Host"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.Port"})," command line options, respectively."]}),"\n",(0,o.jsx)(n.h3,{id:"websocket",children:"WebSocket"}),"\n",(0,o.jsxs)(n.p,{children:["The configuration of the WebSocket server follows the same pattern as the HTTP server. The WebSocket server is enabled automatically when the HTTP server is enabled and uses the same host and port. To disable the WebSocket server, use the ",(0,o.jsx)(n.code,{children:"--Init.WebSocketsEnabled false"})," command line option. To use a different a port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.WebSocketsPort"})," command line option."]}),"\n",(0,o.jsx)(n.h3,{id:"ipc-socket",children:"IPC socket"}),"\n",(0,o.jsxs)(n.p,{children:["Nethermind uses IPC based on Unix domain socket. To enable the IPC server, use the ",(0,o.jsx)(n.code,{children:"--JsonRpc.IpcUnixDomainSocketPath path/to/ipc"})," command line option. If the ",(0,o.jsx)(n.code,{children:"path/to/ipc"})," doesn't exist, Nethermind creates one."]}),"\n",(0,o.jsx)(n.h2,{id:"engine-api",children:"Engine API"}),"\n",(0,o.jsx)(n.p,{children:"The Engine API is a set of RPC methods that enable communication between an execution and consensus client. The clients call these methods automatically when they need to exchange information. Engine API is enabled automatically by default and is not designed to be exposed to the user."}),"\n",(0,o.jsxs)(n.p,{children:["By default, the Engine API uses local loopback (",(0,o.jsx)(n.code,{children:"127.0.0.1"})," or ",(0,o.jsx)(n.code,{children:"localhost"}),") and ",(0,o.jsx)(n.code,{children:"8551"})," port. To use a different host or port, set the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," and ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," command line options, respectively. For example, this can be useful when execution and consensus clients are on different machines."]}),"\n",(0,o.jsx)(n.admonition,{title:"Important",type:"warning",children:(0,o.jsxs)(n.p,{children:["When the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EngineHost"})," option is specified, the ",(0,o.jsx)(n.code,{children:"--JsonRpc.EnginePort"})," option must be specified as well."]})}),"\n",(0,o.jsxs)(n.p,{children:["The Engine API uses JWT authentication and requires a JWT secret. By default, Nethermind creates one at ",(0,o.jsx)(n.code,{children:"keystore/jwt-secret"})," path in its root directory. To use a different path, specify the ",(0,o.jsx)(n.code,{children:"--JsonRpc.JwtSecretFile path/to/jwt.hex"})," command line option."]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var o=t(6540);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.cae8e54e.js b/assets/js/main.feef543d.js similarity index 95% rename from assets/js/main.cae8e54e.js rename to assets/js/main.feef543d.js index 7df6ff103..a30de3156 100644 --- a/assets/js/main.cae8e54e.js +++ b/assets/js/main.feef543d.js @@ -1,2 +1,2 @@ -/*! For license information please see main.cae8e54e.js.LICENSE.txt */ -(self.webpackChunknethermind_docs=self.webpackChunknethermind_docs||[]).push([[8792],{3219:(e,t,n)=>{"use strict";n.d(t,{Bc:()=>g,E8:()=>qn,a1:()=>Un});var r=n(6540);n(961);function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,s=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{i||null==n.return||n.return()}finally{if(s)throw a}}return o}}(e,t)||d(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e){return function(e){if(Array.isArray(e))return p(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||d(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){if(e){if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function R(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function L(e){for(var t=1;t=3||2===n&&r>=4||1===n&&r>=10);function o(t,n,r){if(a&&void 0!==r){var o=r[0].__autocomplete_algoliaCredentials,i={"X-Algolia-Application-Id":o.appId,"X-Algolia-API-Key":o.apiKey};e.apply(void 0,[t].concat(T(n),[{headers:i}]))}else e.apply(void 0,[t].concat(T(n)))}return{init:function(t,n){e("init",{appId:t,apiKey:n})},setUserToken:function(t){e("setUserToken",t)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&o("clickedObjectIDsAfterSearch",M(t),t[0].items)},clickedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&o("clickedObjectIDs",M(t),t[0].items)},clickedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["clickedFilters"].concat(n))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&o("convertedObjectIDsAfterSearch",M(t),t[0].items)},convertedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&o("convertedObjectIDs",M(t),t[0].items)},convertedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["convertedFilters"].concat(n))},viewedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&t.reduce((function(e,t){var n=t.items,r=N(t,P);return[].concat(T(e),T(function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,n=[],r=0;r0&&e.apply(void 0,["viewedFilters"].concat(n))}}}function B(e){var t=e.items.reduce((function(e,t){var n;return e[t.__autocomplete_indexName]=(null!==(n=e[t.__autocomplete_indexName])&&void 0!==n?n:[]).concat(t),e}),{});return Object.keys(t).map((function(e){return{index:e,items:t[e],algoliaSource:["autocomplete"]}}))}function z(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}function $(e){return $="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$(e)}function U(e){return function(e){if(Array.isArray(e))return q(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return q(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?q(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&K({onItemsChange:r,items:n,insights:s,state:t}))}}),0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(e){var t=e.setContext,n=e.onSelect,r=e.onActive;i("addAlgoliaAgent","insights-plugin"),t({algoliaInsightsPlugin:{__algoliaSearchParameters:{clickAnalytics:!0},insights:s}}),n((function(e){var t=e.item,n=e.state,r=e.event;z(t)&&a({state:n,event:r,insights:s,item:t,insightsEvents:[V({eventName:"Item Selected"},j({item:t,items:l.current}))]})})),r((function(e){var t=e.item,n=e.state,r=e.event;z(t)&&o({state:n,event:r,insights:s,item:t,insightsEvents:[V({eventName:"Item Active"},j({item:t,items:l.current}))]})}))},onStateChange:function(e){var t=e.state;c({state:t})},__autocomplete_pluginOptions:e}}function Q(e,t){var n=t;return{then:function(t,r){return Q(e.then(X(t,n,e),X(r,n,e)),n)},catch:function(t){return Q(e.catch(X(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),Q(e.finally(X(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function Z(e){return Q(e,{isCanceled:!1,onCancelList:[]})}function X(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function J(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var a=(null===t?-1:t)+e;return a<=-1||a>=n?null===r?null:0:a}function ee(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function te(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:"autocomplete-".concat(S++),plugins:a,initialState:ge({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),a.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),a.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),a.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(function(e){return function(e){if(Array.isArray(e))return me(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return me(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?me(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(a.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:k,onResolve:k};Object.keys(t).forEach((function(e){t[e].__default=!0}));var r=te(te({},t),e);return Promise.resolve(r)})))}))}(e,n)}))).then((function(e){return y(e)})).then((function(e){return e.map((function(e){return ge(ge({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))},onResolve:function(n){e.onResolve(n),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:ge({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}function ye(e){return ye="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ye(e)}function Se(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function we(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,Ie);Be&&a.environment.clearTimeout(Be);var c=l.setCollections,u=l.setIsOpen,d=l.setQuery,p=l.setActiveItemId,f=l.setStatus;if(d(o),p(a.defaultActiveItemId),!o&&!1===a.openOnFocus){var m,h=s.getState().collections.map((function(e){return Re(Re({},e),{},{items:[]})}));f("idle"),c(h),u(null!==(m=r.isOpen)&&void 0!==m?m:a.shouldPanelOpen({state:s.getState()}));var g=Z(ze(h).then((function(){return Promise.resolve()})));return s.pendingRequests.add(g)}f("loading"),Be=a.environment.setTimeout((function(){f("stalled")}),a.stallThreshold);var b=Z(ze(a.getSources(Re({query:o,refresh:i,state:s.getState()},l)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(Re({query:o,refresh:i,state:s.getState()},l))).then((function(t){return function(e,t,n){if(a=e,Boolean(null==a?void 0:a.execute)){var r="algolia"===e.requesterId?Object.assign.apply(Object,[{}].concat(Oe(Object.keys(n.context).map((function(e){var t;return null===(t=n.context[e])||void 0===t?void 0:t.__algoliaSearchParameters}))))):{};return Ee(Ee({},e),{},{requests:e.queries.map((function(n){return{query:"algolia"===e.requesterId?Ee(Ee({},n),{},{params:Ee(Ee({},r),n.params)}):n,sourceId:t,transformResponse:e.transformResponse}}))})}var a;return{items:e,sourceId:t}}(t,e.sourceId,s.getState())}))}))).then(Ae).then((function(t){return function(e,t,n){return t.map((function(t){var r,a=e.filter((function(e){return e.sourceId===t.sourceId})),o=a.map((function(e){return e.items})),i=a[0].transformResponse,s=i?i({results:r=o,hits:r.map((function(e){return e.hits})).filter(Boolean),facetHits:r.map((function(e){var t;return null===(t=e.facetHits)||void 0===t?void 0:t.map((function(e){return{label:e.value,count:e.count,_highlightResult:{label:{value:e.highlighted}}}}))})).filter(Boolean)}):o;return t.onResolve({source:t,results:o,items:s,state:n.getState()}),s.every(Boolean),'The `getItems` function from source "'.concat(t.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"),{source:t,items:s}}))}(t,e,s)})).then((function(e){return function(e){var t=e.props,n=e.state,r=e.collections.reduce((function(e,t){return we(we({},e),{},xe({},t.source.sourceId,we(we({},t.source),{},{getItems:function(){return y(t.items)}})))}),{}),a=t.plugins.reduce((function(e,t){return t.reshape?t.reshape(e):e}),{sourcesBySourceId:r,state:n}).sourcesBySourceId;return y(t.reshape({sourcesBySourceId:a,sources:Object.values(a),state:n})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:a,state:s.getState()})}))})))).then((function(e){var n;f("idle"),c(e);var d=a.shouldPanelOpen({state:s.getState()});u(null!==(n=r.isOpen)&&void 0!==n?n:a.openOnFocus&&!o&&d||d);var p=ae(s.getState());if(null!==s.getState().activeItemId&&p){var m=p.item,h=p.itemInputValue,g=p.itemUrl,b=p.source;b.onActive(Re({event:t,item:m,itemInputValue:h,itemUrl:g,refresh:i,source:b,state:s.getState()},l))}})).finally((function(){f("idle"),Be&&a.environment.clearTimeout(Be)}));return s.pendingRequests.add(b)}function Ue(e){return Ue="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ue(e)}var qe=["event","props","refresh","store"];function He(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ve(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function ot(e){var t=e.props,n=e.refresh,r=e.store,a=at(e,Ke),o=function(e,t){return void 0!==t?"".concat(e,"-").concat(t):e};return{getEnvironmentProps:function(e){var n=e.inputElement,a=e.formElement,o=e.panelElement;function i(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[a,o].some((function(t){return(n=t)===(r=e.target)||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return nt({onTouchStart:i,onMouseDown:i,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},at(e,Ye))},getRootProps:function(e){return nt({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){return e.inputElement,nt({action:"",noValidate:!0,role:"search",onSubmit:function(o){var i;o.preventDefault(),t.onSubmit(nt({event:o,refresh:n,state:r.getState()},a)),r.dispatch("submit",null),null===(i=e.inputElement)||void 0===i||i.blur()},onReset:function(o){var i;o.preventDefault(),t.onReset(nt({event:o,refresh:n,state:r.getState()},a)),r.dispatch("reset",null),null===(i=e.inputElement)||void 0===i||i.focus()}},at(e,Qe))},getLabelProps:function(e){var n=e||{},r=n.sourceIndex,a=at(n,Xe);return nt({htmlFor:"".concat(o(t.id,r),"-input"),id:"".concat(o(t.id,r),"-label")},a)},getInputProps:function(e){var o;function i(e){(t.openOnFocus||Boolean(r.getState().query))&&$e(nt({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},a)),r.dispatch("focus",null)}var s=e||{},l=(s.inputElement,s.maxLength),c=void 0===l?512:l,u=at(s,Ze),d=ae(r.getState()),p=function(e){return Boolean(e&&e.match(oe))}((null===(o=t.environment.navigator)||void 0===o?void 0:o.userAgent)||""),f=null!=d&&d.itemUrl&&!p?"go":"search";return nt({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:f,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:c,type:"search",onChange:function(e){$e(nt({event:e,props:t,query:e.currentTarget.value.slice(0,c),refresh:n,store:r},a))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,a=e.store,o=function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,qe);if("ArrowUp"===t.key||"ArrowDown"===t.key){var i=function(){var e=n.environment.document.getElementById("".concat(n.id,"-item-").concat(a.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},s=function(){var e=ae(a.getState());if(null!==a.getState().activeItemId&&e){var n=e.item,i=e.itemInputValue,s=e.itemUrl,l=e.source;l.onActive(Ve({event:t,item:n,itemInputValue:i,itemUrl:s,refresh:r,source:l,state:a.getState()},o))}};t.preventDefault(),!1===a.getState().isOpen&&(n.openOnFocus||Boolean(a.getState().query))?$e(Ve({event:t,props:n,query:a.getState().query,refresh:r,store:a},o)).then((function(){a.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),s(),setTimeout(i,0)})):(a.dispatch(t.key,{}),s(),i())}else if("Escape"===t.key)t.preventDefault(),a.dispatch(t.key,null),a.pendingRequests.cancelAll();else if("Tab"===t.key)a.dispatch("blur",null),a.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===a.getState().activeItemId||a.getState().collections.every((function(e){return 0===e.items.length})))return void(n.debug||a.pendingRequests.cancelAll());t.preventDefault();var l=ae(a.getState()),c=l.item,u=l.itemInputValue,d=l.itemUrl,p=l.source;if(t.metaKey||t.ctrlKey)void 0!==d&&(p.onSelect(Ve({event:t,item:c,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:a.getState()},o)),n.navigator.navigateNewTab({itemUrl:d,item:c,state:a.getState()}));else if(t.shiftKey)void 0!==d&&(p.onSelect(Ve({event:t,item:c,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:a.getState()},o)),n.navigator.navigateNewWindow({itemUrl:d,item:c,state:a.getState()}));else if(t.altKey);else{if(void 0!==d)return p.onSelect(Ve({event:t,item:c,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:a.getState()},o)),void n.navigator.navigate({itemUrl:d,item:c,state:a.getState()});$e(Ve({event:t,nextState:{isOpen:!1},props:n,query:u,refresh:r,store:a},o)).then((function(){p.onSelect(Ve({event:t,item:c,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:a.getState()},o))}))}}}(nt({event:e,props:t,refresh:n,store:r},a))},onFocus:i,onBlur:k,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||i(n)}},u)},getPanelProps:function(e){return nt({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){var n=e||{},r=n.sourceIndex,a=at(n,Je);return nt({role:"listbox","aria-labelledby":"".concat(o(t.id,r),"-label"),id:"".concat(o(t.id,r),"-list")},a)},getItemProps:function(e){var i=e.item,s=e.source,l=e.sourceIndex,c=at(e,et);return nt({id:"".concat(o(t.id,l),"-item-").concat(i.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===i.__autocomplete_id,onMouseMove:function(e){if(i.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",i.__autocomplete_id);var t=ae(r.getState());if(null!==r.getState().activeItemId&&t){var o=t.item,s=t.itemInputValue,l=t.itemUrl,c=t.source;c.onActive(nt({event:e,item:o,itemInputValue:s,itemUrl:l,refresh:n,source:c,state:r.getState()},a))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var o=s.getItemInputValue({item:i,state:r.getState()}),l=s.getItemUrl({item:i,state:r.getState()});(l?Promise.resolve():$e(nt({event:e,nextState:{isOpen:!1},props:t,query:o,refresh:n,store:r},a))).then((function(){s.onSelect(nt({event:e,item:i,itemInputValue:o,itemUrl:l,refresh:n,source:s,state:r.getState()},a))}))}},c)}}}function it(e){return it="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},it(e)}function st(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function lt(e){for(var t=1;t0&&r.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},r.createElement("p",{className:"DocSearch-Help"},c,":"),r.createElement("ul",null,h.slice(0,3).reduce((function(e,t){return[].concat(u(e),[r.createElement("li",{key:t},r.createElement("button",{className:"DocSearch-Prefill",key:t,type:"button",onClick:function(){a.setQuery(t.toLowerCase()+" "),a.refresh(),a.inputRef.current.focus()}},t))])}),[]))),a.getMissingResultsUrl&&r.createElement("p",{className:"DocSearch-Help"},"".concat(p," "),r.createElement("a",{href:a.getMissingResultsUrl({query:a.state.query}),target:"_blank",rel:"noopener noreferrer"},m)))}var zt=["hit","attribute","tagName"];function $t(e,t){return t.split(".").reduce((function(e,t){return null!=e&&e[t]?e[t]:null}),e)}function Ut(e){var t=e.hit,n=e.attribute,a=e.tagName,i=void 0===a?"span":a,s=l(e,zt);return(0,r.createElement)(i,o(o({},s),{},{dangerouslySetInnerHTML:{__html:$t(t,"_snippetResult.".concat(n,".value"))||$t(t,n)}}))}function qt(e){return e.collection&&0!==e.collection.items.length?r.createElement("section",{className:"DocSearch-Hits"},r.createElement("div",{className:"DocSearch-Hit-source"},e.title),r.createElement("ul",e.getListProps(),e.collection.items.map((function(t,n){return r.createElement(Ht,s({key:[e.title,t.objectID].join(":"),item:t,index:n},e))})))):null}function Ht(e){var t=e.item,n=e.index,a=e.renderIcon,o=e.renderAction,i=e.getItemProps,l=e.onItemClick,u=e.collection,d=e.hitComponent,p=c(r.useState(!1),2),f=p[0],m=p[1],h=c(r.useState(!1),2),g=h[0],b=h[1],v=r.useRef(null),y=d;return r.createElement("li",s({className:["DocSearch-Hit",t.__docsearch_parent&&"DocSearch-Hit--Child",f&&"DocSearch-Hit--deleting",g&&"DocSearch-Hit--favoriting"].filter(Boolean).join(" "),onTransitionEnd:function(){v.current&&v.current()}},i({item:t,source:u.source,onClick:function(e){l(t,e)}})),r.createElement(y,{hit:t},r.createElement("div",{className:"DocSearch-Hit-Container"},a({item:t,index:n}),t.hierarchy[t.type]&&"lvl1"===t.type&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement(Ut,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.lvl1"}),t.content&&r.createElement(Ut,{className:"DocSearch-Hit-path",hit:t,attribute:"content"})),t.hierarchy[t.type]&&("lvl2"===t.type||"lvl3"===t.type||"lvl4"===t.type||"lvl5"===t.type||"lvl6"===t.type)&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement(Ut,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.".concat(t.type)}),r.createElement(Ut,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),"content"===t.type&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement(Ut,{className:"DocSearch-Hit-title",hit:t,attribute:"content"}),r.createElement(Ut,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),o({item:t,runDeleteTransition:function(e){m(!0),v.current=e},runFavoriteTransition:function(e){b(!0),v.current=e}}))))}function Vt(e,t,n){return e.reduce((function(e,r){var a=t(r);return e.hasOwnProperty(a)||(e[a]=[]),e[a].length<(n||5)&&e[a].push(r),e}),{})}function Wt(e){return e}function Gt(e){return 1===e.button||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}function Kt(){}var Yt=/(|<\/mark>)/g,Qt=RegExp(Yt.source);function Zt(e){var t,n,r=e;if(!r.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var a=((r.__docsearch_parent?null===(t=r.__docsearch_parent)||void 0===t||null===(t=t._highlightResult)||void 0===t||null===(t=t.hierarchy)||void 0===t?void 0:t.lvl0:null===(n=e._highlightResult)||void 0===n||null===(n=n.hierarchy)||void 0===n?void 0:n.lvl0)||{}).value;return a&&Qt.test(a)?a.replace(Yt,""):a}function Xt(e){return r.createElement("div",{className:"DocSearch-Dropdown-Container"},e.state.collections.map((function(t){if(0===t.items.length)return null;var n=Zt(t.items[0]);return r.createElement(qt,s({},e,{key:t.source.sourceId,title:n,collection:t,renderIcon:function(e){var n,a=e.item,o=e.index;return r.createElement(r.Fragment,null,a.__docsearch_parent&&r.createElement("svg",{className:"DocSearch-Hit-Tree",viewBox:"0 0 24 54"},r.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},a.__docsearch_parent!==(null===(n=t.items[o+1])||void 0===n?void 0:n.__docsearch_parent)?r.createElement("path",{d:"M8 6v21M20 27H8.3"}):r.createElement("path",{d:"M8 6v42M20 27H8.3"}))),r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(Tt,{type:a.type})))},renderAction:function(){return r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement(Pt,null))}}))})),e.resultsFooterComponent&&r.createElement("section",{className:"DocSearch-HitsFooter"},r.createElement(e.resultsFooterComponent,{state:e.state})))}var Jt=["translations"];function en(e){var t=e.translations,n=void 0===t?{}:t,a=l(e,Jt),o=n.recentSearchesTitle,i=void 0===o?"Recent":o,c=n.noRecentSearchesText,u=void 0===c?"No recent searches":c,d=n.saveRecentSearchButtonTitle,p=void 0===d?"Save this search":d,f=n.removeRecentSearchButtonTitle,m=void 0===f?"Remove this search from history":f,h=n.favoriteSearchesTitle,g=void 0===h?"Favorite":h,b=n.removeFavoriteSearchButtonTitle,v=void 0===b?"Remove this search from favorites":b;return"idle"===a.state.status&&!1===a.hasCollections?a.disableUserPersonalization?null:r.createElement("div",{className:"DocSearch-StartScreen"},r.createElement("p",{className:"DocSearch-Help"},u)):!1===a.hasCollections?null:r.createElement("div",{className:"DocSearch-Dropdown-Container"},r.createElement(qt,s({},a,{title:i,collection:a.state.collections[0],renderIcon:function(){return r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(Ot,null))},renderAction:function(e){var t=e.item,n=e.runFavoriteTransition,o=e.runDeleteTransition;return r.createElement(r.Fragment,null,r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:p,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),n((function(){a.favoriteSearches.add(t),a.recentSearches.remove(t),a.refresh()}))}},r.createElement(Rt,null))),r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:m,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),o((function(){a.recentSearches.remove(t),a.refresh()}))}},r.createElement(Ct,null))))}})),r.createElement(qt,s({},a,{title:g,collection:a.state.collections[1],renderIcon:function(){return r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(Rt,null))},renderAction:function(e){var t=e.item,n=e.runDeleteTransition;return r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:v,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),n((function(){a.favoriteSearches.remove(t),a.refresh()}))}},r.createElement(Ct,null)))}})))}var tn=["translations"],nn=r.memo((function(e){var t=e.translations,n=void 0===t?{}:t,a=l(e,tn);if("error"===a.state.status)return r.createElement(Mt,{translations:null==n?void 0:n.errorScreen});var o=a.state.collections.some((function(e){return e.items.length>0}));return a.state.query?!1===o?r.createElement(Bt,s({},a,{translations:null==n?void 0:n.noResultsScreen})):r.createElement(Xt,a):r.createElement(en,s({},a,{hasCollections:o,translations:null==n?void 0:n.startScreen}))}),(function(e,t){return"loading"===t.state.status||"stalled"===t.state.status})),rn=["translations"];function an(e){var t=e.translations,n=void 0===t?{}:t,a=l(e,rn),o=n.resetButtonTitle,i=void 0===o?"Clear the query":o,c=n.resetButtonAriaLabel,u=void 0===c?"Clear the query":c,d=n.cancelButtonText,p=void 0===d?"Cancel":d,f=n.cancelButtonAriaLabel,h=void 0===f?"Cancel":f,g=n.searchInputLabel,b=void 0===g?"Search":g,v=a.getFormProps({inputElement:a.inputRef.current}).onReset;return r.useEffect((function(){a.autoFocus&&a.inputRef.current&&a.inputRef.current.focus()}),[a.autoFocus,a.inputRef]),r.useEffect((function(){a.isFromSelection&&a.inputRef.current&&a.inputRef.current.select()}),[a.isFromSelection,a.inputRef]),r.createElement(r.Fragment,null,r.createElement("form",{className:"DocSearch-Form",onSubmit:function(e){e.preventDefault()},onReset:v},r.createElement("label",s({className:"DocSearch-MagnifierLabel"},a.getLabelProps()),r.createElement(m,null),r.createElement("span",{className:"DocSearch-VisuallyHiddenForAccessibility"},b)),r.createElement("div",{className:"DocSearch-LoadingIndicator"},r.createElement(jt,null)),r.createElement("input",s({className:"DocSearch-Input",ref:a.inputRef},a.getInputProps({inputElement:a.inputRef.current,autoFocus:a.autoFocus,maxLength:64}))),r.createElement("button",{type:"reset",title:i,className:"DocSearch-Reset","aria-label":u,hidden:!a.state.query},r.createElement(Ct,null))),r.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":h,onClick:a.onClose},p))}var on=["_highlightResult","_snippetResult"];function sn(e){var t=e.key,n=e.limit,r=void 0===n?5:n,a=function(e){return!1===function(){var e="__TEST_KEY__";try{return localStorage.setItem(e,""),localStorage.removeItem(e),!0}catch(e){return!1}}()?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}(t),o=a.getItem().slice(0,r);return{add:function(e){var t=e,n=(t._highlightResult,t._snippetResult,l(t,on)),i=o.findIndex((function(e){return e.objectID===n.objectID}));i>-1&&o.splice(i,1),o.unshift(n),o=o.slice(0,r),a.setItem(o)},remove:function(e){o=o.filter((function(t){return t.objectID!==e.objectID})),a.setItem(o)},getAll:function(){return o}}}function ln(e){const t=`algoliasearch-client-js-${e.key}`;let n;const r=()=>(void 0===n&&(n=e.localStorage||window.localStorage),n),a=()=>JSON.parse(r().getItem(t)||"{}"),o=e=>{r().setItem(t,JSON.stringify(e))};return{get:(t,n,r={miss:()=>Promise.resolve()})=>Promise.resolve().then((()=>{(()=>{const t=e.timeToLive?1e3*e.timeToLive:null,n=a(),r=Object.fromEntries(Object.entries(n).filter((([,e])=>void 0!==e.timestamp)));if(o(r),!t)return;const i=Object.fromEntries(Object.entries(r).filter((([,e])=>{const n=(new Date).getTime();return!(e.timestamp+tPromise.all([e?e.value:n(),void 0!==e]))).then((([e,t])=>Promise.all([e,t||r.miss(e)]))).then((([e])=>e)),set:(e,n)=>Promise.resolve().then((()=>{const o=a();return o[JSON.stringify(e)]={timestamp:(new Date).getTime(),value:n},r().setItem(t,JSON.stringify(o)),n})),delete:e=>Promise.resolve().then((()=>{const n=a();delete n[JSON.stringify(e)],r().setItem(t,JSON.stringify(n))})),clear:()=>Promise.resolve().then((()=>{r().removeItem(t)}))}}function cn(e){const t=[...e.caches],n=t.shift();return void 0===n?{get:(e,t,n={miss:()=>Promise.resolve()})=>t().then((e=>Promise.all([e,n.miss(e)]))).then((([e])=>e)),set:(e,t)=>Promise.resolve(t),delete:e=>Promise.resolve(),clear:()=>Promise.resolve()}:{get:(e,r,a={miss:()=>Promise.resolve()})=>n.get(e,r,a).catch((()=>cn({caches:t}).get(e,r,a))),set:(e,r)=>n.set(e,r).catch((()=>cn({caches:t}).set(e,r))),delete:e=>n.delete(e).catch((()=>cn({caches:t}).delete(e))),clear:()=>n.clear().catch((()=>cn({caches:t}).clear()))}}function un(e={serializable:!0}){let t={};return{get(n,r,a={miss:()=>Promise.resolve()}){const o=JSON.stringify(n);if(o in t)return Promise.resolve(e.serializable?JSON.parse(t[o]):t[o]);const i=r(),s=a&&a.miss||(()=>Promise.resolve());return i.then((e=>s(e))).then((()=>i))},set:(n,r)=>(t[JSON.stringify(n)]=e.serializable?JSON.stringify(r):r,Promise.resolve(r)),delete:e=>(delete t[JSON.stringify(e)],Promise.resolve()),clear:()=>(t={},Promise.resolve())}}function dn(e){let t=e.length-1;for(;t>0;t--){const n=Math.floor(Math.random()*(t+1)),r=e[t];e[t]=e[n],e[n]=r}return e}function pn(e,t){return t?(Object.keys(t).forEach((n=>{e[n]=t[n](e)})),e):e}function fn(e,...t){let n=0;return e.replace(/%s/g,(()=>encodeURIComponent(t[n++])))}const mn={WithinQueryParameters:0,WithinHeaders:1};function hn(e,t){const n=e||{},r=n.data||{};return Object.keys(n).forEach((e=>{-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(r[e]=n[e])})),{data:Object.entries(r).length>0?r:void 0,timeout:n.timeout||t,headers:n.headers||{},queryParameters:n.queryParameters||{},cacheable:n.cacheable}}const gn={Read:1,Write:2,Any:3},bn=1,vn=3;function yn(e,t=bn){return{...e,status:t,lastUpdate:Date.now()}}function Sn(e){return"string"==typeof e?{protocol:"https",url:e,accept:gn.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||gn.Any}}const wn="GET",xn="POST";function _n(e,t,n,r){const a=[],o=function(e,t){if(e.method===wn||void 0===e.data&&void 0===t.data)return;const n=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(n)}(n,r),i=function(e,t){const n={...e.headers,...t.headers},r={};return Object.keys(n).forEach((e=>{const t=n[e];r[e.toLowerCase()]=t})),r}(e,r),s=n.method,l=n.method!==wn?{}:{...n.data,...r.data},c={"x-algolia-agent":e.userAgent.value,...e.queryParameters,...l,...r.queryParameters};let u=0;const d=(t,l)=>{const p=t.pop();if(void 0===p)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:On(a)};const f={data:o,headers:i,method:s,url:En(p,n.path,c),connectTimeout:l(u,e.timeouts.connect),responseTimeout:l(u,r.timeout)},m=e=>{const n={request:f,response:e,host:p,triesLeft:t.length};return a.push(n),n},h={onSuccess:e=>function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e),onRetry(n){const r=m(n);return n.isTimedOut&&u++,Promise.all([e.logger.info("Retryable failure",Cn(r)),e.hostsCache.set(p,yn(p,n.isTimedOut?vn:2))]).then((()=>d(t,l)))},onFail(e){throw m(e),function({content:e,status:t},n){let r=e;try{r=JSON.parse(e).message}catch(e){}return function(e,t,n){return{name:"ApiError",message:e,status:t,transporterStackTrace:n}}(r,t,n)}(e,On(a))}};return e.requester.send(f).then((e=>((e,t)=>(e=>{const t=e.status;return e.isTimedOut||(({isTimedOut:e,status:t})=>!e&&!~~t)(e)||2!=~~(t/100)&&4!=~~(t/100)})(e)?t.onRetry(e):(({status:e})=>2==~~(e/100))(e)?t.onSuccess(e):t.onFail(e))(e,h)))};return function(e,t){return Promise.all(t.map((t=>e.get(t,(()=>Promise.resolve(yn(t))))))).then((e=>{const n=e.filter((e=>function(e){return e.status===bn||Date.now()-e.lastUpdate>12e4}(e))),r=e.filter((e=>function(e){return e.status===vn&&Date.now()-e.lastUpdate<=12e4}(e))),a=[...n,...r];return{getTimeout:(e,t)=>(0===r.length&&0===e?1:r.length+3+e)*t,statelessHosts:a.length>0?a.map((e=>Sn(e))):t}}))}(e.hostsCache,t).then((e=>d([...e.statelessHosts].reverse(),e.getTimeout)))}function kn(e){const t={value:`Algolia for JavaScript (${e})`,add(e){const n=`; ${e.segment}${void 0!==e.version?` (${e.version})`:""}`;return-1===t.value.indexOf(n)&&(t.value=`${t.value}${n}`),t}};return t}function En(e,t,n){const r=jn(n);let a=`${e.protocol}://${e.url}/${"/"===t.charAt(0)?t.substr(1):t}`;return r.length&&(a+=`?${r}`),a}function jn(e){return Object.keys(e).map((t=>{return fn("%s=%s",t,(n=e[t],"[object Object]"===Object.prototype.toString.call(n)||"[object Array]"===Object.prototype.toString.call(n)?JSON.stringify(e[t]):e[t]));var n})).join("&")}function On(e){return e.map((e=>Cn(e)))}function Cn(e){const t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}const Pn=e=>{const t=e.appId,n=function(e,t,n){const r={"x-algolia-api-key":n,"x-algolia-application-id":t};return{headers:()=>e===mn.WithinHeaders?r:{},queryParameters:()=>e===mn.WithinQueryParameters?r:{}}}(void 0!==e.authMode?e.authMode:mn.WithinHeaders,t,e.apiKey),r=function(e){const{hostsCache:t,logger:n,requester:r,requestsCache:a,responsesCache:o,timeouts:i,userAgent:s,hosts:l,queryParameters:c,headers:u}=e,d={hostsCache:t,logger:n,requester:r,requestsCache:a,responsesCache:o,timeouts:i,userAgent:s,headers:u,queryParameters:c,hosts:l.map((e=>Sn(e))),read(e,t){const n=hn(t,d.timeouts.read),r=()=>_n(d,d.hosts.filter((e=>!!(e.accept&gn.Read))),e,n);if(!0!==(void 0!==n.cacheable?n.cacheable:e.cacheable))return r();const a={request:e,mappedRequestOptions:n,transporter:{queryParameters:d.queryParameters,headers:d.headers}};return d.responsesCache.get(a,(()=>d.requestsCache.get(a,(()=>d.requestsCache.set(a,r()).then((e=>Promise.all([d.requestsCache.delete(a),e])),(e=>Promise.all([d.requestsCache.delete(a),Promise.reject(e)]))).then((([e,t])=>t))))),{miss:e=>d.responsesCache.set(a,e)})},write:(e,t)=>_n(d,d.hosts.filter((e=>!!(e.accept&gn.Write))),e,hn(t,d.timeouts.write))};return d}({hosts:[{url:`${t}-dsn.algolia.net`,accept:gn.Read},{url:`${t}.algolia.net`,accept:gn.Write}].concat(dn([{url:`${t}-1.algolianet.com`},{url:`${t}-2.algolianet.com`},{url:`${t}-3.algolianet.com`}])),...e,headers:{...n.headers(),"content-type":"application/x-www-form-urlencoded",...e.headers},queryParameters:{...n.queryParameters(),...e.queryParameters}}),a={transporter:r,appId:t,addAlgoliaAgent(e,t){r.userAgent.add({segment:e,version:t})},clearCache:()=>Promise.all([r.requestsCache.clear(),r.responsesCache.clear()]).then((()=>{}))};return pn(a,e.methods)},An=e=>(t,n)=>t.method===wn?e.transporter.read(t,n):e.transporter.write(t,n),Tn=e=>(t,n={})=>pn({transporter:e.transporter,appId:e.appId,indexName:t},n.methods),In=e=>(t,n)=>{const r=t.map((e=>({...e,params:jn(e.params||{})})));return e.transporter.read({method:xn,path:"1/indexes/*/queries",data:{requests:r},cacheable:!0},n)},Nn=e=>(t,n)=>Promise.all(t.map((t=>{const{facetName:r,facetQuery:a,...o}=t.params;return Tn(e)(t.indexName,{methods:{searchForFacetValues:Dn}}).searchForFacetValues(r,a,{...n,...o})}))),Rn=e=>(t,n,r)=>e.transporter.read({method:xn,path:fn("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:n},cacheable:!0},r),Ln=e=>(t,n)=>e.transporter.read({method:xn,path:fn("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},n),Dn=e=>(t,n,r)=>e.transporter.read({method:xn,path:fn("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:n},cacheable:!0},r),Mn=1,Fn=2,Bn=3;function zn(e,t,n){const r={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:e=>new Promise((t=>{const n=new XMLHttpRequest;n.open(e.method,e.url,!0),Object.keys(e.headers).forEach((t=>n.setRequestHeader(t,e.headers[t])));const r=(e,r)=>setTimeout((()=>{n.abort(),t({status:0,content:r,isTimedOut:!0})}),1e3*e),a=r(e.connectTimeout,"Connection timeout");let o;n.onreadystatechange=()=>{n.readyState>n.OPENED&&void 0===o&&(clearTimeout(a),o=r(e.responseTimeout,"Socket timeout"))},n.onerror=()=>{0===n.status&&(clearTimeout(a),clearTimeout(o),t({content:n.responseText||"Network request failed",status:n.status,isTimedOut:!1}))},n.onload=()=>{clearTimeout(a),clearTimeout(o),t({content:n.responseText,status:n.status,isTimedOut:!1})},n.send(e.data)}))},logger:(a=Bn,{debug:(e,t)=>(Mn>=a&&console.debug(e,t),Promise.resolve()),info:(e,t)=>(Fn>=a&&console.info(e,t),Promise.resolve()),error:(e,t)=>(console.error(e,t),Promise.resolve())}),responsesCache:un(),requestsCache:un({serializable:!1}),hostsCache:cn({caches:[ln({key:`4.19.1-${e}`}),un()]}),userAgent:kn("4.19.1").add({segment:"Browser",version:"lite"}),authMode:mn.WithinQueryParameters};var a;return Pn({...r,...n,methods:{search:In,searchForFacetValues:Nn,multipleQueries:In,multipleSearchForFacetValues:Nn,customRequest:An,initIndex:e=>t=>Tn(e)(t,{methods:{search:Ln,searchForFacetValues:Dn,findAnswers:Rn}})}})}zn.version="4.19.1";var $n=["footer","searchBox"];function Un(e){var t=e.appId,n=e.apiKey,a=e.indexName,i=e.placeholder,u=void 0===i?"Search docs":i,d=e.searchParameters,p=e.maxResultsPerGroup,f=e.onClose,m=void 0===f?Kt:f,h=e.transformItems,g=void 0===h?Wt:h,b=e.hitComponent,v=void 0===b?Et:b,y=e.resultsFooterComponent,S=void 0===y?function(){return null}:y,w=e.navigator,x=e.initialScrollY,_=void 0===x?0:x,k=e.transformSearchClient,E=void 0===k?Wt:k,j=e.disableUserPersonalization,O=void 0!==j&&j,C=e.initialQuery,P=void 0===C?"":C,A=e.translations,T=void 0===A?{}:A,I=e.getMissingResultsUrl,N=e.insights,R=void 0!==N&&N,L=T.footer,D=T.searchBox,M=l(T,$n),F=c(r.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),B=F[0],z=F[1],$=r.useRef(null),U=r.useRef(null),q=r.useRef(null),H=r.useRef(null),V=r.useRef(null),W=r.useRef(10),G=r.useRef("undefined"!=typeof window?window.getSelection().toString().slice(0,64):"").current,K=r.useRef(P||G).current,Y=function(e,t,n){return r.useMemo((function(){var r=zn(e,t);return r.addAlgoliaAgent("docsearch","3.6.1"),!1===/docsearch.js \(.*\)/.test(r.transporter.userAgent.value)&&r.addAlgoliaAgent("docsearch-react","3.6.1"),n(r)}),[e,t,n])}(t,n,E),Q=r.useRef(sn({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(a),limit:10})).current,Z=r.useRef(sn({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(a),limit:0===Q.getAll().length?7:4})).current,X=r.useCallback((function(e){if(!O){var t="content"===e.type?e.__docsearch_parent:e;t&&-1===Q.getAll().findIndex((function(e){return e.objectID===t.objectID}))&&Z.add(t)}}),[Q,Z,O]),J=r.useCallback((function(e){if(B.context.algoliaInsightsPlugin&&e.__autocomplete_id){var t=e,n={eventName:"Item Selected",index:t.__autocomplete_indexName,items:[t],positions:[e.__autocomplete_id],queryID:t.__autocomplete_queryID};B.context.algoliaInsightsPlugin.insights.clickedObjectIDsAfterSearch(n)}}),[B.context.algoliaInsightsPlugin]),ee=r.useMemo((function(){return wt({id:"docsearch",defaultActiveItemId:0,placeholder:u,openOnFocus:!0,initialState:{query:K,context:{searchSuggestions:[]}},insights:R,navigator:w,onStateChange:function(e){z(e.state)},getSources:function(e){var r=e.query,i=e.state,s=e.setContext,l=e.setStatus;if(!r)return O?[]:[{sourceId:"recentSearches",onSelect:function(e){var t=e.item,n=e.event;X(t),Gt(n)||m()},getItemUrl:function(e){return e.item.url},getItems:function(){return Z.getAll()}},{sourceId:"favoriteSearches",onSelect:function(e){var t=e.item,n=e.event;X(t),Gt(n)||m()},getItemUrl:function(e){return e.item.url},getItems:function(){return Q.getAll()}}];var c=Boolean(R);return Y.search([{query:r,indexName:a,params:o({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(W.current),"hierarchy.lvl2:".concat(W.current),"hierarchy.lvl3:".concat(W.current),"hierarchy.lvl4:".concat(W.current),"hierarchy.lvl5:".concat(W.current),"hierarchy.lvl6:".concat(W.current),"content:".concat(W.current)],snippetEllipsisText:"\u2026",highlightPreTag:"",highlightPostTag:"",hitsPerPage:20,clickAnalytics:c},d)}]).catch((function(e){throw"RetryError"===e.name&&l("error"),e})).then((function(e){var r=e.results[0],l=r.hits,u=r.nbHits,d=Vt(l,(function(e){return Zt(e)}),p);i.context.searchSuggestions.length0&&(re(),V.current&&V.current.focus())}),[K,re]),r.useEffect((function(){function e(){if(U.current){var e=.01*window.innerHeight;U.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),r.createElement("div",s({ref:$},ne({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container","stalled"===B.status&&"DocSearch-Container--Stalled","error"===B.status&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(e){e.target===e.currentTarget&&m()}}),r.createElement("div",{className:"DocSearch-Modal",ref:U},r.createElement("header",{className:"DocSearch-SearchBar",ref:q},r.createElement(an,s({},ee,{state:B,autoFocus:0===K.length,inputRef:V,isFromSelection:Boolean(K)&&K===G,translations:D,onClose:m}))),r.createElement("div",{className:"DocSearch-Dropdown",ref:H},r.createElement(nn,s({},ee,{indexName:a,state:B,hitComponent:v,resultsFooterComponent:S,disableUserPersonalization:O,recentSearches:Z,favoriteSearches:Q,inputRef:V,translations:M,getMissingResultsUrl:I,onItemClick:function(e,t){J(e),X(e),Gt(t)||m()}}))),r.createElement("footer",{className:"DocSearch-Footer"},r.createElement(kt,{translations:L}))))}function qn(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,o=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){var r;(27===e.keyCode&&t||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,o,i])}},8328:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(6540);var r=n(3259),a=n.n(r),o=n(4054);const i={"0089a00e":[()=>n.e(8404).then(n.bind(n,2175)),"@site/versioned_docs/version-1.26.0/get-started/intro.md",2175],"012570d0":[()=>n.e(2524).then(n.bind(n,6486)),"@site/docs/monitoring/metrics/dotnet-counters.md",6486],"01611581":[()=>n.e(3710).then(n.bind(n,8401)),"@site/versioned_docs/version-1.29.0/monitoring/metrics/metrics.md",8401],"01fdf914":[()=>n.e(7540).then(n.bind(n,8639)),"@site/versioned_docs/version-1.28.0/fundamentals/security.md",8639],"03067d53":[()=>n.e(6083).then(n.bind(n,9560)),"@site/versioned_docs/version-1.29.0/get-started/system-requirements.md",9560],"043e7a23":[()=>n.e(8474).then(n.bind(n,9940)),"@site/docs/get-started/running-node/l2-networks.md",9940],"0537931c":[()=>n.e(7944).then(n.bind(n,7757)),"@site/versioned_docs/version-1.26.0/validators/validators.md",7757],"06488e66":[()=>n.e(1700).then(n.bind(n,5123)),"@site/versioned_docs/version-1.26.0/developers/custom-analytic-tools.md",5123],"0861f0e4":[()=>n.e(6797).then(n.t.bind(n,4387,19)),"@generated/docusaurus-plugin-content-docs/default/p/1-26-0-fa9.json",4387],"096c865c":[()=>Promise.all([n.e(1869),n.e(5809)]).then(n.bind(n,7828)),"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/web3.md",7828],"09768f65":[()=>n.e(8324).then(n.bind(n,7762)),"@site/docs/get-started/migrating-from-geth.md",7762],"0be7507e":[()=>Promise.all([n.e(1869),n.e(4342)]).then(n.bind(n,9773)),"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/parity.md",9773],"1011204e":[()=>n.e(4649).then(n.bind(n,7459)),"@site/versioned_docs/version-1.27.0/monitoring/metrics/metrics.md",7459],"10a5c55c":[()=>n.e(9274).then(n.bind(n,2842)),"@site/versioned_docs/version-1.25.4/get-started/consensus-clients.md",2842],"10b06255":[()=>Promise.all([n.e(1869),n.e(8844)]).then(n.bind(n,8806)),"@site/versioned_docs/version-1.26.0/fundamentals/database.md",8806],"129813bf":[()=>n.e(2249).then(n.bind(n,3107)),"@site/versioned_docs/version-1.25.4/fundamentals/private-networks.md",3107],"140ee29f":[()=>Promise.all([n.e(1869),n.e(7697)]).then(n.bind(n,2491)),"@site/versioned_docs/version-1.25.4/fundamentals/database.md",2491],"1539e79d":[()=>Promise.all([n.e(1869),n.e(5846)]).then(n.bind(n,258)),"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/admin.md",258],"16649b4c":[()=>Promise.all([n.e(1869),n.e(8338)]).then(n.bind(n,4332)),"@site/versioned_docs/version-1.26.0/troubleshooting.md",4332],17896441:[()=>Promise.all([n.e(1869),n.e(8401)]).then(n.bind(n,2391)),"@theme/DocItem",2391],"181ca382":[()=>n.e(9582).then(n.bind(n,5004)),"@site/versioned_docs/version-1.25.4/validators/aura.md",5004],"18c15ca9":[()=>n.e(2154).then(n.bind(n,7105)),"@site/versioned_docs/version-1.29.0/get-started/running-node/running-node.md",7105],"19d0da70":[()=>n.e(3753).then(n.bind(n,5247)),"@site/versioned_docs/version-1.29.0/fundamentals/pruning.md",5247],"1a4e3797":[()=>Promise.all([n.e(1869),n.e(2138)]).then(n.bind(n,9057)),"@theme/SearchPage",9057],"1d144641":[()=>Promise.all([n.e(1869),n.e(2344)]).then(n.bind(n,6714)),"@site/docs/interacting/json-rpc-ns/parity.md",6714],"1db1931a":[()=>Promise.all([n.e(1869),n.e(5373)]).then(n.bind(n,6327)),"@site/versioned_docs/version-1.25.4/monitoring/health-check.md",6327],"1f310fdc":[()=>Promise.all([n.e(1869),n.e(1431)]).then(n.bind(n,2120)),"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/clique.md",2120],21146002:[()=>n.e(1711).then(n.bind(n,1041)),"@site/versioned_docs/version-1.25.4/fundamentals/logs.md",1041],"229f7cd8":[()=>Promise.all([n.e(1869),n.e(6100)]).then(n.bind(n,706)),"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/debug.md",706],"22dd74f7":[()=>n.e(1567).then(n.t.bind(n,5226,19)),"@generated/docusaurus-plugin-content-docs/default/p/index-466.json",5226],25875451:[()=>Promise.all([n.e(1869),n.e(5298)]).then(n.bind(n,871)),"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/net.md",871],"26b16101":[()=>Promise.all([n.e(1869),n.e(4538)]).then(n.bind(n,3784)),"@site/docs/interacting/json-rpc-ns/net.md",3784],"277f8a9b":[()=>n.e(2501).then(n.bind(n,3280)),"@site/versioned_docs/version-1.25.4/get-started/system-requirements.md",3280],"27cc9e29":[()=>Promise.all([n.e(1869),n.e(5773)]).then(n.bind(n,7944)),"@site/docs/interacting/json-rpc-ns/web3.md",7944],"294a21b2":[()=>n.e(9694).then(n.bind(n,1190)),"@site/docs/validators/aura.md",1190],"2a2ecad8":[()=>n.e(4431).then(n.bind(n,4766)),"@site/versioned_docs/version-1.27.0/get-started/migrating-from-geth.md",4766],"2a65532c":[()=>Promise.all([n.e(1869),n.e(686)]).then(n.bind(n,3596)),"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/parity.md",3596],"2a7b7b7c":[()=>n.e(2270).then(n.bind(n,2579)),"@site/versioned_docs/version-1.26.0/interacting/json-rpc-server.md",2579],"2aaa9637":[()=>Promise.all([n.e(1869),n.e(3645)]).then(n.bind(n,1969)),"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/proof.md",1969],"2ac0a2ec":[()=>n.e(1452).then(n.bind(n,9018)),"@site/versioned_docs/version-1.26.0/faq.md",9018],"2b90ee7f":[()=>Promise.all([n.e(1869),n.e(8921)]).then(n.bind(n,9627)),"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/debug.md",9627],"2cc9fa48":[()=>n.e(4365).then(n.bind(n,3154)),"@site/docs/validators/validators.md",3154],"2d1db957":[()=>n.e(6769).then(n.bind(n,7066)),"@site/versioned_docs/version-1.25.4/fundamentals/configuration.md",7066],"2eaf300b":[()=>Promise.all([n.e(1869),n.e(614)]).then(n.bind(n,9070)),"@site/versioned_docs/version-1.28.0/fundamentals/sync.md",9070],"2f0928d9":[()=>Promise.all([n.e(1869),n.e(5641)]).then(n.bind(n,1326)),"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/parity.md",1326],"2ffe730f":[()=>n.e(1352).then(n.bind(n,8661)),"@site/versioned_docs/version-1.26.0/developers/building-from-source.md",8661],"303dbec2":[()=>Promise.all([n.e(1869),n.e(5199)]).then(n.bind(n,5573)),"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/clique.md",5573],"314c229e":[()=>Promise.all([n.e(1869),n.e(9302)]).then(n.bind(n,4004)),"@site/versioned_docs/version-1.28.0/fundamentals/database.md",4004],"324289f9":[()=>n.e(5608).then(n.bind(n,3976)),"@site/versioned_docs/version-1.25.4/developers/custom-analytic-tools.md",3976],"335cd626":[()=>n.e(9119).then(n.bind(n,3286)),"@site/versioned_docs/version-1.28.0/fundamentals/logs.md",3286],"342e0bfc":[()=>Promise.all([n.e(1869),n.e(4274)]).then(n.bind(n,9751)),"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/proof.md",9751],"3683941a":[()=>Promise.all([n.e(1869),n.e(1706)]).then(n.bind(n,1417)),"@site/docs/fundamentals/database.md",1417],"376e38f7":[()=>Promise.all([n.e(1869),n.e(7994)]).then(n.bind(n,6084)),"@site/docs/interacting/json-rpc-ns/clique.md",6084],38294505:[()=>Promise.all([n.e(1869),n.e(1745)]).then(n.bind(n,5320)),"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/trace.md",5320],"38506f63":[()=>n.e(3300).then(n.bind(n,2227)),"@site/versioned_docs/version-1.26.0/fundamentals/performance-tuning.md",2227],"39edaf1d":[()=>Promise.all([n.e(1869),n.e(118)]).then(n.bind(n,8259)),"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/txpool.md",8259],"3b7c3d25":[()=>n.e(6208).then(n.bind(n,2046)),"@site/versioned_docs/version-1.28.0/monitoring/metrics/grafana-and-prometheus.md",2046],"3b97ff35":[()=>n.e(3724).then(n.bind(n,8291)),"@site/versioned_docs/version-1.28.0/developers/building-from-source.md",8291],"3c359b7d":[()=>n.e(217).then(n.bind(n,9935)),"@site/docs/get-started/running-node/running-node.md",9935],"3ce8a8ac":[()=>Promise.all([n.e(1869),n.e(6993)]).then(n.bind(n,6599)),"@site/docs/fundamentals/sync.md",6599],"3e84b625":[()=>n.e(9888).then(n.bind(n,4641)),"@site/docs/fundamentals/pruning.md",4641],"3f02cd01":[()=>Promise.all([n.e(1869),n.e(430)]).then(n.bind(n,7382)),"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/net.md",7382],"404f0c63":[()=>Promise.all([n.e(1869),n.e(2963)]).then(n.bind(n,9954)),"@site/versioned_docs/version-1.29.0/fundamentals/configuration.md",9954],"408679b9":[()=>Promise.all([n.e(1869),n.e(8634)]).then(n.bind(n,3733)),"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/personal.md",3733],"4444ff13":[()=>n.e(9855).then(n.bind(n,361)),"@site/docs/fundamentals/private-networks.md",361],"44d10434":[()=>Promise.all([n.e(1869),n.e(8751)]).then(n.bind(n,7830)),"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/eth.md",7830],45119392:[()=>Promise.all([n.e(1869),n.e(9569)]).then(n.bind(n,6024)),"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/admin.md",6024],"451a5ee5":[()=>Promise.all([n.e(1869),n.e(5676)]).then(n.bind(n,158)),"@site/versioned_docs/version-1.28.0/troubleshooting.md",158],"451c0fba":[()=>Promise.all([n.e(1869),n.e(3915)]).then(n.bind(n,2864)),"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/personal.md",2864],"46c83eb5":[()=>n.e(987).then(n.bind(n,2923)),"@site/versioned_docs/version-1.28.0/validators/aura.md",2923],"4860735d":[()=>Promise.all([n.e(1869),n.e(424)]).then(n.bind(n,8160)),"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/trace.md",8160],"4d3811ec":[()=>Promise.all([n.e(1869),n.e(2272)]).then(n.bind(n,9914)),"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/trace.md",9914],"4db6a847":[()=>n.e(7955).then(n.bind(n,5753)),"@site/versioned_docs/version-1.25.4/monitoring/metrics/grafana-and-prometheus.md",5753],"4eaf64ae":[()=>n.e(279).then(n.bind(n,984)),"@site/versioned_docs/version-1.27.0/fundamentals/configuration.md",984],"4ed04c2d":[()=>Promise.all([n.e(1869),n.e(1355)]).then(n.bind(n,1069)),"@site/versioned_docs/version-1.27.0/fundamentals/database.md",1069],"5110f0ca":[()=>n.e(372).then(n.bind(n,7277)),"@site/versioned_docs/version-1.28.0/get-started/intro.md",7277],"531c2938":[()=>Promise.all([n.e(1869),n.e(7529)]).then(n.bind(n,8154)),"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/admin.md",8154],"55bf82fd":[()=>n.e(1105).then(n.bind(n,58)),"@site/docs/developers/custom-analytic-tools.md",58],"56cfc4bc":[()=>Promise.all([n.e(1869),n.e(3693)]).then(n.bind(n,95)),"@site/docs/interacting/json-rpc-ns/personal.md",95],"573f724f":[()=>n.e(8761).then(n.bind(n,2787)),"@site/versioned_docs/version-1.28.0/validators/validators.md",2787],"59d5f8ae":[()=>Promise.all([n.e(1869),n.e(288)]).then(n.bind(n,3961)),"@site/docs/monitoring/health-check.md",3961],"5ba94d59":[()=>n.e(546).then(n.bind(n,9093)),"@site/versioned_docs/version-1.29.0/get-started/running-node/l2-networks.md",9093],"5dfc1b45":[()=>Promise.all([n.e(1869),n.e(6065)]).then(n.bind(n,9934)),"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/personal.md",9934],"5e95c892":[()=>n.e(9647).then(n.bind(n,7121)),"@theme/DocsRoot",7121],"60778a21":[()=>Promise.all([n.e(1869),n.e(2709)]).then(n.bind(n,4267)),"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/web3.md",4267],"61d4b285":[()=>n.e(5073).then(n.bind(n,130)),"@site/docs/get-started/system-requirements.md",130],"64af1a79":[()=>Promise.all([n.e(1869),n.e(4182)]).then(n.bind(n,4338)),"@site/docs/interacting/json-rpc-ns/proof.md",4338],"64e9d9e1":[()=>Promise.all([n.e(1869),n.e(72)]).then(n.bind(n,9493)),"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/web3.md",9493],"67a08dad":[()=>Promise.all([n.e(1869),n.e(2478)]).then(n.bind(n,4458)),"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/web3.md",4458],"67ada9d5":[()=>n.e(3490).then(n.bind(n,3650)),"@site/versioned_docs/version-1.29.0/fundamentals/performance-tuning.md",3650],"6aab6db7":[()=>n.e(8326).then(n.bind(n,6756)),"@site/docs/interacting/json-rpc-server.md",6756],"6ad729b4":[()=>n.e(4298).then(n.bind(n,8938)),"@site/versioned_docs/version-1.27.0/validators/aura.md",8938],"6dbb1c8b":[()=>n.e(4971).then(n.bind(n,8130)),"@site/versioned_docs/version-1.25.4/interacting/json-rpc-server.md",8130],"6e937beb":[()=>Promise.all([n.e(1869),n.e(662)]).then(n.bind(n,8740)),"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/proof.md",8740],"6edb8094":[()=>n.e(6217).then(n.bind(n,9866)),"@site/versioned_docs/version-1.26.0/get-started/system-requirements.md",9866],"70fbabeb":[()=>Promise.all([n.e(1869),n.e(3862)]).then(n.bind(n,1262)),"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/eth.md",1262],"720b26b2":[()=>Promise.all([n.e(1869),n.e(7794)]).then(n.bind(n,1973)),"@site/versioned_docs/version-1.29.0/troubleshooting.md",1973],"77e3cba5":[()=>Promise.all([n.e(1869),n.e(3696)]).then(n.bind(n,9279)),"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/proof.md",9279],"7821a820":[()=>n.e(8688).then(n.bind(n,7787)),"@site/versioned_docs/version-1.29.0/developers/plugins.md",7787],"791ecf85":[()=>Promise.all([n.e(1869),n.e(4771)]).then(n.bind(n,8472)),"@site/versioned_docs/version-1.27.0/get-started/installing-nethermind.md",8472],"793bd5df":[()=>n.e(8331).then(n.bind(n,2922)),"@site/docs/fundamentals/security.md",2922],"794cd842":[()=>Promise.all([n.e(1869),n.e(2)]).then(n.bind(n,2635)),"@site/versioned_docs/version-1.27.0/fundamentals/sync.md",2635],"7a41f229":[()=>n.e(9613).then(n.bind(n,4392)),"@site/versioned_docs/version-1.27.0/get-started/consensus-clients.md",4392],"7b964f9b":[()=>n.e(4714).then(n.bind(n,8981)),"@site/versioned_docs/version-1.28.0/get-started/consensus-clients.md",8981],"7bdbbf02":[()=>n.e(2944).then(n.bind(n,5093)),"@site/versioned_docs/version-1.27.0/developers/plugins.md",5093],"7bddab45":[()=>Promise.all([n.e(1869),n.e(8076)]).then(n.bind(n,1110)),"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/clique.md",1110],"7da7c9dd":[()=>n.e(9574).then(n.bind(n,5683)),"@site/versioned_docs/version-1.28.0/fundamentals/configuration.md",5683],"7f6fb541":[()=>Promise.all([n.e(1869),n.e(5978)]).then(n.bind(n,9253)),"@site/versioned_docs/version-1.29.0/fundamentals/sync.md",9253],89349935:[()=>Promise.all([n.e(1869),n.e(2585)]).then(n.bind(n,2612)),"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/parity.md",2612],"8a1664e8":[()=>Promise.all([n.e(1869),n.e(8982)]).then(n.bind(n,4259)),"@site/versioned_docs/version-1.27.0/troubleshooting.md",4259],"8ab4d091":[()=>Promise.all([n.e(1869),n.e(6434)]).then(n.bind(n,1340)),"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/debug.md",1340],"8b054004":[()=>Promise.all([n.e(1869),n.e(1856)]).then(n.bind(n,7884)),"@site/docs/interacting/json-rpc-ns/eth.md",7884],"8c8ddd82":[()=>n.e(1626).then(n.bind(n,5846)),"@site/versioned_docs/version-1.29.0/fundamentals/logs.md",5846],"8cd58c6d":[()=>n.e(704).then(n.bind(n,1197)),"@site/versioned_docs/version-1.27.0/fundamentals/private-networks.md",1197],"8cdfe270":[()=>n.e(7230).then(n.bind(n,5032)),"@site/versioned_docs/version-1.26.0/developers/plugins.md",5032],"91ddd300":[()=>Promise.all([n.e(1869),n.e(9426)]).then(n.bind(n,8212)),"@site/versioned_docs/version-1.26.0/fundamentals/sync.md",8212],"9225ae5e":[()=>Promise.all([n.e(1869),n.e(853)]).then(n.bind(n,4400)),"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/eth.md",4400],94981332:[()=>Promise.all([n.e(1869),n.e(1620)]).then(n.bind(n,6602)),"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/debug.md",6602],"94a9fdf0":[()=>n.e(3382).then(n.bind(n,2427)),"@site/versioned_docs/version-1.26.0/get-started/consensus-clients.md",2427],"94d697b3":[()=>n.e(6919).then(n.bind(n,3098)),"@site/versioned_docs/version-1.29.0/interacting/json-rpc-server.md",3098],"963f9300":[()=>Promise.all([n.e(1869),n.e(3653)]).then(n.bind(n,2072)),"@site/docs/interacting/json-rpc-ns/debug.md",2072],"99617d39":[()=>Promise.all([n.e(1869),n.e(7523)]).then(n.bind(n,605)),"@site/versioned_docs/version-1.27.0/monitoring/health-check.md",605],"9a7ec3ac":[()=>n.e(5551).then(n.bind(n,6419)),"@site/versioned_docs/version-1.25.4/developers/plugins.md",6419],"9af4741d":[()=>n.e(7793).then(n.bind(n,8730)),"@site/versioned_docs/version-1.27.0/monitoring/metrics/dotnet-counters.md",8730],"9bc320b7":[()=>Promise.all([n.e(1869),n.e(6015)]).then(n.bind(n,6539)),"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/admin.md",6539],"9d9f8394":[()=>Promise.all([n.e(1869),n.e(9013)]).then(n.bind(n,4343)),"@site/docs/troubleshooting.md",4343],"9daa0d24":[()=>n.e(9908).then(n.bind(n,740)),"@site/versioned_docs/version-1.26.0/fundamentals/pruning.md",740],a0484a41:[()=>n.e(4240).then(n.bind(n,4876)),"@site/versioned_docs/version-1.29.0/validators/validators.md",4876],a05b08ae:[()=>Promise.all([n.e(1869),n.e(3451)]).then(n.bind(n,6894)),"@site/versioned_docs/version-1.29.0/get-started/installing-nethermind.md",6894],a0964226:[()=>Promise.all([n.e(1869),n.e(7083)]).then(n.bind(n,8829)),"@site/docs/interacting/json-rpc-ns/txpool.md",8829],a1b6351b:[()=>n.e(7328).then(n.bind(n,807)),"@site/versioned_docs/version-1.28.0/get-started/system-requirements.md",807],a1f97203:[()=>Promise.all([n.e(1869),n.e(8530)]).then(n.bind(n,9803)),"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/clique.md",9803],a3b5b014:[()=>Promise.all([n.e(1869),n.e(6685)]).then(n.bind(n,3060)),"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/net.md",3060],a3cdb4fa:[()=>Promise.all([n.e(1869),n.e(639)]).then(n.bind(n,8831)),"@site/versioned_docs/version-1.29.0/monitoring/health-check.md",8831],a65a4280:[()=>Promise.all([n.e(1869),n.e(8134)]).then(n.bind(n,1266)),"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/web3.md",1266],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,4532)),"@theme/DocVersionRoot",4532],a87fa4c0:[()=>Promise.all([n.e(1869),n.e(6137)]).then(n.bind(n,7477)),"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/eth.md",7477],a8d7d90d:[()=>n.e(1094).then(n.bind(n,3428)),"@site/versioned_docs/version-1.25.4/validators/validators.md",3428],a901fba0:[()=>n.e(5711).then(n.bind(n,8910)),"@site/docs/developers/building-from-source.md",8910],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,1377)),"@theme/DocRoot",1377],aa9207bc:[()=>n.e(5454).then(n.bind(n,416)),"@site/versioned_docs/version-1.25.4/developers/building-from-source.md",416],ab789c01:[()=>Promise.all([n.e(1869),n.e(6601)]).then(n.bind(n,8867)),"@site/versioned_docs/version-1.26.0/get-started/installing-nethermind.md",8867],aba21aa0:[()=>n.e(5742).then(n.t.bind(n,7093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],acac5159:[()=>n.e(9091).then(n.bind(n,9813)),"@site/versioned_docs/version-1.27.0/fundamentals/pruning.md",9813],addc6152:[()=>Promise.all([n.e(1869),n.e(7677)]).then(n.bind(n,7406)),"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/txpool.md",7406],ae7cdfb0:[()=>n.e(9759).then(n.bind(n,7670)),"@site/versioned_docs/version-1.27.0/developers/custom-analytic-tools.md",7670],af3959cf:[()=>Promise.all([n.e(1869),n.e(1603)]).then(n.bind(n,2188)),"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/txpool.md",2188],afb78532:[()=>n.e(1689).then(n.bind(n,4837)),"@site/versioned_docs/version-1.28.0/developers/custom-analytic-tools.md",4837],b1ae986a:[()=>n.e(7594).then(n.bind(n,8743)),"@site/docs/monitoring/metrics/grafana-and-prometheus.md",8743],b204c0ea:[()=>n.e(5732).then(n.bind(n,6624)),"@site/versioned_docs/version-1.29.0/developers/custom-analytic-tools.md",6624],b3ed09d7:[()=>n.e(7683).then(n.bind(n,4443)),"@site/versioned_docs/version-1.27.0/monitoring/metrics/grafana-and-prometheus.md",4443],b3ef4e5a:[()=>Promise.all([n.e(1869),n.e(1256)]).then(n.bind(n,9451)),"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/txpool.md",9451],b3f256dd:[()=>n.e(6435).then(n.bind(n,2524)),"@site/versioned_docs/version-1.26.0/fundamentals/logs.md",2524],b5ab4687:[()=>n.e(9860).then(n.bind(n,7953)),"@site/versioned_docs/version-1.28.0/monitoring/metrics/dotnet-counters.md",7953],b5dc23c4:[()=>n.e(5223).then(n.bind(n,1563)),"@site/docs/fundamentals/logs.md",1563],b5e67d0e:[()=>Promise.all([n.e(1869),n.e(8957)]).then(n.bind(n,5997)),"@site/versioned_docs/version-1.25.4/fundamentals/sync.md",5997],b685e31b:[()=>n.e(1171).then(n.t.bind(n,2806,19)),"@generated/docusaurus-plugin-content-docs/default/p/next-c91.json",2806],b72424ba:[()=>n.e(4909).then(n.bind(n,4694)),"@site/versioned_docs/version-1.27.0/validators/validators.md",4694],b87be7cc:[()=>Promise.all([n.e(1869),n.e(3544)]).then(n.bind(n,397)),"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/trace.md",397],b9c601eb:[()=>n.e(5419).then(n.bind(n,9419)),"@site/docs/get-started/running-node/consensus-clients.md",9419],ba2a4595:[()=>n.e(7104).then(n.bind(n,712)),"@site/versioned_docs/version-1.28.0/monitoring/metrics/metrics.md",712],bca8cef8:[()=>n.e(6379).then(n.bind(n,1858)),"@site/versioned_docs/version-1.27.0/developers/building-from-source.md",1858],bccdab75:[()=>n.e(4530).then(n.bind(n,8114)),"@site/versioned_docs/version-1.29.0/get-started/intro.md",8114],bd044685:[()=>n.e(2378).then(n.bind(n,550)),"@site/versioned_docs/version-1.28.0/developers/plugins.md",550],bdacd39a:[()=>n.e(2828).then(n.bind(n,8784)),"@site/versioned_docs/version-1.29.0/fundamentals/security.md",8784],be51d2a4:[()=>n.e(3671).then(n.bind(n,4872)),"@site/versioned_docs/version-1.27.0/fundamentals/performance-tuning.md",4872],bec904e0:[()=>n.e(2307).then(n.bind(n,8859)),"@site/versioned_docs/version-1.29.0/fundamentals/private-networks.md",8859],bf9df08f:[()=>n.e(2544).then(n.bind(n,5288)),"@site/versioned_docs/version-1.25.4/get-started/migrating-from-geth.md",5288],c03f214b:[()=>n.e(1084).then(n.bind(n,601)),"@site/versioned_docs/version-1.27.0/faq.md",601],c11efc49:[()=>n.e(3597).then(n.bind(n,8632)),"@site/versioned_docs/version-1.29.0/developers/building-from-source.md",8632],c141421f:[()=>n.e(957).then(n.t.bind(n,936,19)),"@generated/docusaurus-theme-search-algolia/default/__plugin.json",936],c18d6c91:[()=>n.e(6532).then(n.bind(n,838)),"@site/versioned_docs/version-1.27.0/interacting/json-rpc-server.md",838],c36170f2:[()=>n.e(1715).then(n.bind(n,1738)),"@site/versioned_docs/version-1.26.0/fundamentals/private-networks.md",1738],c43c9625:[()=>Promise.all([n.e(1869),n.e(6893)]).then(n.bind(n,8029)),"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/admin.md",8029],c4b1c122:[()=>n.e(1417).then(n.bind(n,9529)),"@site/versioned_docs/version-1.25.4/monitoring/metrics/metrics.md",9529],c52b0357:[()=>n.e(1492).then(n.bind(n,9908)),"@site/versioned_docs/version-1.29.0/validators/aura.md",9908],c6258319:[()=>n.e(9894).then(n.bind(n,541)),"@site/versioned_docs/version-1.29.0/get-started/running-node/consensus-clients.md",541],c65f1e33:[()=>Promise.all([n.e(1869),n.e(585)]).then(n.bind(n,9060)),"@site/docs/get-started/installing-nethermind.md",9060],c864e161:[()=>n.e(1401).then(n.bind(n,7192)),"@site/versioned_docs/version-1.29.0/monitoring/metrics/dotnet-counters.md",7192],ca3f5c6e:[()=>n.e(227).then(n.bind(n,8832)),"@site/versioned_docs/version-1.25.4/monitoring/metrics/dotnet-counters.md",8832],ce82dfd7:[()=>n.e(4436).then(n.bind(n,231)),"@site/versioned_docs/version-1.25.4/fundamentals/pruning.md",231],ceb8fbe8:[()=>Promise.all([n.e(1869),n.e(9290)]).then(n.bind(n,3841)),"@site/versioned_docs/version-1.28.0/get-started/installing-nethermind.md",3841],cef792a0:[()=>Promise.all([n.e(1869),n.e(3120)]).then(n.bind(n,3818)),"@site/versioned_docs/version-1.26.0/monitoring/health-check.md",3818],d074d9ae:[()=>n.e(2645).then(n.bind(n,3797)),"@site/versioned_docs/version-1.28.0/fundamentals/performance-tuning.md",3797],d1d84bce:[()=>n.e(68).then(n.bind(n,2504)),"@site/versioned_docs/version-1.25.4/fundamentals/security.md",2504],d2461378:[()=>Promise.all([n.e(1869),n.e(2042)]).then(n.bind(n,2950)),"@site/versioned_docs/version-1.25.4/get-started/installing-nethermind.md",2950],d2ae4d42:[()=>Promise.all([n.e(1869),n.e(8157)]).then(n.bind(n,7553)),"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/clique.md",7553],d2d2ec91:[()=>n.e(1049).then(n.bind(n,3215)),"@site/versioned_docs/version-1.27.0/fundamentals/logs.md",3215],d33c2fd3:[()=>Promise.all([n.e(1869),n.e(7261)]).then(n.bind(n,2413)),"@site/versioned_docs/version-1.25.4/interacting/json-rpc-ns/personal.md",2413],d35bfd19:[()=>Promise.all([n.e(1869),n.e(6941)]).then(n.bind(n,3190)),"@site/docs/interacting/json-rpc-ns/trace.md",3190],d363997f:[()=>n.e(3376).then(n.bind(n,6133)),"@site/versioned_docs/version-1.26.0/fundamentals/security.md",6133],d4222919:[()=>Promise.all([n.e(1869),n.e(4518)]).then(n.bind(n,6109)),"@site/versioned_docs/version-1.25.4/troubleshooting.md",6109],d4b7677e:[()=>Promise.all([n.e(1869),n.e(2187)]).then(n.bind(n,428)),"@site/versioned_docs/version-1.28.0/monitoring/health-check.md",428],d5f38527:[()=>n.e(3899).then(n.bind(n,6506)),"@site/versioned_docs/version-1.25.4/get-started/intro.md",6506],d63712d6:[()=>n.e(9448).then(n.bind(n,4240)),"@site/versioned_docs/version-1.29.0/get-started/migrating-from-geth.md",4240],d6764455:[()=>n.e(3992).then(n.bind(n,4014)),"@site/versioned_docs/version-1.27.0/get-started/system-requirements.md",4014],d788bb18:[()=>Promise.all([n.e(1869),n.e(4363)]).then(n.bind(n,4446)),"@site/versioned_docs/version-1.29.0/interacting/json-rpc-ns/net.md",4446],d8500c1c:[()=>n.e(2719).then(n.t.bind(n,1666,19)),"@generated/docusaurus-plugin-content-docs/default/p/1-25-4-8dd.json",1666],d9226b24:[()=>n.e(2380).then(n.bind(n,7119)),"@site/versioned_docs/version-1.25.4/faq.md",7119],da066521:[()=>Promise.all([n.e(1869),n.e(9496)]).then(n.bind(n,5689)),"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/net.md",5689],de0b05d1:[()=>n.e(8612).then(n.bind(n,8430)),"@site/versioned_docs/version-1.27.0/fundamentals/security.md",8430],e02b2202:[()=>Promise.all([n.e(1869),n.e(9866)]).then(n.bind(n,4969)),"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/txpool.md",4969],e0b15704:[()=>n.e(3011).then(n.bind(n,3409)),"@site/versioned_docs/version-1.29.0/monitoring/metrics/grafana-and-prometheus.md",3409],e3779d30:[()=>Promise.all([n.e(1869),n.e(9027)]).then(n.bind(n,7783)),"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/eth.md",7783],e396bf53:[()=>Promise.all([n.e(1869),n.e(2982)]).then(n.bind(n,3356)),"@site/docs/interacting/json-rpc-ns/admin.md",3356],e445b067:[()=>Promise.all([n.e(1869),n.e(630)]).then(n.bind(n,4724)),"@site/docs/fundamentals/configuration.md",4724],e6fa02bb:[()=>Promise.all([n.e(1869),n.e(3967)]).then(n.bind(n,707)),"@site/versioned_docs/version-1.29.0/fundamentals/database.md",707],e75a3f40:[()=>n.e(6786).then(n.bind(n,3580)),"@site/versioned_docs/version-1.27.0/get-started/intro.md",3580],e8237fc5:[()=>n.e(7718).then(n.bind(n,1904)),"@site/versioned_docs/version-1.26.0/monitoring/metrics/grafana-and-prometheus.md",1904],e885279c:[()=>n.e(6728).then(n.bind(n,6825)),"@site/versioned_docs/version-1.26.0/validators/aura.md",6825],ea9babff:[()=>n.e(9917).then(n.bind(n,5436)),"@site/docs/fundamentals/performance-tuning.md",5436],eabdc352:[()=>Promise.all([n.e(1869),n.e(9552)]).then(n.bind(n,1179)),"@site/versioned_docs/version-1.27.0/interacting/json-rpc-ns/personal.md",1179],ecdbb4c3:[()=>n.e(6053).then(n.bind(n,3809)),"@site/versioned_docs/version-1.26.0/get-started/migrating-from-geth.md",3809],eceb7292:[()=>n.e(5944).then(n.bind(n,6391)),"@site/docs/monitoring/metrics/metrics.md",6391],f08d67b7:[()=>n.e(9893).then(n.bind(n,5793)),"@site/versioned_docs/version-1.26.0/fundamentals/configuration.md",5793],f1e820d1:[()=>Promise.all([n.e(1869),n.e(8664)]).then(n.bind(n,7113)),"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/debug.md",7113],f247b6f9:[()=>n.e(9627).then(n.t.bind(n,1958,19)),"@generated/docusaurus-plugin-content-docs/default/p/1-28-0-7f0.json",1958],f29622aa:[()=>n.e(1036).then(n.bind(n,9786)),"@site/versioned_docs/version-1.25.4/fundamentals/performance-tuning.md",9786],f796df1d:[()=>n.e(454).then(n.bind(n,3234)),"@site/versioned_docs/version-1.26.0/monitoring/metrics/metrics.md",3234],f7be9ca1:[()=>Promise.all([n.e(1869),n.e(3719)]).then(n.bind(n,919)),"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/parity.md",919],f81b3c98:[()=>Promise.all([n.e(1869),n.e(2073)]).then(n.bind(n,2627)),"@site/versioned_docs/version-1.28.0/interacting/json-rpc-ns/trace.md",2627],fa412637:[()=>n.e(9135).then(n.bind(n,1742)),"@site/versioned_docs/version-1.28.0/fundamentals/pruning.md",1742],fa700d05:[()=>n.e(8716).then(n.t.bind(n,5718,19)),"@generated/docusaurus-plugin-content-docs/default/p/1-27-0-49e.json",5718],fb0274c6:[()=>n.e(4623).then(n.bind(n,8451)),"@site/versioned_docs/version-1.26.0/monitoring/metrics/dotnet-counters.md",8451],fc855aa1:[()=>Promise.all([n.e(1869),n.e(47)]).then(n.bind(n,1830)),"@site/versioned_docs/version-1.26.0/interacting/json-rpc-ns/proof.md",1830],fccad8df:[()=>n.e(4360).then(n.bind(n,7920)),"@site/docs/get-started/intro.md",7920],fdbfc520:[()=>n.e(7799).then(n.bind(n,659)),"@site/versioned_docs/version-1.28.0/get-started/migrating-from-geth.md",659],fe0ec189:[()=>n.e(6336).then(n.bind(n,1137)),"@site/docs/developers/plugins.md",1137],ff14b4b6:[()=>n.e(4458).then(n.bind(n,8552)),"@site/versioned_docs/version-1.28.0/fundamentals/private-networks.md",8552],ff5d55e1:[()=>n.e(6340).then(n.bind(n,4453)),"@site/versioned_docs/version-1.28.0/interacting/json-rpc-server.md",4453]};var s=n(4848);function l(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,s.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,s.jsx)("p",{children:String(t)}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,s.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,s.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,s.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,s.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(6921),u=n(3102);function d(e,t){if("*"===e)return a()({loading:l,loader:()=>n.e(2237).then(n.bind(n,2237)),modules:["@theme/NotFound"],webpack:()=>[2237],render(e,t){const n=e.default;return(0,s.jsx)(u.W,{value:{plugin:{name:"native",id:"default"}},children:(0,s.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},p=[],f=[],m=(0,c.A)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:l,loader:d,modules:p,webpack:()=>f,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const s=n.split(".");s.slice(0,-1).forEach((e=>{i=i[e]})),i[s[s.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;delete a.__context;const l=a.__props;return delete a.__props,(0,s.jsx)(u.W,{value:i,children:(0,s.jsx)(o,{...a,...l,...n})})}})}const p=[{path:"/search",component:d("/search","5de"),exact:!0},{path:"/",component:d("/","a3b"),routes:[{path:"/1.25.4",component:d("/1.25.4","125"),routes:[{path:"/1.25.4",component:d("/1.25.4","db3"),routes:[{path:"/1.25.4/",component:d("/1.25.4/","cf4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/developers/building-from-source",component:d("/1.25.4/developers/building-from-source","f16"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/developers/custom-analytic-tools",component:d("/1.25.4/developers/custom-analytic-tools","fba"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/developers/plugins",component:d("/1.25.4/developers/plugins","ef9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/faq",component:d("/1.25.4/faq","a04"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/fundamentals/configuration",component:d("/1.25.4/fundamentals/configuration","768"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/fundamentals/database",component:d("/1.25.4/fundamentals/database","ccd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/fundamentals/logs",component:d("/1.25.4/fundamentals/logs","4e0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/fundamentals/performance-tuning",component:d("/1.25.4/fundamentals/performance-tuning","6e4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/fundamentals/private-networks",component:d("/1.25.4/fundamentals/private-networks","0fd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/fundamentals/pruning",component:d("/1.25.4/fundamentals/pruning","eaf"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/fundamentals/security",component:d("/1.25.4/fundamentals/security","01c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/fundamentals/sync",component:d("/1.25.4/fundamentals/sync","5bb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/get-started/consensus-clients",component:d("/1.25.4/get-started/consensus-clients","0bf"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/get-started/installing-nethermind",component:d("/1.25.4/get-started/installing-nethermind","d53"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/get-started/migrating-from-geth",component:d("/1.25.4/get-started/migrating-from-geth","c63"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/get-started/system-requirements",component:d("/1.25.4/get-started/system-requirements","4f7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/interacting/json-rpc-ns/admin",component:d("/1.25.4/interacting/json-rpc-ns/admin","84a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/interacting/json-rpc-ns/clique",component:d("/1.25.4/interacting/json-rpc-ns/clique","d1c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/interacting/json-rpc-ns/debug",component:d("/1.25.4/interacting/json-rpc-ns/debug","70a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/interacting/json-rpc-ns/eth",component:d("/1.25.4/interacting/json-rpc-ns/eth","857"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/interacting/json-rpc-ns/net",component:d("/1.25.4/interacting/json-rpc-ns/net","011"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/interacting/json-rpc-ns/parity",component:d("/1.25.4/interacting/json-rpc-ns/parity","73b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/interacting/json-rpc-ns/personal",component:d("/1.25.4/interacting/json-rpc-ns/personal","f01"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/interacting/json-rpc-ns/proof",component:d("/1.25.4/interacting/json-rpc-ns/proof","b16"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/interacting/json-rpc-ns/trace",component:d("/1.25.4/interacting/json-rpc-ns/trace","561"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/interacting/json-rpc-ns/txpool",component:d("/1.25.4/interacting/json-rpc-ns/txpool","0b4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/interacting/json-rpc-ns/web3",component:d("/1.25.4/interacting/json-rpc-ns/web3","a92"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/interacting/json-rpc-server",component:d("/1.25.4/interacting/json-rpc-server","5c6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/monitoring/health-check",component:d("/1.25.4/monitoring/health-check","009"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/monitoring/metrics/",component:d("/1.25.4/monitoring/metrics/","b67"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/monitoring/metrics/dotnet-counters",component:d("/1.25.4/monitoring/metrics/dotnet-counters","656"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/monitoring/metrics/grafana-and-prometheus",component:d("/1.25.4/monitoring/metrics/grafana-and-prometheus","7f8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/troubleshooting",component:d("/1.25.4/troubleshooting","97c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/validators/",component:d("/1.25.4/validators/","224"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.25.4/validators/aura",component:d("/1.25.4/validators/aura","b06"),exact:!0,sidebar:"tutorialSidebar"}]}]},{path:"/1.26.0",component:d("/1.26.0","4eb"),routes:[{path:"/1.26.0",component:d("/1.26.0","833"),routes:[{path:"/1.26.0/",component:d("/1.26.0/","cba"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/developers/building-from-source",component:d("/1.26.0/developers/building-from-source","4cd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/developers/custom-analytic-tools",component:d("/1.26.0/developers/custom-analytic-tools","7b4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/developers/plugins",component:d("/1.26.0/developers/plugins","da9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/faq",component:d("/1.26.0/faq","394"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/fundamentals/configuration",component:d("/1.26.0/fundamentals/configuration","213"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/fundamentals/database",component:d("/1.26.0/fundamentals/database","10e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/fundamentals/logs",component:d("/1.26.0/fundamentals/logs","870"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/fundamentals/performance-tuning",component:d("/1.26.0/fundamentals/performance-tuning","fc0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/fundamentals/private-networks",component:d("/1.26.0/fundamentals/private-networks","b62"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/fundamentals/pruning",component:d("/1.26.0/fundamentals/pruning","cd6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/fundamentals/security",component:d("/1.26.0/fundamentals/security","afe"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/fundamentals/sync",component:d("/1.26.0/fundamentals/sync","f24"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/get-started/consensus-clients",component:d("/1.26.0/get-started/consensus-clients","bc0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/get-started/installing-nethermind",component:d("/1.26.0/get-started/installing-nethermind","6f9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/get-started/migrating-from-geth",component:d("/1.26.0/get-started/migrating-from-geth","635"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/get-started/system-requirements",component:d("/1.26.0/get-started/system-requirements","c99"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/interacting/json-rpc-ns/admin",component:d("/1.26.0/interacting/json-rpc-ns/admin","a41"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/interacting/json-rpc-ns/clique",component:d("/1.26.0/interacting/json-rpc-ns/clique","e9a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/interacting/json-rpc-ns/debug",component:d("/1.26.0/interacting/json-rpc-ns/debug","6f2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/interacting/json-rpc-ns/eth",component:d("/1.26.0/interacting/json-rpc-ns/eth","b60"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/interacting/json-rpc-ns/net",component:d("/1.26.0/interacting/json-rpc-ns/net","50c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/interacting/json-rpc-ns/parity",component:d("/1.26.0/interacting/json-rpc-ns/parity","b27"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/interacting/json-rpc-ns/personal",component:d("/1.26.0/interacting/json-rpc-ns/personal","b02"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/interacting/json-rpc-ns/proof",component:d("/1.26.0/interacting/json-rpc-ns/proof","97d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/interacting/json-rpc-ns/trace",component:d("/1.26.0/interacting/json-rpc-ns/trace","cd1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/interacting/json-rpc-ns/txpool",component:d("/1.26.0/interacting/json-rpc-ns/txpool","6d4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/interacting/json-rpc-ns/web3",component:d("/1.26.0/interacting/json-rpc-ns/web3","08d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/interacting/json-rpc-server",component:d("/1.26.0/interacting/json-rpc-server","169"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/monitoring/health-check",component:d("/1.26.0/monitoring/health-check","380"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/monitoring/metrics/",component:d("/1.26.0/monitoring/metrics/","46b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/monitoring/metrics/dotnet-counters",component:d("/1.26.0/monitoring/metrics/dotnet-counters","021"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/monitoring/metrics/grafana-and-prometheus",component:d("/1.26.0/monitoring/metrics/grafana-and-prometheus","090"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/troubleshooting",component:d("/1.26.0/troubleshooting","530"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/validators/",component:d("/1.26.0/validators/","5c9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.26.0/validators/aura",component:d("/1.26.0/validators/aura","864"),exact:!0,sidebar:"tutorialSidebar"}]}]},{path:"/1.27.0",component:d("/1.27.0","2a5"),routes:[{path:"/1.27.0",component:d("/1.27.0","ffc"),routes:[{path:"/1.27.0/",component:d("/1.27.0/","b10"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/developers/building-from-source",component:d("/1.27.0/developers/building-from-source","903"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/developers/custom-analytic-tools",component:d("/1.27.0/developers/custom-analytic-tools","02d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/developers/plugins",component:d("/1.27.0/developers/plugins","c20"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/faq",component:d("/1.27.0/faq","5a7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/fundamentals/configuration",component:d("/1.27.0/fundamentals/configuration","f42"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/fundamentals/database",component:d("/1.27.0/fundamentals/database","765"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/fundamentals/logs",component:d("/1.27.0/fundamentals/logs","47a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/fundamentals/performance-tuning",component:d("/1.27.0/fundamentals/performance-tuning","a7f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/fundamentals/private-networks",component:d("/1.27.0/fundamentals/private-networks","e61"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/fundamentals/pruning",component:d("/1.27.0/fundamentals/pruning","662"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/fundamentals/security",component:d("/1.27.0/fundamentals/security","903"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/fundamentals/sync",component:d("/1.27.0/fundamentals/sync","0f6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/get-started/consensus-clients",component:d("/1.27.0/get-started/consensus-clients","c9f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/get-started/installing-nethermind",component:d("/1.27.0/get-started/installing-nethermind","90b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/get-started/migrating-from-geth",component:d("/1.27.0/get-started/migrating-from-geth","f62"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/get-started/system-requirements",component:d("/1.27.0/get-started/system-requirements","aeb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/interacting/json-rpc-ns/admin",component:d("/1.27.0/interacting/json-rpc-ns/admin","844"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/interacting/json-rpc-ns/clique",component:d("/1.27.0/interacting/json-rpc-ns/clique","e74"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/interacting/json-rpc-ns/debug",component:d("/1.27.0/interacting/json-rpc-ns/debug","447"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/interacting/json-rpc-ns/eth",component:d("/1.27.0/interacting/json-rpc-ns/eth","85a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/interacting/json-rpc-ns/net",component:d("/1.27.0/interacting/json-rpc-ns/net","aab"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/interacting/json-rpc-ns/parity",component:d("/1.27.0/interacting/json-rpc-ns/parity","336"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/interacting/json-rpc-ns/personal",component:d("/1.27.0/interacting/json-rpc-ns/personal","135"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/interacting/json-rpc-ns/proof",component:d("/1.27.0/interacting/json-rpc-ns/proof","842"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/interacting/json-rpc-ns/trace",component:d("/1.27.0/interacting/json-rpc-ns/trace","3ff"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/interacting/json-rpc-ns/txpool",component:d("/1.27.0/interacting/json-rpc-ns/txpool","cb1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/interacting/json-rpc-ns/web3",component:d("/1.27.0/interacting/json-rpc-ns/web3","2c1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/interacting/json-rpc-server",component:d("/1.27.0/interacting/json-rpc-server","19f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/monitoring/health-check",component:d("/1.27.0/monitoring/health-check","c67"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/monitoring/metrics/",component:d("/1.27.0/monitoring/metrics/","cb8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/monitoring/metrics/dotnet-counters",component:d("/1.27.0/monitoring/metrics/dotnet-counters","7bb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/monitoring/metrics/grafana-and-prometheus",component:d("/1.27.0/monitoring/metrics/grafana-and-prometheus","169"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/troubleshooting",component:d("/1.27.0/troubleshooting","afa"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/validators/",component:d("/1.27.0/validators/","cb3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.27.0/validators/aura",component:d("/1.27.0/validators/aura","a4a"),exact:!0,sidebar:"tutorialSidebar"}]}]},{path:"/1.28.0",component:d("/1.28.0","946"),routes:[{path:"/1.28.0",component:d("/1.28.0","3e4"),routes:[{path:"/1.28.0/",component:d("/1.28.0/","49a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/developers/building-from-source",component:d("/1.28.0/developers/building-from-source","e25"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/developers/custom-analytic-tools",component:d("/1.28.0/developers/custom-analytic-tools","721"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/developers/plugins",component:d("/1.28.0/developers/plugins","7e2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/fundamentals/configuration",component:d("/1.28.0/fundamentals/configuration","83d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/fundamentals/database",component:d("/1.28.0/fundamentals/database","56b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/fundamentals/logs",component:d("/1.28.0/fundamentals/logs","1a6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/fundamentals/performance-tuning",component:d("/1.28.0/fundamentals/performance-tuning","28d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/fundamentals/private-networks",component:d("/1.28.0/fundamentals/private-networks","35d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/fundamentals/pruning",component:d("/1.28.0/fundamentals/pruning","02e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/fundamentals/security",component:d("/1.28.0/fundamentals/security","fb9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/fundamentals/sync",component:d("/1.28.0/fundamentals/sync","4da"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/get-started/consensus-clients",component:d("/1.28.0/get-started/consensus-clients","0f8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/get-started/installing-nethermind",component:d("/1.28.0/get-started/installing-nethermind","9c7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/get-started/migrating-from-geth",component:d("/1.28.0/get-started/migrating-from-geth","682"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/get-started/system-requirements",component:d("/1.28.0/get-started/system-requirements","bbc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/interacting/json-rpc-ns/admin",component:d("/1.28.0/interacting/json-rpc-ns/admin","279"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/interacting/json-rpc-ns/clique",component:d("/1.28.0/interacting/json-rpc-ns/clique","646"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/interacting/json-rpc-ns/debug",component:d("/1.28.0/interacting/json-rpc-ns/debug","5c3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/interacting/json-rpc-ns/eth",component:d("/1.28.0/interacting/json-rpc-ns/eth","13d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/interacting/json-rpc-ns/net",component:d("/1.28.0/interacting/json-rpc-ns/net","746"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/interacting/json-rpc-ns/parity",component:d("/1.28.0/interacting/json-rpc-ns/parity","d95"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/interacting/json-rpc-ns/personal",component:d("/1.28.0/interacting/json-rpc-ns/personal","d94"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/interacting/json-rpc-ns/proof",component:d("/1.28.0/interacting/json-rpc-ns/proof","f4d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/interacting/json-rpc-ns/trace",component:d("/1.28.0/interacting/json-rpc-ns/trace","4c2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/interacting/json-rpc-ns/txpool",component:d("/1.28.0/interacting/json-rpc-ns/txpool","2a8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/interacting/json-rpc-ns/web3",component:d("/1.28.0/interacting/json-rpc-ns/web3","eb8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/interacting/json-rpc-server",component:d("/1.28.0/interacting/json-rpc-server","cf4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/monitoring/health-check",component:d("/1.28.0/monitoring/health-check","8ea"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/monitoring/metrics/",component:d("/1.28.0/monitoring/metrics/","e95"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/monitoring/metrics/dotnet-counters",component:d("/1.28.0/monitoring/metrics/dotnet-counters","a66"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/monitoring/metrics/grafana-and-prometheus",component:d("/1.28.0/monitoring/metrics/grafana-and-prometheus","902"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/troubleshooting",component:d("/1.28.0/troubleshooting","d11"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/validators/",component:d("/1.28.0/validators/","415"),exact:!0,sidebar:"tutorialSidebar"},{path:"/1.28.0/validators/aura",component:d("/1.28.0/validators/aura","95f"),exact:!0,sidebar:"tutorialSidebar"}]}]},{path:"/next",component:d("/next","4d6"),routes:[{path:"/next",component:d("/next","52e"),routes:[{path:"/next/",component:d("/next/","e92"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/developers/building-from-source",component:d("/next/developers/building-from-source","1fd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/developers/custom-analytic-tools",component:d("/next/developers/custom-analytic-tools","275"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/developers/plugins",component:d("/next/developers/plugins","9d0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/fundamentals/configuration",component:d("/next/fundamentals/configuration","2f4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/fundamentals/database",component:d("/next/fundamentals/database","ed2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/fundamentals/logs",component:d("/next/fundamentals/logs","612"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/fundamentals/performance-tuning",component:d("/next/fundamentals/performance-tuning","49a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/fundamentals/private-networks",component:d("/next/fundamentals/private-networks","d32"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/fundamentals/pruning",component:d("/next/fundamentals/pruning","f43"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/fundamentals/security",component:d("/next/fundamentals/security","14c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/fundamentals/sync",component:d("/next/fundamentals/sync","0d0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/get-started/installing-nethermind",component:d("/next/get-started/installing-nethermind","5bd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/get-started/migrating-from-geth",component:d("/next/get-started/migrating-from-geth","84d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/get-started/running-node/",component:d("/next/get-started/running-node/","bf9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/get-started/running-node/consensus-clients",component:d("/next/get-started/running-node/consensus-clients","f9b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/get-started/running-node/l2-networks",component:d("/next/get-started/running-node/l2-networks","7c2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/get-started/system-requirements",component:d("/next/get-started/system-requirements","6b1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/interacting/json-rpc-ns/admin",component:d("/next/interacting/json-rpc-ns/admin","676"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/interacting/json-rpc-ns/clique",component:d("/next/interacting/json-rpc-ns/clique","42a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/interacting/json-rpc-ns/debug",component:d("/next/interacting/json-rpc-ns/debug","803"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/interacting/json-rpc-ns/eth",component:d("/next/interacting/json-rpc-ns/eth","eef"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/interacting/json-rpc-ns/net",component:d("/next/interacting/json-rpc-ns/net","758"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/interacting/json-rpc-ns/parity",component:d("/next/interacting/json-rpc-ns/parity","510"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/interacting/json-rpc-ns/personal",component:d("/next/interacting/json-rpc-ns/personal","9a5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/interacting/json-rpc-ns/proof",component:d("/next/interacting/json-rpc-ns/proof","c32"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/interacting/json-rpc-ns/trace",component:d("/next/interacting/json-rpc-ns/trace","7a0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/interacting/json-rpc-ns/txpool",component:d("/next/interacting/json-rpc-ns/txpool","025"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/interacting/json-rpc-ns/web3",component:d("/next/interacting/json-rpc-ns/web3","7be"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/interacting/json-rpc-server",component:d("/next/interacting/json-rpc-server","d09"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/monitoring/health-check",component:d("/next/monitoring/health-check","ee3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/monitoring/metrics/",component:d("/next/monitoring/metrics/","c16"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/monitoring/metrics/dotnet-counters",component:d("/next/monitoring/metrics/dotnet-counters","45e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/monitoring/metrics/grafana-and-prometheus",component:d("/next/monitoring/metrics/grafana-and-prometheus","a02"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/troubleshooting",component:d("/next/troubleshooting","735"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/validators/",component:d("/next/validators/","192"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/validators/aura",component:d("/next/validators/aura","cf4"),exact:!0,sidebar:"tutorialSidebar"}]}]},{path:"/",component:d("/","55c"),routes:[{path:"/",component:d("/","157"),routes:[{path:"/developers/building-from-source",component:d("/developers/building-from-source","821"),exact:!0,sidebar:"tutorialSidebar"},{path:"/developers/custom-analytic-tools",component:d("/developers/custom-analytic-tools","39f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/developers/plugins",component:d("/developers/plugins","3c7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fundamentals/configuration",component:d("/fundamentals/configuration","f93"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fundamentals/database",component:d("/fundamentals/database","569"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fundamentals/logs",component:d("/fundamentals/logs","fbd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fundamentals/performance-tuning",component:d("/fundamentals/performance-tuning","492"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fundamentals/private-networks",component:d("/fundamentals/private-networks","64c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fundamentals/pruning",component:d("/fundamentals/pruning","8ed"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fundamentals/security",component:d("/fundamentals/security","5d0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fundamentals/sync",component:d("/fundamentals/sync","542"),exact:!0,sidebar:"tutorialSidebar"},{path:"/get-started/installing-nethermind",component:d("/get-started/installing-nethermind","ca0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/get-started/migrating-from-geth",component:d("/get-started/migrating-from-geth","c19"),exact:!0,sidebar:"tutorialSidebar"},{path:"/get-started/running-node/",component:d("/get-started/running-node/","241"),exact:!0,sidebar:"tutorialSidebar"},{path:"/get-started/running-node/consensus-clients",component:d("/get-started/running-node/consensus-clients","716"),exact:!0,sidebar:"tutorialSidebar"},{path:"/get-started/running-node/l2-networks",component:d("/get-started/running-node/l2-networks","b5e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/get-started/system-requirements",component:d("/get-started/system-requirements","121"),exact:!0,sidebar:"tutorialSidebar"},{path:"/interacting/json-rpc-ns/admin",component:d("/interacting/json-rpc-ns/admin","1c3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/interacting/json-rpc-ns/clique",component:d("/interacting/json-rpc-ns/clique","f72"),exact:!0,sidebar:"tutorialSidebar"},{path:"/interacting/json-rpc-ns/debug",component:d("/interacting/json-rpc-ns/debug","828"),exact:!0,sidebar:"tutorialSidebar"},{path:"/interacting/json-rpc-ns/eth",component:d("/interacting/json-rpc-ns/eth","b54"),exact:!0,sidebar:"tutorialSidebar"},{path:"/interacting/json-rpc-ns/net",component:d("/interacting/json-rpc-ns/net","872"),exact:!0,sidebar:"tutorialSidebar"},{path:"/interacting/json-rpc-ns/parity",component:d("/interacting/json-rpc-ns/parity","29c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/interacting/json-rpc-ns/personal",component:d("/interacting/json-rpc-ns/personal","cb3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/interacting/json-rpc-ns/proof",component:d("/interacting/json-rpc-ns/proof","531"),exact:!0,sidebar:"tutorialSidebar"},{path:"/interacting/json-rpc-ns/trace",component:d("/interacting/json-rpc-ns/trace","fe5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/interacting/json-rpc-ns/txpool",component:d("/interacting/json-rpc-ns/txpool","3b7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/interacting/json-rpc-ns/web3",component:d("/interacting/json-rpc-ns/web3","c9f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/interacting/json-rpc-server",component:d("/interacting/json-rpc-server","aaa"),exact:!0,sidebar:"tutorialSidebar"},{path:"/monitoring/health-check",component:d("/monitoring/health-check","bb3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/monitoring/metrics/",component:d("/monitoring/metrics/","30c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/monitoring/metrics/dotnet-counters",component:d("/monitoring/metrics/dotnet-counters","c0a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/monitoring/metrics/grafana-and-prometheus",component:d("/monitoring/metrics/grafana-and-prometheus","442"),exact:!0,sidebar:"tutorialSidebar"},{path:"/troubleshooting",component:d("/troubleshooting","181"),exact:!0,sidebar:"tutorialSidebar"},{path:"/validators/",component:d("/validators/","fba"),exact:!0,sidebar:"tutorialSidebar"},{path:"/validators/aura",component:d("/validators/aura","6f9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/",component:d("/","8a3"),exact:!0,sidebar:"tutorialSidebar"}]}]}]},{path:"*",component:d("*")}]},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(6540),a=n(4848);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},8536:(e,t,n)=>{"use strict";var r=n(6540),a=n(5338),o=n(545),i=n(4625),s=n(4784),l=n(8193);const c=[n(119),n(6134),n(6294),n(1043)];var u=n(8328),d=n(6347),p=n(2831),f=n(4848);function m(e){let{children:t}=e;return(0,f.jsx)(f.Fragment,{children:t})}var h=n(5260),g=n(4586),b=n(6025),v=n(6342),y=n(9024),S=n(2131),w=n(4090),x=n(2967),_=n(440),k=n(1463);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,g.A)(),r=(0,S.o)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,f.jsxs)(h.A,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,f.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function j(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,g.A)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,g.A)(),{pathname:r}=(0,d.zy)();return e+(0,_.Ks)((0,b.Ay)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,f.jsxs)(h.A,{children:[(0,f.jsx)("meta",{property:"og:url",content:a}),(0,f.jsx)("link",{rel:"canonical",href:a})]})}function O(){const{i18n:{currentLocale:e}}=(0,g.A)(),{metadata:t,image:n}=(0,v.p)();return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(h.A,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:w.w})]}),n&&(0,f.jsx)(y.be,{image:n}),(0,f.jsx)(j,{}),(0,f.jsx)(E,{}),(0,f.jsx)(k.A,{tag:x.C,locale:e}),(0,f.jsx)(h.A,{children:t.map(((e,t)=>(0,f.jsx)("meta",{...e},t)))})]})}const C=new Map;var P=n(6125),A=n(6988),T=n(205);function I(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const N=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,T.A)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),I("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function R(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,p.u)(u.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class L extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.A.canUseDOM?I("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=I("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),R(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,f.jsx)(N,{previousLocation:this.previousLocation,location:t,children:(0,f.jsx)(d.qh,{location:t,render:()=>e})})}}const D=L,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",B="__docusaurus-base-url-issue-banner-suggestion-container";function z(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${M}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
    \n

    Your Docusaurus site did not load properly.

    \n

    A very common reason is a wrong site baseUrl configuration.

    \n

    Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

    \n

    We suggest trying baseUrl =

    \n
    \n`}(e)).replace(/{let{route:t}=e;return!0===t.exact})))return C.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return C.set(e.pathname,t),{...e,pathname:t}}((0,d.zy)());return(0,f.jsx)(D,{location:e,children:G})}function Y(){return(0,f.jsx)(H.A,{children:(0,f.jsx)(A.l,{children:(0,f.jsxs)(P.x,{children:[(0,f.jsxs)(m,{children:[(0,f.jsx)(q,{}),(0,f.jsx)(O,{}),(0,f.jsx)(U,{}),(0,f.jsx)(K,{})]}),(0,f.jsx)(W,{})]})})})}var Q=n(4054);const Z=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var X=n(6921);const J=new Set,ee=new Set,te=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ne={prefetch:e=>{if(!(e=>!te()&&!ee.has(e)&&!J.has(e))(e))return!1;J.add(e);const t=(0,p.u)(u.A,e).flatMap((e=>{return t=e.route.path,Object.entries(Q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,X.A)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Z(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!te()&&!ee.has(e))(e)&&(ee.add(e),R(e))},re=Object.freeze(ne);function ae(e){let{children:t}=e;return"hash"===s.A.future.experimental_router?(0,f.jsx)(i.I9,{children:t}):(0,f.jsx)(i.Kd,{children:t})}const oe=Boolean(!0);if(l.A.canUseDOM){window.docusaurus=re;const e=document.getElementById("__docusaurus"),t=(0,f.jsx)(o.vd,{children:(0,f.jsx)(ae,{children:(0,f.jsx)(Y,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},i=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(oe)window.docusaurusRoot=a.hydrateRoot(e,t,{onRecoverableError:n});else{const r=a.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};R(window.location.pathname).then((()=>{(0,r.startTransition)(i)}))}},6988:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(6540),a=n(4784);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":false,"path":"/next","mainDocId":"get-started/intro","docs":[{"id":"developers/building-from-source","path":"/next/developers/building-from-source","sidebar":"tutorialSidebar"},{"id":"developers/custom-analytic-tools","path":"/next/developers/custom-analytic-tools","sidebar":"tutorialSidebar"},{"id":"developers/plugins","path":"/next/developers/plugins","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration","path":"/next/fundamentals/configuration","sidebar":"tutorialSidebar"},{"id":"fundamentals/database","path":"/next/fundamentals/database","sidebar":"tutorialSidebar"},{"id":"fundamentals/logs","path":"/next/fundamentals/logs","sidebar":"tutorialSidebar"},{"id":"fundamentals/performance-tuning","path":"/next/fundamentals/performance-tuning","sidebar":"tutorialSidebar"},{"id":"fundamentals/private-networks","path":"/next/fundamentals/private-networks","sidebar":"tutorialSidebar"},{"id":"fundamentals/pruning","path":"/next/fundamentals/pruning","sidebar":"tutorialSidebar"},{"id":"fundamentals/security","path":"/next/fundamentals/security","sidebar":"tutorialSidebar"},{"id":"fundamentals/sync","path":"/next/fundamentals/sync","sidebar":"tutorialSidebar"},{"id":"get-started/installing-nethermind","path":"/next/get-started/installing-nethermind","sidebar":"tutorialSidebar"},{"id":"get-started/intro","path":"/next/","sidebar":"tutorialSidebar"},{"id":"get-started/migrating-from-geth","path":"/next/get-started/migrating-from-geth","sidebar":"tutorialSidebar"},{"id":"get-started/running-node/consensus-clients","path":"/next/get-started/running-node/consensus-clients","sidebar":"tutorialSidebar"},{"id":"get-started/running-node/l2-networks","path":"/next/get-started/running-node/l2-networks","sidebar":"tutorialSidebar"},{"id":"get-started/running-node/running-node","path":"/next/get-started/running-node/","sidebar":"tutorialSidebar"},{"id":"get-started/system-requirements","path":"/next/get-started/system-requirements","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/admin","path":"/next/interacting/json-rpc-ns/admin","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/clique","path":"/next/interacting/json-rpc-ns/clique","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/debug","path":"/next/interacting/json-rpc-ns/debug","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/eth","path":"/next/interacting/json-rpc-ns/eth","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/net","path":"/next/interacting/json-rpc-ns/net","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/parity","path":"/next/interacting/json-rpc-ns/parity","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/personal","path":"/next/interacting/json-rpc-ns/personal","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/proof","path":"/next/interacting/json-rpc-ns/proof","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/trace","path":"/next/interacting/json-rpc-ns/trace","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/txpool","path":"/next/interacting/json-rpc-ns/txpool","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/web3","path":"/next/interacting/json-rpc-ns/web3","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-server","path":"/next/interacting/json-rpc-server","sidebar":"tutorialSidebar"},{"id":"monitoring/health-check","path":"/next/monitoring/health-check","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/dotnet-counters","path":"/next/monitoring/metrics/dotnet-counters","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/grafana-and-prometheus","path":"/next/monitoring/metrics/grafana-and-prometheus","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/metrics","path":"/next/monitoring/metrics/","sidebar":"tutorialSidebar"},{"id":"troubleshooting","path":"/next/troubleshooting","sidebar":"tutorialSidebar"},{"id":"validators/aura","path":"/next/validators/aura","sidebar":"tutorialSidebar"},{"id":"validators/validators","path":"/next/validators/","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/next/","label":"Introduction"}}}},{"name":"1.29.0","label":"1.29.0","isLast":true,"path":"/","mainDocId":"get-started/intro","docs":[{"id":"developers/building-from-source","path":"/developers/building-from-source","sidebar":"tutorialSidebar"},{"id":"developers/custom-analytic-tools","path":"/developers/custom-analytic-tools","sidebar":"tutorialSidebar"},{"id":"developers/plugins","path":"/developers/plugins","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration","path":"/fundamentals/configuration","sidebar":"tutorialSidebar"},{"id":"fundamentals/database","path":"/fundamentals/database","sidebar":"tutorialSidebar"},{"id":"fundamentals/logs","path":"/fundamentals/logs","sidebar":"tutorialSidebar"},{"id":"fundamentals/performance-tuning","path":"/fundamentals/performance-tuning","sidebar":"tutorialSidebar"},{"id":"fundamentals/private-networks","path":"/fundamentals/private-networks","sidebar":"tutorialSidebar"},{"id":"fundamentals/pruning","path":"/fundamentals/pruning","sidebar":"tutorialSidebar"},{"id":"fundamentals/security","path":"/fundamentals/security","sidebar":"tutorialSidebar"},{"id":"fundamentals/sync","path":"/fundamentals/sync","sidebar":"tutorialSidebar"},{"id":"get-started/installing-nethermind","path":"/get-started/installing-nethermind","sidebar":"tutorialSidebar"},{"id":"get-started/intro","path":"/","sidebar":"tutorialSidebar"},{"id":"get-started/migrating-from-geth","path":"/get-started/migrating-from-geth","sidebar":"tutorialSidebar"},{"id":"get-started/running-node/consensus-clients","path":"/get-started/running-node/consensus-clients","sidebar":"tutorialSidebar"},{"id":"get-started/running-node/l2-networks","path":"/get-started/running-node/l2-networks","sidebar":"tutorialSidebar"},{"id":"get-started/running-node/running-node","path":"/get-started/running-node/","sidebar":"tutorialSidebar"},{"id":"get-started/system-requirements","path":"/get-started/system-requirements","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/admin","path":"/interacting/json-rpc-ns/admin","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/clique","path":"/interacting/json-rpc-ns/clique","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/debug","path":"/interacting/json-rpc-ns/debug","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/eth","path":"/interacting/json-rpc-ns/eth","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/net","path":"/interacting/json-rpc-ns/net","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/parity","path":"/interacting/json-rpc-ns/parity","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/personal","path":"/interacting/json-rpc-ns/personal","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/proof","path":"/interacting/json-rpc-ns/proof","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/trace","path":"/interacting/json-rpc-ns/trace","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/txpool","path":"/interacting/json-rpc-ns/txpool","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/web3","path":"/interacting/json-rpc-ns/web3","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-server","path":"/interacting/json-rpc-server","sidebar":"tutorialSidebar"},{"id":"monitoring/health-check","path":"/monitoring/health-check","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/dotnet-counters","path":"/monitoring/metrics/dotnet-counters","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/grafana-and-prometheus","path":"/monitoring/metrics/grafana-and-prometheus","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/metrics","path":"/monitoring/metrics/","sidebar":"tutorialSidebar"},{"id":"troubleshooting","path":"/troubleshooting","sidebar":"tutorialSidebar"},{"id":"validators/aura","path":"/validators/aura","sidebar":"tutorialSidebar"},{"id":"validators/validators","path":"/validators/","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/","label":"Introduction"}}}},{"name":"1.28.0","label":"1.28.0","isLast":false,"path":"/1.28.0","mainDocId":"get-started/intro","docs":[{"id":"developers/building-from-source","path":"/1.28.0/developers/building-from-source","sidebar":"tutorialSidebar"},{"id":"developers/custom-analytic-tools","path":"/1.28.0/developers/custom-analytic-tools","sidebar":"tutorialSidebar"},{"id":"developers/plugins","path":"/1.28.0/developers/plugins","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration","path":"/1.28.0/fundamentals/configuration","sidebar":"tutorialSidebar"},{"id":"fundamentals/database","path":"/1.28.0/fundamentals/database","sidebar":"tutorialSidebar"},{"id":"fundamentals/logs","path":"/1.28.0/fundamentals/logs","sidebar":"tutorialSidebar"},{"id":"fundamentals/performance-tuning","path":"/1.28.0/fundamentals/performance-tuning","sidebar":"tutorialSidebar"},{"id":"fundamentals/private-networks","path":"/1.28.0/fundamentals/private-networks","sidebar":"tutorialSidebar"},{"id":"fundamentals/pruning","path":"/1.28.0/fundamentals/pruning","sidebar":"tutorialSidebar"},{"id":"fundamentals/security","path":"/1.28.0/fundamentals/security","sidebar":"tutorialSidebar"},{"id":"fundamentals/sync","path":"/1.28.0/fundamentals/sync","sidebar":"tutorialSidebar"},{"id":"get-started/consensus-clients","path":"/1.28.0/get-started/consensus-clients","sidebar":"tutorialSidebar"},{"id":"get-started/installing-nethermind","path":"/1.28.0/get-started/installing-nethermind","sidebar":"tutorialSidebar"},{"id":"get-started/intro","path":"/1.28.0/","sidebar":"tutorialSidebar"},{"id":"get-started/migrating-from-geth","path":"/1.28.0/get-started/migrating-from-geth","sidebar":"tutorialSidebar"},{"id":"get-started/system-requirements","path":"/1.28.0/get-started/system-requirements","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/admin","path":"/1.28.0/interacting/json-rpc-ns/admin","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/clique","path":"/1.28.0/interacting/json-rpc-ns/clique","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/debug","path":"/1.28.0/interacting/json-rpc-ns/debug","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/eth","path":"/1.28.0/interacting/json-rpc-ns/eth","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/net","path":"/1.28.0/interacting/json-rpc-ns/net","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/parity","path":"/1.28.0/interacting/json-rpc-ns/parity","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/personal","path":"/1.28.0/interacting/json-rpc-ns/personal","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/proof","path":"/1.28.0/interacting/json-rpc-ns/proof","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/trace","path":"/1.28.0/interacting/json-rpc-ns/trace","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/txpool","path":"/1.28.0/interacting/json-rpc-ns/txpool","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/web3","path":"/1.28.0/interacting/json-rpc-ns/web3","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-server","path":"/1.28.0/interacting/json-rpc-server","sidebar":"tutorialSidebar"},{"id":"monitoring/health-check","path":"/1.28.0/monitoring/health-check","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/dotnet-counters","path":"/1.28.0/monitoring/metrics/dotnet-counters","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/grafana-and-prometheus","path":"/1.28.0/monitoring/metrics/grafana-and-prometheus","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/metrics","path":"/1.28.0/monitoring/metrics/","sidebar":"tutorialSidebar"},{"id":"troubleshooting","path":"/1.28.0/troubleshooting","sidebar":"tutorialSidebar"},{"id":"validators/aura","path":"/1.28.0/validators/aura","sidebar":"tutorialSidebar"},{"id":"validators/validators","path":"/1.28.0/validators/","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/1.28.0/","label":"Introduction"}}}},{"name":"1.27.0","label":"1.27.0","isLast":false,"path":"/1.27.0","mainDocId":"get-started/intro","docs":[{"id":"developers/building-from-source","path":"/1.27.0/developers/building-from-source","sidebar":"tutorialSidebar"},{"id":"developers/custom-analytic-tools","path":"/1.27.0/developers/custom-analytic-tools","sidebar":"tutorialSidebar"},{"id":"developers/plugins","path":"/1.27.0/developers/plugins","sidebar":"tutorialSidebar"},{"id":"faq","path":"/1.27.0/faq","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration","path":"/1.27.0/fundamentals/configuration","sidebar":"tutorialSidebar"},{"id":"fundamentals/database","path":"/1.27.0/fundamentals/database","sidebar":"tutorialSidebar"},{"id":"fundamentals/logs","path":"/1.27.0/fundamentals/logs","sidebar":"tutorialSidebar"},{"id":"fundamentals/performance-tuning","path":"/1.27.0/fundamentals/performance-tuning","sidebar":"tutorialSidebar"},{"id":"fundamentals/private-networks","path":"/1.27.0/fundamentals/private-networks","sidebar":"tutorialSidebar"},{"id":"fundamentals/pruning","path":"/1.27.0/fundamentals/pruning","sidebar":"tutorialSidebar"},{"id":"fundamentals/security","path":"/1.27.0/fundamentals/security","sidebar":"tutorialSidebar"},{"id":"fundamentals/sync","path":"/1.27.0/fundamentals/sync","sidebar":"tutorialSidebar"},{"id":"get-started/consensus-clients","path":"/1.27.0/get-started/consensus-clients","sidebar":"tutorialSidebar"},{"id":"get-started/installing-nethermind","path":"/1.27.0/get-started/installing-nethermind","sidebar":"tutorialSidebar"},{"id":"get-started/intro","path":"/1.27.0/","sidebar":"tutorialSidebar"},{"id":"get-started/migrating-from-geth","path":"/1.27.0/get-started/migrating-from-geth","sidebar":"tutorialSidebar"},{"id":"get-started/system-requirements","path":"/1.27.0/get-started/system-requirements","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/admin","path":"/1.27.0/interacting/json-rpc-ns/admin","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/clique","path":"/1.27.0/interacting/json-rpc-ns/clique","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/debug","path":"/1.27.0/interacting/json-rpc-ns/debug","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/eth","path":"/1.27.0/interacting/json-rpc-ns/eth","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/net","path":"/1.27.0/interacting/json-rpc-ns/net","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/parity","path":"/1.27.0/interacting/json-rpc-ns/parity","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/personal","path":"/1.27.0/interacting/json-rpc-ns/personal","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/proof","path":"/1.27.0/interacting/json-rpc-ns/proof","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/trace","path":"/1.27.0/interacting/json-rpc-ns/trace","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/txpool","path":"/1.27.0/interacting/json-rpc-ns/txpool","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/web3","path":"/1.27.0/interacting/json-rpc-ns/web3","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-server","path":"/1.27.0/interacting/json-rpc-server","sidebar":"tutorialSidebar"},{"id":"monitoring/health-check","path":"/1.27.0/monitoring/health-check","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/dotnet-counters","path":"/1.27.0/monitoring/metrics/dotnet-counters","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/grafana-and-prometheus","path":"/1.27.0/monitoring/metrics/grafana-and-prometheus","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/metrics","path":"/1.27.0/monitoring/metrics/","sidebar":"tutorialSidebar"},{"id":"troubleshooting","path":"/1.27.0/troubleshooting","sidebar":"tutorialSidebar"},{"id":"validators/aura","path":"/1.27.0/validators/aura","sidebar":"tutorialSidebar"},{"id":"validators/validators","path":"/1.27.0/validators/","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/1.27.0/","label":"Introduction"}}}},{"name":"1.26.0","label":"1.26.0","isLast":false,"path":"/1.26.0","mainDocId":"get-started/intro","docs":[{"id":"developers/building-from-source","path":"/1.26.0/developers/building-from-source","sidebar":"tutorialSidebar"},{"id":"developers/custom-analytic-tools","path":"/1.26.0/developers/custom-analytic-tools","sidebar":"tutorialSidebar"},{"id":"developers/plugins","path":"/1.26.0/developers/plugins","sidebar":"tutorialSidebar"},{"id":"faq","path":"/1.26.0/faq","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration","path":"/1.26.0/fundamentals/configuration","sidebar":"tutorialSidebar"},{"id":"fundamentals/database","path":"/1.26.0/fundamentals/database","sidebar":"tutorialSidebar"},{"id":"fundamentals/logs","path":"/1.26.0/fundamentals/logs","sidebar":"tutorialSidebar"},{"id":"fundamentals/performance-tuning","path":"/1.26.0/fundamentals/performance-tuning","sidebar":"tutorialSidebar"},{"id":"fundamentals/private-networks","path":"/1.26.0/fundamentals/private-networks","sidebar":"tutorialSidebar"},{"id":"fundamentals/pruning","path":"/1.26.0/fundamentals/pruning","sidebar":"tutorialSidebar"},{"id":"fundamentals/security","path":"/1.26.0/fundamentals/security","sidebar":"tutorialSidebar"},{"id":"fundamentals/sync","path":"/1.26.0/fundamentals/sync","sidebar":"tutorialSidebar"},{"id":"get-started/consensus-clients","path":"/1.26.0/get-started/consensus-clients","sidebar":"tutorialSidebar"},{"id":"get-started/installing-nethermind","path":"/1.26.0/get-started/installing-nethermind","sidebar":"tutorialSidebar"},{"id":"get-started/intro","path":"/1.26.0/","sidebar":"tutorialSidebar"},{"id":"get-started/migrating-from-geth","path":"/1.26.0/get-started/migrating-from-geth","sidebar":"tutorialSidebar"},{"id":"get-started/system-requirements","path":"/1.26.0/get-started/system-requirements","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/admin","path":"/1.26.0/interacting/json-rpc-ns/admin","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/clique","path":"/1.26.0/interacting/json-rpc-ns/clique","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/debug","path":"/1.26.0/interacting/json-rpc-ns/debug","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/eth","path":"/1.26.0/interacting/json-rpc-ns/eth","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/net","path":"/1.26.0/interacting/json-rpc-ns/net","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/parity","path":"/1.26.0/interacting/json-rpc-ns/parity","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/personal","path":"/1.26.0/interacting/json-rpc-ns/personal","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/proof","path":"/1.26.0/interacting/json-rpc-ns/proof","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/trace","path":"/1.26.0/interacting/json-rpc-ns/trace","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/txpool","path":"/1.26.0/interacting/json-rpc-ns/txpool","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/web3","path":"/1.26.0/interacting/json-rpc-ns/web3","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-server","path":"/1.26.0/interacting/json-rpc-server","sidebar":"tutorialSidebar"},{"id":"monitoring/health-check","path":"/1.26.0/monitoring/health-check","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/dotnet-counters","path":"/1.26.0/monitoring/metrics/dotnet-counters","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/grafana-and-prometheus","path":"/1.26.0/monitoring/metrics/grafana-and-prometheus","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/metrics","path":"/1.26.0/monitoring/metrics/","sidebar":"tutorialSidebar"},{"id":"troubleshooting","path":"/1.26.0/troubleshooting","sidebar":"tutorialSidebar"},{"id":"validators/aura","path":"/1.26.0/validators/aura","sidebar":"tutorialSidebar"},{"id":"validators/validators","path":"/1.26.0/validators/","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/1.26.0/","label":"Introduction"}}}},{"name":"1.25.4","label":"1.25.4","isLast":false,"path":"/1.25.4","mainDocId":"get-started/intro","docs":[{"id":"developers/building-from-source","path":"/1.25.4/developers/building-from-source","sidebar":"tutorialSidebar"},{"id":"developers/custom-analytic-tools","path":"/1.25.4/developers/custom-analytic-tools","sidebar":"tutorialSidebar"},{"id":"developers/plugins","path":"/1.25.4/developers/plugins","sidebar":"tutorialSidebar"},{"id":"faq","path":"/1.25.4/faq","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration","path":"/1.25.4/fundamentals/configuration","sidebar":"tutorialSidebar"},{"id":"fundamentals/database","path":"/1.25.4/fundamentals/database","sidebar":"tutorialSidebar"},{"id":"fundamentals/logs","path":"/1.25.4/fundamentals/logs","sidebar":"tutorialSidebar"},{"id":"fundamentals/performance-tuning","path":"/1.25.4/fundamentals/performance-tuning","sidebar":"tutorialSidebar"},{"id":"fundamentals/private-networks","path":"/1.25.4/fundamentals/private-networks","sidebar":"tutorialSidebar"},{"id":"fundamentals/pruning","path":"/1.25.4/fundamentals/pruning","sidebar":"tutorialSidebar"},{"id":"fundamentals/security","path":"/1.25.4/fundamentals/security","sidebar":"tutorialSidebar"},{"id":"fundamentals/sync","path":"/1.25.4/fundamentals/sync","sidebar":"tutorialSidebar"},{"id":"get-started/consensus-clients","path":"/1.25.4/get-started/consensus-clients","sidebar":"tutorialSidebar"},{"id":"get-started/installing-nethermind","path":"/1.25.4/get-started/installing-nethermind","sidebar":"tutorialSidebar"},{"id":"get-started/intro","path":"/1.25.4/","sidebar":"tutorialSidebar"},{"id":"get-started/migrating-from-geth","path":"/1.25.4/get-started/migrating-from-geth","sidebar":"tutorialSidebar"},{"id":"get-started/system-requirements","path":"/1.25.4/get-started/system-requirements","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/admin","path":"/1.25.4/interacting/json-rpc-ns/admin","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/clique","path":"/1.25.4/interacting/json-rpc-ns/clique","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/debug","path":"/1.25.4/interacting/json-rpc-ns/debug","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/eth","path":"/1.25.4/interacting/json-rpc-ns/eth","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/net","path":"/1.25.4/interacting/json-rpc-ns/net","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/parity","path":"/1.25.4/interacting/json-rpc-ns/parity","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/personal","path":"/1.25.4/interacting/json-rpc-ns/personal","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/proof","path":"/1.25.4/interacting/json-rpc-ns/proof","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/trace","path":"/1.25.4/interacting/json-rpc-ns/trace","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/txpool","path":"/1.25.4/interacting/json-rpc-ns/txpool","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-ns/web3","path":"/1.25.4/interacting/json-rpc-ns/web3","sidebar":"tutorialSidebar"},{"id":"interacting/json-rpc-server","path":"/1.25.4/interacting/json-rpc-server","sidebar":"tutorialSidebar"},{"id":"monitoring/health-check","path":"/1.25.4/monitoring/health-check","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/dotnet-counters","path":"/1.25.4/monitoring/metrics/dotnet-counters","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/grafana-and-prometheus","path":"/1.25.4/monitoring/metrics/grafana-and-prometheus","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics/metrics","path":"/1.25.4/monitoring/metrics/","sidebar":"tutorialSidebar"},{"id":"troubleshooting","path":"/1.25.4/troubleshooting","sidebar":"tutorialSidebar"},{"id":"validators/aura","path":"/1.25.4/validators/aura","sidebar":"tutorialSidebar"},{"id":"validators/validators","path":"/1.25.4/validators/","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/1.25.4/","label":"Introduction"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(2654);const l=JSON.parse('{"docusaurusVersion":"3.5.2","siteVersion":"1.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.5.2"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.5.2"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.5.2"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.5.2"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"3.5.2"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"3.5.2"}}}');var c=n(4848);const u={siteConfig:a.A,siteMetadata:l,globalData:o,i18n:i,codeTranslations:s},d=r.createContext(u);function p(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},7489:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var r=n(6540),a=n(8193),o=n(5260),i=n(440),s=n(1957),l=n(3102),c=n(4848);function u(e){let{error:t,tryAgain:n}=e;return(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,c.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,c.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,c.jsx)(d,{error:t})]})}function d(e){let{error:t}=e;const n=(0,i.rA)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function p(e){let{children:t}=e;return(0,c.jsx)(l.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function f(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)(p,{children:(0,c.jsxs)(h,{fallback:()=>(0,c.jsx)(u,{error:t,tryAgain:n}),children:[(0,c.jsx)(o.A,{children:(0,c.jsx)("title",{children:"Page Error"})}),(0,c.jsx)(s.A,{children:(0,c.jsx)(u,{error:t,tryAgain:n})})]})})}const m=e=>(0,c.jsx)(f,{...e});class h extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??m)(e)}return e??null}}},8193:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);var r=n(545),a=n(4848);function o(e){return(0,a.jsx)(r.mg,{...e})}},8774:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(6540),a=n(4625),o=n(440),i=n(4586),s=n(6654),l=n(8193),c=n(3427),u=n(6025),d=n(4848);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:b=!0,...v}=e;const{siteConfig:y}=(0,i.A)(),{trailingSlash:S,baseUrl:w}=y,x=y.future.experimental_router,{withBaseUrl:_}=(0,u.hH)(),k=(0,c.A)(),E=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>E.current));const j=p||f;const O=(0,s.A)(j),C=j?.replace("pathname://","");let P=void 0!==C?(A=C,b&&(e=>e.startsWith("/"))(A)?_(A):A):void 0;var A;"hash"===x&&P?.startsWith("./")&&(P=P?.slice(1)),P&&O&&(P=(0,o.Ks)(P,{trailingSlash:S,baseUrl:w}));const T=(0,r.useRef)(!1),I=n?a.k2:a.N_,N=l.A.canUseIntersectionObserver,R=(0,r.useRef)(),L=()=>{T.current||null==P||(window.docusaurus.preload(P),T.current=!0)};(0,r.useEffect)((()=>(!N&&O&&l.A.canUseDOM&&null!=P&&window.docusaurus.prefetch(P),()=>{N&&R.current&&R.current.disconnect()})),[R,P,N,O]);const D=P?.startsWith("#")??!1,M=!v.target||"_self"===v.target,F=!P||!O||!M||D&&"hash"!==x;g||!D&&F||k.collectLink(P),v.id&&k.collectAnchor(v.id);const B={};return F?(0,d.jsx)("a",{ref:E,href:P,...j&&!O&&{target:"_blank",rel:"noopener noreferrer"},...v,...B}):(0,d.jsx)(I,{...v,onMouseEnter:L,onTouchStart:L,innerRef:e=>{E.current=e,N&&e&&O&&(R.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(R.current.unobserve(e),R.current.disconnect(),null!=P&&window.docusaurus.prefetch(P))}))})),R.current.observe(e))},to:P,...n&&{isActive:h,activeClassName:m},...B})}const f=r.forwardRef(p)},1312:(e,t,n)=>{"use strict";n.d(t,{A:()=>c,T:()=>l});var r=n(6540),a=n(4848);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(2654);function s(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return o(s({message:n,id:r}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=s({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},7065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},6654:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},6025:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>s,hH:()=>i});var r=n(6540),a=n(4586),o=n(6654);function i(){const{siteConfig:e}=(0,a.A)(),{baseUrl:t,url:n}=e,i=e.future.experimental_router,s=(0,r.useCallback)(((e,r)=>function(e){let{siteUrl:t,baseUrl:n,url:r,options:{forcePrependBaseUrl:a=!1,absolute:i=!1}={},router:s}=e;if(!r||r.startsWith("#")||(0,o.z)(r))return r;if("hash"===s)return r.startsWith("/")?`.${r}`:`./${r}`;if(a)return n+r.replace(/^\//,"");if(r===n.replace(/\/$/,""))return n;const l=r.startsWith(n)?r:n+r.replace(/^\//,"");return i?t+l:l}({siteUrl:n,baseUrl:t,url:e,options:r,router:i})),[n,t,i]);return{withBaseUrl:s}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},3427:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(6540);n(4848);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},4586:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6988);function o(){return(0,r.useContext)(a.o)}},2303:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6125);function o(){return(0,r.useContext)(a.o)}},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540);const a=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},6921:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const s=a?`${a}.${o}`:o;r(i)?e(i,s):t[s]=i}))}(e),t}},3102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(6540),a=n(4848);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),s=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,a.jsx)(o.Provider,{value:s,children:t})}},3886:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>g,XK:()=>y,g1:()=>v});var r=n(6540),a=n(4070),o=n(7065),i=n(6342),s=n(679),l=n(9532),c=n(4848);const u=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,s.Wf)(u(e),{persistence:t}).set(n)},read:(e,t)=>(0,s.Wf)(u(e),{persistence:t}).get(),clear:(e,t)=>{(0,s.Wf)(u(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=r.createContext(null);function m(){const e=(0,a.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,s]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=m();return(0,c.jsx)(f.Provider,{value:n,children:t})}function g(e){let{children:t}=e;return(0,c.jsx)(h,{children:t})}function b(){const e=(0,r.useContext)(f);if(!e)throw new l.dV("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.W);const t=(0,a.ht)(e),[n,i]=b(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function y(){const e=(0,a.Gy)(),[t]=b();function n(n){const r=e[n],{preferredVersionName:a}=t[n];return r.versions.find((e=>e.name===a))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},2565:(e,t,n)=>{"use strict";n.d(t,{k:()=>o,v:()=>i});var r=n(4070),a=n(3886);function o(e,t){return`docs-${e}-${t}`}function i(){const e=(0,r.Gy)(),t=(0,r.gk)(),n=(0,a.XK)();return[...Object.keys(e).map((function(r){const a=t?.activePlugin.pluginId===r?t.activeVersion:void 0,i=n[r],s=e[r].versions.find((e=>e.isLast));return o(r,(a??i??s).name)}))]}},609:(e,t,n)=>{"use strict";n.d(t,{V:()=>l,t:()=>c});var r=n(6540),a=n(9532),o=n(4848);const i=Symbol("EmptyContext"),s=r.createContext(i);function l(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(s.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(s);if(e===i)throw new a.dV("DocsSidebarProvider");return e}},6972:(e,t,n)=>{"use strict";n.d(t,{B5:()=>_,Nr:()=>p,OF:()=>y,QB:()=>x,Vd:()=>S,Y:()=>b,fW:()=>w,w8:()=>h});var r=n(6540),a=n(6347),o=n(2831),i=n(4070),s=n(9169),l=n(1682),c=n(3886),u=n(3025),d=n(609);function p(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=p(t);if(e)return e}}(e):void 0:e.href}const f=(e,t)=>void 0!==e&&(0,s.ys)(e,t),m=(e,t)=>e.some((e=>h(e,t)));function h(e,t){return"link"===e.type?f(e.href,t):"category"===e.type&&(f(e.href,t)||m(e.items,t))}function g(e,t){switch(e.type){case"category":return h(e,t)||e.items.some((e=>g(e,t)));case"link":return!e.unlisted||h(e,t);default:return!0}}function b(e,t){return(0,r.useMemo)((()=>e.filter((e=>g(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,s.ys)(o.href,n)||e(o.items))||"link"===o.type&&(0,s.ys)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function y(){const e=(0,d.t)(),{pathname:t}=(0,a.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function S(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,c.g1)(e),a=(0,i.r7)(e);return(0,r.useMemo)((()=>(0,l.sb)([t,n,a].filter(Boolean))),[t,n,a])}function w(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function x(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,l.sb)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function _(e){let{route:t}=e;const n=(0,a.zy)(),r=(0,u.r)(),i=t.routes,s=i.find((e=>(0,a.B6)(n.pathname,e)));if(!s)return null;const l=s.sidebar,c=l?r.docsSidebars[l]:void 0;return{docElement:(0,o.v)(i),sidebarName:l,sidebarItems:c}}},3025:(e,t,n)=>{"use strict";n.d(t,{n:()=>s,r:()=>l});var r=n(6540),a=n(9532),o=n(4848);const i=r.createContext(null);function s(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(null===e)throw new a.dV("DocsVersionProvider");return e}},4070:(e,t,n)=>{"use strict";n.d(t,{zK:()=>b,vT:()=>f,gk:()=>m,Gy:()=>d,HW:()=>v,ht:()=>p,r7:()=>g,jh:()=>h});var r=n(6347),a=n(4586),o=n(7065);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const s=e=>e.versions.find((e=>e.isLast));function l(e,t){return[...e.versions].sort(((e,t)=>e.path===t.path?0:e.path.includes(t.path)?-1:t.path.includes(e.path)?1:0)).find((e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})))}function c(e,t){const n=l(e,t),a=n?.docs.find((e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},d=()=>i("docusaurus-plugin-content-docs")??u,p=e=>{try{return function(e,t,n){void 0===t&&(t=o.W),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function f(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.zy)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.B6)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function m(e){void 0===e&&(e={});const t=f(e),{pathname:n}=(0,r.zy)();if(!t)return;return{activePlugin:t,activeVersion:l(t.pluginData,n)}}function h(e){return p(e).versions}function g(e){const t=p(e);return s(t)}function b(e){const t=p(e),{pathname:n}=(0,r.zy)();return c(t,n)}function v(e){const t=p(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=s(e);return{latestDocSuggestion:c(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},6294:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(5947),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},6134:(e,t,n)=>{"use strict";var r=n(1765),a=n(4784);!function(e){const{themeConfig:{prism:t}}=a.A,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(9700),n(3456)(`./prism-${e}`)})),delete globalThis.Prism}(r.My)},1107:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(4164),a=n(1312),o=n(6342),i=n(8774),s=n(3427);const l={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var c=n(4848);function u(e){let{as:t,id:n,...u}=e;const d=(0,s.A)(),{navbar:{hideOnScroll:p}}=(0,o.p)();if("h1"===t||!n)return(0,c.jsx)(t,{...u,id:void 0});d.collectAnchor(n);const f=(0,a.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,c.jsxs)(t,{...u,className:(0,r.A)("anchor",p?l.anchorWithHideOnScrollNavbar:l.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,c.jsx)(i.A,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},3186:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);const r={iconExternalLink:"iconExternalLink_nPIU"};var a=n(4848);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},1957:(e,t,n)=>{"use strict";n.d(t,{A:()=>jt});var r=n(6540),a=n(4164),o=n(7489),i=n(9024),s=n(6347),l=n(1312),c=n(5062),u=n(4848);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.W6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.$)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,l.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??m,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var g=n(7559),b=n(4090);const v={skipToContent:"skipToContent_fXgn"};function y(){return(0,u.jsx)(h,{className:v.skipToContent})}var S=n(6342),w=n(5041);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,u.jsx)("g",{stroke:r,strokeWidth:a,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const _={closeButton:"closeButton_CVFx"};function k(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,l.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.A)("clean-btn close",_.closeButton,e.className),children:(0,u.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const E={content:"content_knG7"};function j(e){const{announcementBar:t}=(0,S.p)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,a.A)(E.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const O={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function C(){const{announcementBar:e}=(0,S.p)(),{isActive:t,close:n}=(0,w.M)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:o}=e;return(0,u.jsxs)("div",{className:O.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,u.jsx)("div",{className:O.announcementBarPlaceholder}),(0,u.jsx)(j,{className:O.announcementBarContent}),o&&(0,u.jsx)(k,{onClick:n,className:O.announcementBarClose})]})}var P=n(2069),A=n(3104);var T=n(9532),I=n(5600);const N=r.createContext(null);function R(e){let{children:t}=e;const n=function(){const e=(0,P.M)(),t=(0,I.YL)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,T.ZC)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,u.jsx)(N.Provider,{value:n,children:t})}function L(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function D(){const e=(0,r.useContext)(N);if(!e)throw new T.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,I.YL)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:L(o)})),[a,o,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=D();return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,a.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var F=n(5293),B=n(2303);function z(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:o}=e;const i=(0,B.A)(),s=(0,l.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,l.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,a.A)(U.toggle,t),children:(0,u.jsxs)("button",{className:(0,a.A)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:s,"aria-label":s,"aria-live":"polite",children:[(0,u.jsx)(z,{className:(0,a.A)(U.toggleIcon,U.lightToggleIcon)}),(0,u.jsx)($,{className:(0,a.A)(U.toggleIcon,U.darkToggleIcon)})]})})}const H=r.memo(q),V={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function W(e){let{className:t}=e;const n=(0,S.p)().navbar.style,r=(0,S.p)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,F.G)();return r?null:(0,u.jsx)(H,{className:t,buttonClassName:"dark"===n?V.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var G=n(3465);function K(){return(0,u.jsx)(G.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Y(){const e=(0,P.M)();return(0,u.jsx)("button",{type:"button","aria-label":(0,l.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,u.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Q(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(K,{}),(0,u.jsx)(W,{className:"margin-right--md"}),(0,u.jsx)(Y,{})]})}var Z=n(8774),X=n(6025),J=n(6654),ee=n(1252),te=n(3186);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:a,label:o,html:i,isDropdownLink:s,prependBaseUrlToHref:l,...c}=e;const d=(0,X.Ay)(r),p=(0,X.Ay)(t),f=(0,X.Ay)(a,{forcePrependBaseUrl:!0}),m=o&&a&&!(0,J.A)(a),h=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[o,m&&(0,u.jsx)(te.A,{...s&&{width:12,height:12}})]})};return a?(0,u.jsx)(Z.A,{href:l?f:a,...c,...h}):(0,u.jsx)(Z.A,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?(0,ee.G)(n,t.pathname):t.pathname.startsWith(p)},...c,...h})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,u.jsx)(ne,{className:(0,a.A)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,u.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(ne,{className:(0,a.A)("menu__link",t),...r})})}function oe(e){let{mobile:t=!1,position:n,...r}=e;const a=t?ae:re;return(0,u.jsx)(a,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(1422),se=n(9169),le=n(4586);const ce={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ue(e,t){return e.some((e=>function(e,t){return!!(0,se.ys)(e.to,t)||!!(0,ee.G)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const l=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[l]),(0,u.jsxs)("div",{ref:l,className:(0,a.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c}),children:[(0,u.jsx)(ne,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,a.A)("navbar__link",o),...s,onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))},children:s.children??s.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(Fe,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:o,onClick:i,...l}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,le.A)(),{pathname:t}=(0,s.zy)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),(0,u.jsxs)("li",{className:(0,a.A)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsx)(ne,{role:"button",className:(0,a.A)(ce.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...l,onClick:e=>{e.preventDefault(),f()},children:l.children??l.label}),(0,u.jsx)(ie.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(Fe,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,u.jsx)(r,{...n})}var me=n(2131);function he(e){let{width:t=20,height:n=20,...r}=e;return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const ge="iconLanguage_nlXk";var be=n(961),ve=n(3219),ye=n(5260),Se=n(4255),we=n(1062),xe=n(2967),_e=n(2565);function ke(){return[`language:${(0,le.A)().i18n.currentLocale}`,function(){const e=(0,_e.v)();return[xe.C,...e]}().map((e=>`docusaurus_tag:${e}`))]}const Ee={button:{buttonText:(0,l.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,l.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,l.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,l.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,l.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,l.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,l.T)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,l.T)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,l.T)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,l.T)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,l.T)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,l.T)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,l.T)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,l.T)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,l.T)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,l.T)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,l.T)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,l.T)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,l.T)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,l.T)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,l.T)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,l.T)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,l.T)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,l.T)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,l.T)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,l.T)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,l.T)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let je=null;function Oe(e){let{hit:t,children:n}=e;return(0,u.jsx)(Z.A,{to:t.url,children:n})}function Ce(e){let{state:t,onClose:n}=e;const r=(0,Se.w)();return(0,u.jsx)(Z.A,{to:r(t.query),onClick:n,children:(0,u.jsx)(l.A,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits},children:"See all {count} results"})})}function Pe(e){let{contextualSearch:t,externalUrlRegex:a,...o}=e;const{siteMetadata:i}=(0,le.A)(),l=(0,we.C)(),c=ke(),d=o.searchParameters?.facetFilters??[],p=t?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(c,d):d,f={...o.searchParameters,facetFilters:p},m=(0,s.W6)(),h=(0,r.useRef)(null),g=(0,r.useRef)(null),[b,v]=(0,r.useState)(!1),[y,S]=(0,r.useState)(void 0),w=(0,r.useCallback)((()=>je?Promise.resolve():Promise.all([n.e(8158).then(n.bind(n,8158)),Promise.all([n.e(1869),n.e(8913)]).then(n.bind(n,8913)),Promise.all([n.e(1869),n.e(416)]).then(n.bind(n,8035))]).then((e=>{let[{DocSearchModal:t}]=e;je=t}))),[]),x=(0,r.useCallback)((()=>{if(!h.current){const e=document.createElement("div");h.current=e,document.body.insertBefore(e,document.body.firstChild)}}),[]),_=(0,r.useCallback)((()=>{x(),w().then((()=>v(!0)))}),[w,x]),k=(0,r.useCallback)((()=>{v(!1),g.current?.focus()}),[]),E=(0,r.useCallback)((e=>{"f"===e.key&&(e.metaKey||e.ctrlKey)||(e.preventDefault(),S(e.key),_())}),[_]),j=(0,r.useRef)({navigate(e){let{itemUrl:t}=e;(0,ee.G)(a,t)?window.location.href=t:m.push(t)}}).current,O=(0,r.useRef)((e=>o.transformItems?o.transformItems(e):e.map((e=>({...e,url:l(e.url)}))))).current,C=(0,r.useMemo)((()=>e=>(0,u.jsx)(Ce,{...e,onClose:k})),[k]),P=(0,r.useCallback)((e=>(e.addAlgoliaAgent("docusaurus",i.docusaurusVersion),e)),[i.docusaurusVersion]);return(0,ve.E8)({isOpen:b,onOpen:_,onClose:k,onInput:E,searchButtonRef:g}),(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(ye.A,{children:(0,u.jsx)("link",{rel:"preconnect",href:`https://${o.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})}),(0,u.jsx)(ve.Bc,{onTouchStart:w,onFocus:w,onMouseOver:w,onClick:_,ref:g,translations:Ee.button}),b&&je&&h.current&&(0,be.createPortal)((0,u.jsx)(je,{onClose:k,initialScrollY:window.scrollY,initialQuery:y,navigator:j,transformItems:O,hitComponent:Oe,transformSearchClient:P,...o.searchPagePath&&{resultsFooterComponent:C},...o,searchParameters:f,placeholder:Ee.placeholder,translations:Ee.modal}),h.current)]})}function Ae(){const{siteConfig:e}=(0,le.A)();return(0,u.jsx)(Pe,{...e.themeConfig.algolia})}const Te={navbarSearchContainer:"navbarSearchContainer_Bca1"};function Ie(e){let{children:t,className:n}=e;return(0,u.jsx)("div",{className:(0,a.A)(n,Te.navbarSearchContainer),children:t})}var Ne=n(4070),Re=n(6972);var Le=n(3886);function De(e,t){return t.alternateDocVersions[e.name]??function(e){return e.docs.find((t=>t.id===e.mainDocId))}(e)}const Me={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,le.A)(),p=(0,me.o)(),{search:f,hash:m}=(0,s.zy)(),h=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${a}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],g=t?(0,l.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,u.jsx)(fe,{...o,mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(he,{className:ge}),g]}),items:h})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,u.jsx)(Ie,{className:n,children:(0,u.jsx)(Ae,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,u.jsx)(i,{className:(0,a.A)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,Ne.zK)(r),i=(0,Re.QB)(t,r),s=o?.path===i?.path;return null===i||i.unlisted&&!s?null:(0,u.jsx)(oe,{exact:!0,...a,isActive:()=>s||!!o?.sidebar&&o.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,Ne.zK)(r),i=(0,Re.fW)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,u.jsx)(oe,{exact:!0,...a,isActive:()=>o?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,Re.Vd)(r)[0],i=t??o.label,s=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,u.jsx)(oe,{...a,label:i,to:s})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:c,hash:d}=(0,s.zy)(),p=(0,Ne.zK)(n),f=(0,Ne.jh)(n),{savePreferredVersionName:m}=(0,Le.g1)(n),h=[...a,...f.map((function(e){const t=De(e,p);return{label:e.label,to:`${t.path}${c}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...o],g=(0,Re.Vd)(n)[0],b=t&&h.length>1?(0,l.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,v=t&&h.length>1?void 0:De(g,p).path;return h.length<=1?(0,u.jsx)(oe,{...i,mobile:t,label:b,to:v,isActive:r?()=>!1:void 0}):(0,u.jsx)(fe,{...i,mobile:t,label:b,to:v,items:h,isActive:r?()=>!1:void 0})}};function Fe(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Me[r];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,u.jsx)(a,{...n})}function Be(){const e=(0,P.M)(),t=(0,S.p)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Fe,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function ze(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(l.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function $e(){const e=0===(0,S.p)().navbar.items.length,t=D();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(ze,{onClick:()=>t.hide()}),t.content]})}function Ue(){const e=(0,P.M)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,u.jsx)(M,{header:(0,u.jsx)(Q,{}),primaryMenu:(0,u.jsx)(Be,{}),secondaryMenu:(0,u.jsx)($e,{})}):null}const qe={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function He(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,a.A)("navbar-sidebar__backdrop",e.className)})}function Ve(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,S.p)(),i=(0,P.M)(),{navbarRef:s,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,A.Mq)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=s?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,u.jsxs)("nav",{ref:s,"aria-label":(0,l.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.A)("navbar","navbar--fixed-top",n&&[qe.navbarHideable,!d&&qe.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,u.jsx)(He,{onClick:i.toggle}),(0,u.jsx)(Ue,{})]})}var We=n(440);const Ge={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function Ke(e){return(0,u.jsx)("button",{type:"button",...e,children:(0,u.jsx)(l.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function Ye(e){let{error:t}=e;const n=(0,We.rA)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{className:Ge.errorBoundaryError,children:n})}class Qe extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Ze="right";function Xe(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,u.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function Je(){const{toggle:e,shown:t}=(0,P.M)();return(0,u.jsx)("button",{onClick:e,"aria-label":(0,l.T)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,u.jsx)(Xe,{})})}const et={colorModeToggle:"colorModeToggle_DEke"};function tt(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(Qe,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,u.jsx)(Fe,{...e})},t)))})}function nt(e){let{left:t,right:n}=e;return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:"navbar__items",children:t}),(0,u.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function rt(){const e=(0,P.M)(),t=(0,S.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Ze)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,u.jsx)(nt,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(Je,{}),(0,u.jsx)(K,{}),(0,u.jsx)(tt,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(tt,{items:r}),(0,u.jsx)(W,{className:et.colorModeToggle}),!a&&(0,u.jsx)(Ie,{children:(0,u.jsx)(Ae,{})})]})})}function at(){return(0,u.jsx)(Ve,{children:(0,u.jsx)(rt,{})})}function ot(e){let{item:t}=e;const{to:n,href:r,label:a,prependBaseUrlToHref:o,...i}=t,s=(0,X.Ay)(n),l=(0,X.Ay)(r,{forcePrependBaseUrl:!0});return(0,u.jsxs)(Z.A,{className:"footer__link-item",...r?{href:o?l:r}:{to:s},...i,children:[a,r&&!(0,J.A)(r)&&(0,u.jsx)(te.A,{})]})}function it(e){let{item:t}=e;return t.html?(0,u.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)("li",{className:"footer__item",children:(0,u.jsx)(ot,{item:t})},t.href??t.to)}function st(e){let{column:t}=e;return(0,u.jsxs)("div",{className:"col footer__col",children:[(0,u.jsx)("div",{className:"footer__title",children:t.title}),(0,u.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,u.jsx)(it,{item:e},t)))})]})}function lt(e){let{columns:t}=e;return(0,u.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,u.jsx)(st,{column:e},t)))})}function ct(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function ut(e){let{item:t}=e;return t.html?(0,u.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)(ot,{item:t})}function dt(e){let{links:t}=e;return(0,u.jsx)("div",{className:"footer__links text--center",children:(0,u.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,u.jsxs)(r.Fragment,{children:[(0,u.jsx)(ut,{item:e}),t.length!==n+1&&(0,u.jsx)(ct,{})]},n)))})})}function pt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,u.jsx)(lt,{columns:t}):(0,u.jsx)(dt,{links:t})}var ft=n(1122);const mt={footerLogoLink:"footerLogoLink_BH7S"};function ht(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.hH)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,u.jsx)(ft.A,{className:(0,a.A)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function gt(e){let{logo:t}=e;return t.href?(0,u.jsx)(Z.A,{href:t.href,className:mt.footerLogoLink,target:t.target,children:(0,u.jsx)(ht,{logo:t})}):(0,u.jsx)(ht,{logo:t})}function bt(e){let{copyright:t}=e;return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function vt(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,u.jsx)("footer",{className:(0,a.A)("footer",{"footer--dark":"dark"===t}),children:(0,u.jsxs)("div",{className:"container container-fluid",children:[n,(r||o)&&(0,u.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,u.jsx)("div",{className:"margin-bottom--sm",children:r}),o]})]})})}function yt(){const{footer:e}=(0,S.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,u.jsx)(vt,{style:a,links:n&&n.length>0&&(0,u.jsx)(pt,{links:n}),logo:r&&(0,u.jsx)(gt,{logo:r}),copyright:t&&(0,u.jsx)(bt,{copyright:t})})}const St=r.memo(yt),wt=(0,T.fM)([F.a,w.o,A.Tv,Le.VQ,i.Jx,function(e){let{children:t}=e;return(0,u.jsx)(I.y_,{children:(0,u.jsx)(P.e,{children:(0,u.jsx)(R,{children:t})})})}]);function xt(e){let{children:t}=e;return(0,u.jsx)(wt,{children:t})}var _t=n(1107);function kt(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(_t.A,{as:"h1",className:"hero__title",children:(0,u.jsx)(l.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)(Ke,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(Ye,{error:t})})]})})})}const Et={mainWrapper:"mainWrapper_z2l0"};function jt(e){const{children:t,noFooter:n,wrapperClassName:r,title:s,description:l}=e;return(0,b.J)(),(0,u.jsxs)(xt,{children:[(0,u.jsx)(i.be,{title:s,description:l}),(0,u.jsx)(y,{}),(0,u.jsx)(C,{}),(0,u.jsx)(at,{}),(0,u.jsx)("div",{id:d,className:(0,a.A)(g.G.wrapper.main,Et.mainWrapper,r),children:(0,u.jsx)(o.A,{fallback:e=>(0,u.jsx)(kt,{...e}),children:t})}),!n&&(0,u.jsx)(St,{})]})}},3465:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(8774),a=n(6025),o=n(4586),i=n(6342),s=n(1122),l=n(4848);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.Ay)(t.src),dark:(0,a.Ay)(t.srcDark||t.src)},i=(0,l.jsx)(s.A,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,l.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,o.A)(),{navbar:{title:n,logo:s}}=(0,i.p)(),{imageClassName:u,titleClassName:d,...p}=e,f=(0,a.Ay)(s?.href||"/"),m=n?"":t,h=s?.alt??m;return(0,l.jsxs)(r.A,{to:f,...p,...s?.target&&{target:s.target},children:[s&&(0,l.jsx)(c,{logo:s,alt:h,imageClassName:u}),null!=n&&(0,l.jsx)("b",{className:d,children:n})]})}},1463:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);var r=n(5260),a=n(4848);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.A,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},1122:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var r=n(6540),a=n(4164),o=n(2303),i=n(5293);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var l=n(4848);function c(e){let{className:t,children:n}=e;const c=(0,o.A)(),{colorMode:u}=(0,i.G)();return(0,l.jsx)(l.Fragment,{children:(c?"dark"===u?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.A)(t,s.themedComponent,s[`themedComponent--${e}`])});return(0,l.jsx)(r.Fragment,{children:o},e)}))})}function u(e){const{sources:t,className:n,alt:r,...a}=e;return(0,l.jsx)(c,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,l.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},1422:(e,t,n)=>{"use strict";n.d(t,{N:()=>b,u:()=>c});var r=n(6540),a=n(8193),o=n(205),i=n(3109),s=n(4848);const l="ease-in-out";function c(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const u={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?u:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??l}`,height:`${t}px`}}function s(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return p(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function m(e){if(!a.A.canUseDOM)return e?u:d}function h(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:c}=e;const u=(0,r.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:o}),(0,s.jsx)(t,{ref:u,style:c?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(u.current,n),i?.(n))},className:l,children:a})}function g(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[l,c]=(0,r.useState)(t);return(0,o.A)((()=>{t||i(!0)}),[t]),(0,o.A)((()=>{a&&c(t)}),[a,t]),a?(0,s.jsx)(h,{...n,collapsed:l}):null}function b(e){let{lazy:t,...n}=e;const r=t?g:h;return(0,s.jsx)(r,{...n})}},5041:(e,t,n)=>{"use strict";n.d(t,{M:()=>h,o:()=>m});var r=n(6540),a=n(2303),o=n(679),i=n(9532),s=n(6342),l=n(4848);const c=(0,o.Wf)("docusaurus.announcement.dismiss"),u=(0,o.Wf)("docusaurus.announcement.id"),d=()=>"true"===c.get(),p=e=>c.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.p)(),t=(0,a.A)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,l.jsx)(f.Provider,{value:n,children:t})}function h(){const e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5293:(e,t,n)=>{"use strict";n.d(t,{G:()=>b,a:()=>g});var r=n(6540),a=n(8193),o=n(9532),i=n(679),s=n(6342),l=n(4848);const c=r.createContext(void 0),u="theme",d=(0,i.Wf)(u),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>a.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),h=e=>{d.set(f(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.p)(),[a,o]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&h(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const l=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||l.current?l.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[a,i])}();return(0,l.jsx)(c.Provider,{value:n,children:t})}function b(){const e=(0,r.useContext)(c);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},2069:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(6540),a=n(5600),o=n(4581),i=n(7485),s=n(6342),l=n(9532),c=n(4848);const u=r.createContext(void 0);function d(){const e=function(){const e=(0,a.YL)(),{items:t}=(0,s.p)().navbar;return 0===t.length&&!e.component}(),t=(0,o.l)(),n=!e&&"mobile"===t,[l,c]=(0,r.useState)(!1);(0,i.$Z)((()=>{if(l)return c(!1),!1}));const u=(0,r.useCallback)((()=>{c((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&c(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:l})),[e,n,u,l])}function p(e){let{children:t}=e;const n=d();return(0,c.jsx)(u.Provider,{value:n,children:t})}function f(){const e=r.useContext(u);if(void 0===e)throw new l.dV("NavbarMobileSidebarProvider");return e}},5600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>c,YL:()=>l,y_:()=>s});var r=n(6540),a=n(9532),o=n(4848);const i=r.createContext(null);function s(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.dV("NavbarSecondaryMenuContentProvider");const[,s]=o,l=(0,a.Be)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},4090:(e,t,n)=>{"use strict";n.d(t,{w:()=>a,J:()=>o});var r=n(6540);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},4255:(e,t,n)=>{"use strict";n.d(t,{b:()=>s,w:()=>l});var r=n(6540),a=n(4586),o=n(7485);const i="q";function s(){return(0,o.l)(i)}function l(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,a.A)(),{algolia:{searchPagePath:n}}=t;return(0,r.useCallback)((t=>`${e}${n}?${i}=${encodeURIComponent(t)}`),[e,n])}},4581:(e,t,n)=>{"use strict";n.d(t,{l:()=>s});var r=n(6540),a=n(8193);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,s]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){s(function(e){if(!a.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},7559:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",blogAuthorsListPage:"blog-authors-list-page",blogAuthorsPostsPage:"blog-authors-posts-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",draftBanner:"theme-draft-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},3109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},481:(e,t,n)=>{"use strict";n.d(t,{s:()=>a});var r=n(4586);function a(e){const{siteConfig:t}=(0,r.A)(),{title:n,titleDelimiter:a}=t;return e?.trim().length?`${e.trim()} ${a} ${n}`:n}},7485:(e,t,n)=>{"use strict";n.d(t,{$Z:()=>i,aZ:()=>l,l:()=>c});var r=n(6540),a=n(6347),o=n(9532);function i(e){!function(e){const t=(0,a.W6)(),n=(0,o._q)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){const t=(0,a.W6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}function l(e){return s((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}function c(e){const t=l(e)??"",n=function(e){const t=(0,a.W6)();return(0,r.useCallback)(((n,r)=>{const a=new URLSearchParams(t.location.search);n?a.set(e,n):a.delete(e),(r?.push?t.push:t.replace)({search:a.toString()})}),[e,t])}(e);return[t,n]}},1682:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{XI:()=>r,sb:()=>a})},9024:(e,t,n)=>{"use strict";n.d(t,{e3:()=>f,be:()=>d,Jx:()=>m});var r=n(6540),a=n(4164),o=n(5260),i=n(3102);function s(){const e=r.useContext(i.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var l=n(6025),c=n(481),u=n(4848);function d(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const s=(0,c.s)(t),{withBaseUrl:d}=(0,l.hH)(),p=a?d(a,{absolute:!0}):void 0;return(0,u.jsxs)(o.A,{children:[t&&(0,u.jsx)("title",{children:s}),t&&(0,u.jsx)("meta",{property:"og:title",content:s}),n&&(0,u.jsx)("meta",{name:"description",content:n}),n&&(0,u.jsx)("meta",{property:"og:description",content:n}),r&&(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,u.jsx)("meta",{property:"og:image",content:p}),p&&(0,u.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),s=(0,a.A)(i,t);return(0,u.jsxs)(p.Provider,{value:s,children:[(0,u.jsx)(o.A,{children:(0,u.jsx)("html",{className:s})}),n]})}function m(e){let{children:t}=e;const n=s(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return(0,u.jsx)(f,{className:(0,a.A)(r,o),children:t})}},9532:(e,t,n)=>{"use strict";n.d(t,{Be:()=>c,ZC:()=>s,_q:()=>i,dV:()=>l,fM:()=>u});var r=n(6540),a=n(205),o=n(4848);function i(e){const t=(0,r.useRef)(e);return(0,a.A)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function s(e){const t=(0,r.useRef)();return(0,a.A)((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},1252:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{G:()=>r})},9169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>s,ys:()=>i});var r=n(6540),a=n(8328),o=n(4586);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,o.A)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.A,baseUrl:e})),[e])}},3104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>f,Tv:()=>u,a_:()=>m,gk:()=>h});var r=n(6540),a=n(8193),o=n(2303),i=n(205),s=n(9532),l=n(4848);const c=r.createContext(void 0);function u(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,l.jsx)(c.Provider,{value:n,children:t})}function d(){const e=(0,r.useContext)(c);if(null==e)throw new s.dV("ScrollControllerProvider");return e}const p=()=>a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=d(),a=(0,r.useRef)(p()),o=(0,s._q)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=p();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function m(){const e=d(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,i.A)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function h(){const e=(0,r.useRef)(null),t=(0,o.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},2967:(e,t,n)=>{"use strict";n.d(t,{C:()=>r});const r="default"},679:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>u,Dv:()=>d});var r=n(6540);const a=JSON.parse('{"N":"localStorage","M":""}'),o=a.N;function i(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function s(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const c={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){const n=`${e}${a.M}`;if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(n);const r=s(t?.persistence);return null===r?c:{get:()=>{try{return r.getItem(n)}catch(e){return console.error(`Docusaurus storage error, can't get key=${n}`,e),null}},set:e=>{try{const t=r.getItem(n);r.setItem(n,e),i({key:n,oldValue:t,newValue:e,storage:r})}catch(t){console.error(`Docusaurus storage error, can't set ${n}=${e}`,t)}},del:()=>{try{const e=r.getItem(n);r.removeItem(n),i({key:n,oldValue:e,newValue:null,storage:r})}catch(e){console.error(`Docusaurus storage error, can't delete key=${n}`,e)}},listen:e=>{try{const t=t=>{t.storageArea===r&&t.key===n&&e(t)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}catch(t){return console.error(`Docusaurus storage error, can't listen for changes of key=${n}`,t),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?c:u(e,t))).current(),a=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,r.useSyncExternalStore)(a,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},2131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(4586),a=n(6347),o=n(440);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:s}}=(0,r.A)(),{pathname:l}=(0,a.zy)(),c=(0,o.Ks)(l,{trailingSlash:n,baseUrl:e}),u=s===i?e:e.replace(`/${s}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},5062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(6540),a=n(6347),o=n(9532);function i(e){const t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._q)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(4586);function a(){return(0,r.A)().siteConfig.themeConfig}},8126:(e,t,n)=>{"use strict";n.d(t,{c:()=>a});var r=n(4586);function a(){const{siteConfig:{themeConfig:e}}=(0,r.A)();return e}},1062:(e,t,n)=>{"use strict";n.d(t,{C:()=>s});var r=n(6540),a=n(1252),o=n(6025),i=n(8126);function s(){const{withBaseUrl:e}=(0,o.hH)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,i.c)();return(0,r.useCallback)((r=>{const o=new URL(r);if((0,a.G)(t,o.href))return r;const i=`${o.pathname+o.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(i,n))}),[e,t,n])}},2983:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addTrailingSlash=a,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),s="/"===i||i===r?i:(l=i,c=n,c?a(l):o(l));var l,c;return e.replace(i,s)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=o;const r=n(2566);function a(e){return e.endsWith("/")?e:`${e}/`}function o(e){return(0,r.removeSuffix)(e,"/")}},253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=function e(t){if(t.cause)return[t,...e(t.cause)];return[t]}},440:(e,t,n)=>{"use strict";t.rA=t.Ks=void 0;const r=n(1635);var a=n(2983);Object.defineProperty(t,"Ks",{enumerable:!0,get:function(){return r.__importDefault(a).default}});var o=n(2566);var i=n(253);Object.defineProperty(t,"rA",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},2566:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){if(""===t)return e;return e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},1513:(e,t,n)=>{"use strict";n.d(t,{zR:()=>S,TM:()=>j,yJ:()=>f,sC:()=>C,AO:()=>p});var r=n(8168);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var s=n(1561);function l(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.A)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,h(),S.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(S.entries[S.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=S.index+e;return t>=0&&t{"use strict";var r=n(4363),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||a}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var s=l(t),h=l(n),g=0;g{"use strict";e.exports=function(e,t,n,r,a,o,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,a,o,i,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},4634:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},119:(e,t,n)=>{"use strict";n.r(t)},1043:(e,t,n)=>{"use strict";n.r(t)},5947:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
    '};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,i(e,u,d)),1===e?(l(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){l(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),s=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},5302:(e,t,n)=>{var r=n(4634);e.exports=f,e.exports.parse=o,e.exports.compile=function(e,t){return s(o(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,s="",u=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],p=n[1],f=n.index;if(s+=e.slice(i,f),i=f+d.length,p)s+=p[1];else{var m=e[i],h=n[2],g=n[3],b=n[4],v=n[5],y=n[6],S=n[7];s&&(r.push(s),s="");var w=null!=h&&null!=m&&m!==h,x="+"===y||"*"===y,_="?"===y||"*"===y,k=n[2]||u,E=b||v;r.push({name:g||o++,prefix:h||"",delimiter:k,optional:_,repeat:x,partial:w,asterisk:!!S,pattern:E?c(E):S?".*":"[^"+l(k)+"]+?"})}}return i{!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i{!function(e){function t(e,t){return e.replace(/<<(\d+)>>/g,(function(e,n){return"(?:"+t[+n]+")"}))}function n(e,n,r){return RegExp(t(e,n),r||"")}function r(e,t){for(var n=0;n>/g,(function(){return"(?:"+e+")"}));return e.replace(/<>/g,"[^\\s\\S]")}var a="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",o="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",s="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var c=l(o),u=RegExp(l(a+" "+o+" "+i+" "+s)),d=l(o+" "+i+" "+s),p=l(a+" "+o+" "+s),f=r(/<(?:[^<>;=+\-*/%&|^]|<>)*>/.source,2),m=r(/\((?:[^()]|<>)*\)/.source,2),h=/@?\b[A-Za-z_]\w*\b/.source,g=t(/<<0>>(?:\s*<<1>>)?/.source,[h,f]),b=t(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source,[d,g]),v=/\[\s*(?:,\s*)*\]/.source,y=t(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source,[b,v]),S=t(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,[f,m,v]),w=t(/\(<<0>>+(?:,<<0>>+)+\)/.source,[S]),x=t(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source,[w,b,v]),_={keyword:u,punctuation:/[<>()?,.:[\]]/},k=/'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source,E=/"(?:\\.|[^\\"\r\n])*"/.source,j=/@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source;e.languages.csharp=e.languages.extend("clike",{string:[{pattern:n(/(^|[^$\\])<<0>>/.source,[j]),lookbehind:!0,greedy:!0},{pattern:n(/(^|[^@$\\])<<0>>/.source,[E]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:n(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source,[b]),lookbehind:!0,inside:_},{pattern:n(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source,[h,x]),lookbehind:!0,inside:_},{pattern:n(/(\busing\s+)<<0>>(?=\s*=)/.source,[h]),lookbehind:!0},{pattern:n(/(\b<<0>>\s+)<<1>>/.source,[c,g]),lookbehind:!0,inside:_},{pattern:n(/(\bcatch\s*\(\s*)<<0>>/.source,[b]),lookbehind:!0,inside:_},{pattern:n(/(\bwhere\s+)<<0>>/.source,[h]),lookbehind:!0},{pattern:n(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source,[y]),lookbehind:!0,inside:_},{pattern:n(/\b<<0>>(?=\s+(?!<<1>>|with\s*\{)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source,[x,p,h]),inside:_}],keyword:u,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),e.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),e.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:n(/([(,]\s*)<<0>>(?=\s*:)/.source,[h]),lookbehind:!0,alias:"punctuation"}}),e.languages.insertBefore("csharp","class-name",{namespace:{pattern:n(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source,[h]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:n(/(\b(?:default|sizeof|typeof)\s*\(\s*(?!\s))(?:[^()\s]|\s(?!\s)|<<0>>)*(?=\s*\))/.source,[m]),lookbehind:!0,alias:"class-name",inside:_},"return-type":{pattern:n(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source,[x,b]),inside:_,alias:"class-name"},"constructor-invocation":{pattern:n(/(\bnew\s+)<<0>>(?=\s*[[({])/.source,[x]),lookbehind:!0,inside:_,alias:"class-name"},"generic-method":{pattern:n(/<<0>>\s*<<1>>(?=\s*\()/.source,[h,f]),inside:{function:n(/^<<0>>/.source,[h]),generic:{pattern:RegExp(f),alias:"class-name",inside:_}}},"type-list":{pattern:n(/\b((?:<<0>>\s+<<1>>|record\s+<<1>>\s*<<5>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>|<<1>>\s*<<5>>|<<6>>)(?:\s*,\s*(?:<<3>>|<<4>>|<<6>>))*(?=\s*(?:where|[{;]|=>|$))/.source,[c,g,h,x,u.source,m,/\bnew\s*\(\s*\)/.source]),lookbehind:!0,inside:{"record-arguments":{pattern:n(/(^(?!new\s*\()<<0>>\s*)<<1>>/.source,[g,m]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:u,"class-name":{pattern:RegExp(x),greedy:!0,inside:_},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var O=E+"|"+k,C=t(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source,[O]),P=r(t(/[^"'/()]|<<0>>|\(<>*\)/.source,[C]),2),A=/\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source,T=t(/<<0>>(?:\s*\(<<1>>*\))?/.source,[b,P]);e.languages.insertBefore("csharp","class-name",{attribute:{pattern:n(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source,[A,T]),lookbehind:!0,greedy:!0,inside:{target:{pattern:n(/^<<0>>(?=\s*:)/.source,[A]),alias:"keyword"},"attribute-arguments":{pattern:n(/\(<<0>>*\)/.source,[P]),inside:e.languages.csharp},"class-name":{pattern:RegExp(b),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var I=/:[^}\r\n]+/.source,N=r(t(/[^"'/()]|<<0>>|\(<>*\)/.source,[C]),2),R=t(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[N,I]),L=r(t(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<>*\)/.source,[O]),2),D=t(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[L,I]);function M(t,r){return{interpolation:{pattern:n(/((?:^|[^{])(?:\{\{)*)<<0>>/.source,[t]),lookbehind:!0,inside:{"format-string":{pattern:n(/(^\{(?:(?![}:])<<0>>)*)<<1>>(?=\}$)/.source,[r,I]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:e.languages.csharp}}},string:/[\s\S]+/}}e.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:n(/(^|[^\\])(?:\$@|@\$)"(?:""|\\[\s\S]|\{\{|<<0>>|[^\\{"])*"/.source,[R]),lookbehind:!0,greedy:!0,inside:M(R,N)},{pattern:n(/(^|[^@\\])\$"(?:\\.|\{\{|<<0>>|[^\\"{])*"/.source,[D]),lookbehind:!0,greedy:!0,inside:M(D,L)}],char:{pattern:RegExp(k),greedy:!0}}),e.languages.dotnet=e.languages.cs=e.languages.csharp}(Prism)},568:()=>{!function(e){var t=/\\[\r\n](?:\s|\\[\r\n]|#.*(?!.))*(?![\s#]|\\[\r\n])/.source,n=/(?:[ \t]+(?![ \t])(?:)?|)/.source.replace(//g,(function(){return t})),r=/"(?:[^"\\\r\n]|\\(?:\r\n|[\s\S]))*"|'(?:[^'\\\r\n]|\\(?:\r\n|[\s\S]))*'/.source,a=/--[\w-]+=(?:|(?!["'])(?:[^\s\\]|\\.)+)/.source.replace(//g,(function(){return r})),o={pattern:RegExp(r),greedy:!0},i={pattern:/(^[ \t]*)#.*/m,lookbehind:!0,greedy:!0};function s(e,t){return e=e.replace(//g,(function(){return a})).replace(//g,(function(){return n})),RegExp(e,t)}e.languages.docker={instruction:{pattern:/(^[ \t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)(?:\\.|[^\r\n\\])*(?:\\$(?:\s|#.*$)*(?![\s#])(?:\\.|[^\r\n\\])*)*/im,lookbehind:!0,greedy:!0,inside:{options:{pattern:s(/(^(?:ONBUILD)?\w+)(?:)*/.source,"i"),lookbehind:!0,greedy:!0,inside:{property:{pattern:/(^|\s)--[\w-]+/,lookbehind:!0},string:[o,{pattern:/(=)(?!["'])(?:[^\s\\]|\\.)+/,lookbehind:!0}],operator:/\\$/m,punctuation:/=/}},keyword:[{pattern:s(/(^(?:ONBUILD)?HEALTHCHECK(?:)*)(?:CMD|NONE)\b/.source,"i"),lookbehind:!0,greedy:!0},{pattern:s(/(^(?:ONBUILD)?FROM(?:)*(?!--)[^ \t\\]+)AS/.source,"i"),lookbehind:!0,greedy:!0},{pattern:s(/(^ONBUILD)\w+/.source,"i"),lookbehind:!0,greedy:!0},{pattern:/^\w+/,greedy:!0}],comment:i,string:o,variable:/\$(?:\w+|\{[^{}"'\\]*\})/,operator:/\\$/m}},comment:i},e.languages.dockerfile=e.languages.docker}(Prism)},2514:()=>{Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json},9700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,s=i.length;-1!==n.code.indexOf(a=t(r,s));)++s;return i[s]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(s){for(var l=0;l=o.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++a;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),v=[];h&&v.push.apply(v,i([h])),v.push(g),b&&v.push.apply(v,i([b])),"string"==typeof c?s.splice.apply(s,[l,1].concat(v)):c.content=v}}else c.content&&i(c.content)}return s}(n.tokens)}}}})}(Prism)},905:()=>{!function(e){var t=e.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:null},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:false|true)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(^|\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/};t.string[0].inside={function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:t},boolean:t.boolean,variable:t.variable}}(Prism)},3456:(e,t,n)=>{var r={"./prism-bash":7022,"./prism-csharp":5651,"./prism-docker":568,"./prism-json":2514,"./prism-powershell":905};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=3456},2694:(e,t,n)=>{"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2551:(e,t,n)=>{"use strict";var r=n(6540),a=n(9982);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n